【Selected】 数值分析实验报告.docx

【Selected】 数值分析实验报告.docx
【Selected】 数值分析实验报告.docx

数值分析实验报告

(第二章)

实验题目:

分别用二分法、牛顿迭代法、割线法、史蒂芬森迭代法求方程

21150

的根1,观察不同初始值下的收敛性,并给出结论。

问题分析:

题目有以下几点要求:

1.不同的迭代法计算根,并比较收敛性。

2.选定不同的初始值,比较收敛性。

实验原理:

各个迭代法简述

二分法:取有根区间的重点0,确定新的有根区间11的区间长度仅为区间长度的一版。对压缩了的有根区间11重复以上过程,又得到新的有根区间22,其区间长度为11的一半,如此反复,……,可得一系列有根区间,区间收敛到一个点即为根。

牛顿迭代法:不动点迭代法的一种特例,具有局部二次收敛的特性。迭代格式为

1′012

割线法:是牛顿法的改进,具有超线性收敛的特性,收敛阶为1.618.迭代格式为

1

112

1

史蒂芬森迭代法:采用不动点迭代进行预估校正。至少是平方收敛的。迭代格式为

1

2 2

这里可采用牛顿迭代法的迭代函数。实验内容:

1.写出该问题的函数

代码如下:

functionpR=f(R)

sRmsA;

R=(A^2+1)R(A-1)^5;

RR=diff(R,A);

pR(1)=subs(R,A,R);

pR(2)=subs(RR,A,R);

end

2.分别写出各个迭代法的迭代函数代码如下:

二分法:

functionR=dichotomie(a,b,e)

i=2;

m(1)=a;

whileabs(a-b)>e

t=(a+b)/2;

s1=f(a);

s2=f(b); s3=f(t);

ifs1(1)Rs3(1)<=0 b=t;

else

a=t;

end

m(i)=t;

i=i+1;

end

R=[t,i+1,m];

end

牛顿迭代法:

functionR=NewtonIterative(R,e) i=2;

en=2Re;

m(1)=R;

whileabs(en)>=e

s=f(R);

t=R-s(1)/s(2);

en=t-R;

R=t;

m(i)=t;

i=i+1;

end

R=[R,i+1,m];

end

牛顿割线法:

functionR=Secant(R1,R2,e)

i=3;

m(1)=R1,m(2)=R2;

whileabs(R2-R1)>=e

s1=f(R1);

s2=f(R2);

t=R2-(R2-R1)Rs2(1)/(s2(1)-s1(1)); R1=R2;

R2=t;

m(i)=t;

i=i+1;

end

R=[R2,i+1,m];

end

史蒂芬森迭代法:

Functionp=StephensonIterative(R, e)

i=2;

m(2)=R;

en=2Re;

whileabs(en)>=e

R=fai(R);

z=fai(R);

t=R-(R-R)^2/(z-2RR+R);

en=t-R;

R=t;

m(i)=t;

i=i+1;

end

p=[R,i+1,m];

end

3.因为经常被使用,故可以写一个函数。

代码如下:

functionR=fai(R)

s=f(R);

R=R-s(1)/s(2);

end

4.可以绘制不同的图形来比较不同迭代法的收敛性和不同初值下的收敛性。代码如下:

clearall;

%相同初始值,不同迭代法下的收敛

R1=dichotomie(0,3,1e-10);

R2=NewtonIterative(0,1e-10);

R3=Secant(0,2,1e-10);

R4=StephensonIterative(0,1e-10);

[R1(2),R2(2),R3(2),R4(2)]

figure,

subplot(2,2,1),plot(R1(3:R1(2))),title('二分法');

subplot(2,2,2),plot(R2(3:R2(2))),title('牛顿迭代法');

subplot(2,2,3),plot(R3(3:R3(2))),title('牛顿割线法');

subplot(2,2,4),plot(R4(3:R4(2))),title('史蒂芬森迭代法');

figure,

subplot(2,2,1),plot((R1(4:R1(2)-1)-R1(1))./(R1(3:R1(2)-2)-R1(1))),title('二分法');

subplot(2,2,2),plot((R2(4:R2(2)-1)-R2(1))./(R2(3:R2(2)-2)-R2(1))),title('牛顿

迭代法');

subplot(2,2,3),plot((R3(4:R3(2)-1)-R3(1))./(R3(3:R3(2)-2)-R3(1))),title('牛顿割线法');

subplot(2,2,4),plot((R4(4:R4(2)-1)-R4(1))./(R4(3:R4(2)-2)-R4(1))),title('史蒂芬森迭代法');

%不同初始值,相同迭代法下的收敛性

R5=dichotomie(-1,1,1e-10);

R6=dichotomie(-2,3,1e-10);

R7=dichotomie(0,4,1e-10);

R8=dichotomie(-4,4,1e-10);

R9=NewtonIterative(-2,1e-10);

R10=NewtonIterative(-4,1e-10);

R11=NewtonIterative(4,1e-10);

R12=NewtonIterative(6,1e-10);

figure,

subplot(1,2,1),

plot(1:R1(2)-2,R1(3:R1(2)),1:R5(2)-2,R5(3:R5(2)),1:R6(2)-2,R6(3:R6(2)),1:R7 (2)-2,R7(3:R7(2)),1:R8(2)-2,R8(3:R8(2))),title('二分法');

subplot(1,2,2),

plot(1:R2(2)-2,R2(3:R2(2)),1:R9(2)-2,R9(3:R9(2)),1:R10(2)-2,R10(3:R10(2)), 1:R11(2)-2,R11(3:R11(2)),1:R12(2)-2,R12(3:R12(2))),title('牛顿迭代法');

R13=Secant(-1,1,1e-10);

R14=Secant(-4,5,1e-10);

R15=Secant(0,7,1e-10);

R16=Secant(-8,2,1e-10);

R17=StephensonIterative(-1,1e-10); R18=StephensonIterative(-4,1e-10); R19=StephensonIterative(4,1e-10); R20=StephensonIterative(6,1e-10); figure,

法');

实验结果:

1.

图 1.1 不同迭代法下的得到的迭代值

迭代值的情况如下:

二分法 牛顿迭代法

牛顿割线法

史蒂芬森迭代法

1.5000000000 0.20RR000000

2.0000000000 1.3555555556 0.7500000000 0.3704918032 0.3333333333 0.9816165283 1.1250000000 0.5076442076 0.3807196801 0.9999460003 0.9375000000

0.6146189447

0.4982833419

0.9999999995

010

20

30

40

0.5

1

1.5

二分法

50

100

00.5

1

牛顿迭代法

50

100

150

00.51

1.5

2牛顿割线法02468

0.5

1

1.5

史蒂芬森迭代法

1.0312500000 0.6973869098

0.5704996333

038次,

2.

次数高于3.

图 1.4 牛顿割线法,史蒂芬森迭代法下不同初值的收敛情况

1. 二分法的五个初始区间分别为 0 3 1 1 2 3 0 4 4 4 ;

2. 牛顿迭代法的五个初始值分别为0 2 4 4 6;

3. 牛顿割线法的五个初始区间分别为 0 2 1 1 4 5 0 7 8 2 ;

4. 史蒂芬森迭代法的五个初始值分别为0 1 4 4 6;

010203040

9

二分法

050100牛顿迭代法

-2-1

10

0.2

0.4

-4-3

-2

-1012二分法

-4-3-2-1

1

2

34

5

6牛顿迭代法

020*********

6

8

由图可知,它们最终均达到收敛。

收敛性分析及结论:

1.二分法收敛较慢且不能求解崇根,但算法简单;此处牛顿法具有了平方收敛;

从迭代次数上看,牛顿割线法较牛顿法的多,所以收敛性较差,是超线性收敛;史蒂芬森迭代法收敛效果最好。

2.因为牛顿迭代法是局部的二次收敛,所以要注重初值的选取,本次实验中选

择的初值均得到了收敛,效果比较好。牛顿割线法也应注意初值的选取。

(第三章)

实验题目:

1.区间11作等距划分:

12

01

以为结点对函数1

52

进行插值逼近。

(1)分别取15102025用牛顿插值对进行逼近,并在同一坐标系下做出函数的图形,进行比较。写出插值函数对的逼近程度与节点个数的关系,

并分析原因;

(2)试用三次样条插值对进行逼近,在同一坐标下画出图形,观察样条插值函数对的逼近程度与节点个数的关系;

(3)整体插值有何局限性?如何避免?

2.已知一组数据如下,求其拟合曲线.

表 2.1数据表

0 1 2 3 4 5 6 7 8 9 10 2 3 4 7 8 10 11 14 16 18 19 106.42 108.2 109.5 110 109.93 110.49 110.59 110.6 110.76 111 111.2 (1)求以上数据形如0122的拟合曲线及其平方误差;

(2)求以上数据形如的拟合曲线及其平方误差;

(3)通过观察(1)(2)的结果,写出你对数据拟合的认识.

问题分析:

题目除上述要求之外还有以下几点:

1.明确整体插值和分段插值的不同。牛顿插值多项式属于整体插值,三次样条

插值属于低次分段插值。

2.将结果在同一坐标下绘制出。但是为了方便分析节点个数对于插值效果的影

响,也可以单独绘制。

3.第二题中为了确定各个参数的大小,可以进行适当变换,转化为线性,运用

最小二乘法,得到拟合。

实验原理:

牛顿插值多项式:对于给定的插值节点01构造次数不超过的插值多项式

010201011

使其满足插值条件

01

这样得到的插值多项式称为插值多项式。系数为差商,可以通过构造差商表得到。

三次样条插值:三次样条插值函数S R在每个小区间1上为三次多项式;在全进上存在二阶连续导数;其次符合插值条件。Matlab中存在内置的三次样条插值函数,命令为

实验内容:

第一题:

1.牛顿插值函数的构造

代码如下:

functionf=Newton(R0,R0)

%牛顿多项式插值函数

sRmsR;

SZ=size(R0,2);

a(1)=R0(1);

R(:,1)=R0';

forj=2:SZ

nR1=1;

fori=1:SZ-j+1;

nR2=nR1+j-1;

R(i,j)=(R(i,j-1)-R(i+1,j-1))/(R0(nR1)-R0(nR2)); nR1=nR1+1;

end

end

f=R(1,1);

forj=2:SZ

ff=R(1,j);

fori=1:j-1

ff=ffR(R-R0(i));

end

f=f+ff;

end

end

相关主题
相关文档
最新文档