课题一 迭代格式的比较.docx
《课题一 迭代格式的比较.docx》由会员分享,可在线阅读,更多相关《课题一 迭代格式的比较.docx(13页珍藏版)》请在冰豆网上搜索。
课题一迭代格式的比较
课题一迭代格式的比较
要求:
1、编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;
、建立迭代程序的M文件:
function[k,piancha,xk]=diedail(x0,k)
x
(1)=x0
fori=1:
k
x(i+1)=funl(x(i))%用所用的格式迭代
piancha=abs(x(i+1)-x(i));%偏差
i=i+1;
xk=x(i);%第k次迭代的结果
[(i-1)pianchaxk]
end
p=[(i-1)pianchaxk];%输出迭代次数、偏差和第k次迭代的结果
、对于不同的迭代式子建立不同的funl.m文件
(1)
建立迭代式子
(1)的M文件:
functiony1=funl(x)
y1=(3*x+1)/x^2;
在matlab命令窗口中运行以下命令
>>[k,piancha,xk]=diedail(0.5,5)%初值是0.5,迭代5次
x=
0.5000
x=
0.500010.0000
ans=
1.00009.500010.0000
x=
0.500010.00000.3100
ans=
2.00009.69000.3100
x=
0.500010.00000.310020.0832
ans=
3.000019.773220.0832
x=
0.500010.00000.310020.08320.1519
ans=
4.000019.93140.1519
x=
0.500010.00000.310020.08320.151963.1191
ans=
5.000062.967363.1191
k=
5
piancha=
62.9673
xk=
63.1191
由以上结果可知迭代式
(1)是发散的。
(2)
建立迭代式子
(2)的M文件:
functiony1=funl(x)
y1=(x^3-1)/3;
在matlab命令窗口中运行以下命令
>>[k,piancha,xk]=diedail(0.5,7)
x=
0.5000
x=
0.5000-0.2917
ans=
1.00000.7917-0.2917
x=
0.5000-0.2917-0.3416
ans=
2.00000.0499-0.3416
x=
0.5000-0.2917-0.3416-0.3466
ans=
3.00000.0050-0.3466
x=
0.5000-0.2917-0.3416-0.3466-0.3472
ans=
4.00000.0006-0.3472
x=
0.5000-0.2917-0.3416-0.3466-0.3472-0.3473
ans=
5.00000.0001-0.3473
x=
0.5000-0.2917-0.3416-0.3466-0.3472-0.3473-0.3473
ans=
6.00000.0000-0.3473
x=
0.5000-0.2917-0.3416-0.3466-0.3472-0.3473-0.3473-0.3473
ans=
7.00000.0000-0.3473
k=
7
piancha=
1.0399e-006
xk=
-0.3473由以上结果可知迭代式
(2)是收敛的。
(3)
建立迭代式子(3)的M文件:
functiony1=funl(x)
y1=(3*x+1)^(1/3);
在matlab命令窗口中运行以下命令:
>>[k,piancha,xk]=diedail(0.5,10)
x=
0.5000
x=
0.50001.3572
ans=
1.00000.85721.3572
x=
0.50001.35721.7181
ans=
2.00000.36091.7181
x=
0.50001.35721.71811.8326
ans=
3.00000.11451.8326
x=
0.50001.35721.71811.83261.8660
ans=
4.00000.03351.8660
x=
0.50001.35721.71811.83261.86601.8756
ans=
5.00000.00961.8756
x=
0.50001.35721.71811.83261.86601.87561.8783
ans=
6.00000.00271.8783
x=
0.50001.35721.71811.83261.86601.87561.87831.8791
ans=
7.00000.00081.8791
x=
0.50001.35721.71811.83261.86601.87561.87831.87911.8793
ans=
8.00000.00021.8793
x=
0.50001.35721.71811.83261.86601.87561.87831.87911.87931.8794
ans=
9.00000.00011.8794
x=
0.50001.35721.71811.83261.86601.87561.87831.87911.87931.87941.8794
ans=
10.00000.00001.8794
k=
10
piancha=
1.7458e-005
xk=
1.8794
由以上结果可知迭代式(3)是收敛的。
(4)
建立迭代式子(4)的M文件:
functiony1=funl(x)
y1=1/(x^2-3);
在matlab命令窗口中运行以下命令:
>>[k,piancha,xk]=diedail(0.5,5)
x=
0.5000
x=
0.5000-0.3636
ans=
1.00000.8636-0.3636
x=
0.5000-0.3636-0.3487
ans=
2.00000.0149-0.3487
x=
0.5000-0.3636-0.3487-0.3474
ans=
3.00000.0013-0.3474
x=
0.5000-0.3636-0.3487-0.3474-0.3473
ans=
4.00000.0001-0.3473
x=
0.5000-0.3636-0.3487-0.3474-0.3473-0.3473
ans=
5.00000.0000-0.3473
k=
5
piancha=
9.0701e-006
xk=
-0.3473
由以上结果可知迭代式(4)是收敛的。
(5)
建立迭代式子(5)的M文件:
functiony1=funl(x)
y1=(3+1/x)^(1/2);
在matlab命令窗口中运行以下命令:
>>[k,piancha,xk]=diedail(0.5,8)
x=
0.5000
x=
0.50002.2361
ans=
1.00001.73612.2361
x=
0.50002.23611.8567
ans=
2.00000.37941.8567
x=
0.50002.23611.85671.8811
ans=
3.00000.02441.8811
x=
0.50002.23611.85671.88111.8793
ans=
4.00000.00191.8793
x=
0.50002.23611.85671.88111.87931.8794
ans=
5.00000.00011.8794
x=
0.50002.23611.85671.88111.87931.87941.8794
ans=
6.00000.00001.8794
x=
0.50002.23611.85671.88111.87931.87941.87941.8794
ans=
7.00000.00001.8794
x=
0.50002.23611.85671.88111.87931.87941.87941.87941.8794
ans=
8.00000.00001.8794
k=
8
piancha=
5.9875e-008
xk=
1.8794
由以上结果可知迭代式(5)是收敛的。
(6)
建立迭代式子(6)的M文件:
functiony1=funl(x)
y1=x-(1/3)*((x^3-3*x-1)/(x^2-1));
在matlab命令窗口中运行以下命令:
>>[k,piancha,xk]=diedail(0.5,5)
x=
0.5000
x=
0.5000-0.5556
ans=
1.00001.0556-0.5556
x=
0.5000-0.5556-0.3168
ans=
2.00000.2388-0.3168
x=
0.5000-0.5556-0.3168-0.3470
ans=
3.00000.0302-0.3470
x=
0.5000-0.5556-0.3168-0.3470-0.3473
ans=
4.00000.0003-0.3473
x=
0.5000-0.5556-0.3168-0.3470-0.3473-0.3473
ans=
5.00000.0000-0.3473
k=
5
piancha=
4.5086e-008
xk=
-0.3473
由以上结果可知迭代式(6)是收敛的。
2、用事后误差估计
来控制迭代次数,并且打印出迭代的次数;
建立diedail.m文件程序如下:
function[k,piancha,xk]=diedail(x0)
x
(1)=x0
fori=1:
100
x(i+1)=funl(x(i))
piancha=abs(x(i+1)-x(i));
[(i-1)pianchax(i)]
if(piancha<0.0000000005)%误差小于0.0000000005
k=i,xk=x(i)
break
end
i=i+1;
end
[kpianchaxk]
对于不同的收敛迭代式运行命令[k,piancha,xk]=diedail(0.5),有以下结果:
(2)
k=
11
piancha=
2.2008e-010
xk=
-0.3473
(3)
k=
19
piancha=
2.0403e-010
xk=
1.8794
(4)
k=
9
piancha=
4.4683e-010
xk=
-0.3473
(5)
k=
10
piancha=
3.3969e-010
xk=
1.8794
(6)
k=
6
piancha=
8.3267e-016
xk=
-0.3473
3、初始值的选取对迭代收敛有何影响;
对于f(x),如果其迭代式满足不动点存在的两个条件,则在其要求的区间内存在不动点,那么对于其所要求的区间上的所有点此迭代式都收敛。
也就是说,此时初值的选取对于迭代收敛没有影响。
又称全局收敛性。
以上四个收敛式都有全局收敛性。
初值的不同对于迭代式的敛散性和收敛阶没有影响,只是对于达到所要求误差的达到次数有一定的影响。
4、分析迭代收敛和发散的原因。
f(x)=0分解为x=
若其迭代后趋近于一点,称该点为不动点。
迭代法是一种逐次逼近法,其基本思想是将隐式方程
归结为一组显式的计算公式,就是说迭代工程实质上是一个逐步显化的过程。
发散迭代式的迭代过程可表示为图1
收敛迭代式的迭代过程可表示为图2
不动点的存在性:
x=
满足以下条件:
1.对于任意的在f(x)的定义域[a,b]上的
有
2.存在正常数L<1,对于任意的x,y∈[a,b]都有
,则
在[a,b]上存在唯一的不动点,又可表述为
迭代法的收敛性:
只要
满足以上条件,则对任意的
,其迭代计算都收敛到不动点。