资源描述
课题一 迭代格式的比较
要求 :
1、 编制一个程序进行运算,最后打印出每种迭代格式的敛散情况;
①、建立迭代程序的M文件:
function [k,piancha,xk]=diedail(x0,k)
x(1)=x0
for i = 1:k
x(i+1)=funl(x(i))%用所用的格式迭代
piancha=abs(x(i+1)-x(i));%偏差
i=i+1;
xk=x(i);%第k次迭代的结果
[(i-1) piancha xk]
end
p=[(i-1) piancha xk];%输出迭代次数、偏差和第k次迭代的结果
②、对于不同的迭代式子建立不同的funl.m文件
(1)
建立迭代式子(1)的M文件:
function y1 =funl(x)
y1=(3*x+1)/x^2;
在matlab命令窗口中运行以下命令
>> [k,piancha,xk]=diedail(0.5,5) %初值是0.5,迭代5次
x =
0.5000
x =
0.5000 10.0000
ans =
1.0000 9.5000 10.0000
x =
0.5000 10.0000 0.3100
ans =
2.0000 9.6900 0.3100
x =
0.5000 10.0000 0.3100 20.0832
ans =
3.0000 19.7732 20.0832
x =
0.5000 10.0000 0.3100 20.0832 0.1519
ans =
4.0000 19.9314 0.1519
x =
0.5000 10.0000 0.3100 20.0832 0.1519 63.1191
ans =
5.0000 62.9673 63.1191
k =
5
piancha =
62.9673
xk =
63.1191
由以上结果可知迭代式(1)是发散的。
(2)
建立迭代式子(2)的M文件:
function y1 =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.0000 0.7917 -0.2917
x =
0.5000 -0.2917 -0.3416
ans =
2.0000 0.0499 -0.3416
x =
0.5000 -0.2917 -0.3416 -0.3466
ans =
3.0000 0.0050 -0.3466
x =
0.5000 -0.2917 -0.3416 -0.3466 -0.3472
ans =
4.0000 0.0006 -0.3472
x =
0.5000 -0.2917 -0.3416 -0.3466 -0.3472 -0.3473
ans =
5.0000 0.0001 -0.3473
x =
0.5000 -0.2917 -0.3416 -0.3466 -0.3472 -0.3473 -0.3473
ans =
6.0000 0.0000 -0.3473
x =
0.5000 -0.2917 -0.3416 -0.3466 -0.3472 -0.3473 -0.3473 -0.3473
ans =
7.0000 0.0000 -0.3473
k =
7
piancha =
1.0399e-006
xk =
-0.3473由以上结果可知迭代式(2)是收敛的。
(3)
建立迭代式子(3)的M文件:
function y1 =funl(x)
y1=(3*x+1)^(1/3);
在matlab命令窗口中运行以下命令:
>> [k,piancha,xk]=diedail(0.5,10)
x =
0.5000
x =
0.5000 1.3572
ans =
1.0000 0.8572 1.3572
x =
0.5000 1.3572 1.7181
ans =
2.0000 0.3609 1.7181
x =
0.5000 1.3572 1.7181 1.8326
ans =
3.0000 0.1145 1.8326
x =
0.5000 1.3572 1.7181 1.8326 1.8660
ans =
4.0000 0.0335 1.8660
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756
ans =
5.0000 0.0096 1.8756
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756 1.8783
ans =
6.0000 0.0027 1.8783
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756 1.8783 1.8791
ans =
7.0000 0.0008 1.8791
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756 1.8783 1.8791 1.8793
ans =
8.0000 0.0002 1.8793
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756 1.8783 1.8791 1.8793 1.8794
ans =
9.0000 0.0001 1.8794
x =
0.5000 1.3572 1.7181 1.8326 1.8660 1.8756 1.8783 1.8791 1.8793 1.8794 1.8794
ans =
10.0000 0.0000 1.8794
k =
10
piancha =
1.7458e-005
xk =
1.8794
由以上结果可知迭代式(3)是收敛的。
(4)
建立迭代式子(4)的M文件:
function y1 =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.0000 0.8636 -0.3636
x =
0.5000 -0.3636 -0.3487
ans =
2.0000 0.0149 -0.3487
x =
0.5000 -0.3636 -0.3487 -0.3474
ans =
3.0000 0.0013 -0.3474
x =
0.5000 -0.3636 -0.3487 -0.3474 -0.3473
ans =
4.0000 0.0001 -0.3473
x =
0.5000 -0.3636 -0.3487 -0.3474 -0.3473 -0.3473
ans =
5.0000 0.0000 -0.3473
k =
5
piancha =
9.0701e-006
xk =
-0.3473
由以上结果可知迭代式(4)是收敛的。
(5)
建立迭代式子(5)的M文件:
function y1 =funl(x)
y1=(3+1/x)^(1/2);
在matlab命令窗口中运行以下命令:
>> [k,piancha,xk]=diedail(0.5,8)
x =
0.5000
x =
0.5000 2.2361
ans =
1.0000 1.7361 2.2361
x =
0.5000 2.2361 1.8567
ans =
2.0000 0.3794 1.8567
x =
0.5000 2.2361 1.8567 1.8811
ans =
3.0000 0.0244 1.8811
x =
0.5000 2.2361 1.8567 1.8811 1.8793
ans =
4.0000 0.0019 1.8793
x =
0.5000 2.2361 1.8567 1.8811 1.8793 1.8794
ans =
5.0000 0.0001 1.8794
x =
0.5000 2.2361 1.8567 1.8811 1.8793 1.8794 1.8794
ans =
6.0000 0.0000 1.8794
x =
0.5000 2.2361 1.8567 1.8811 1.8793 1.8794 1.8794 1.8794
ans =
7.0000 0.0000 1.8794
x =
0.5000 2.2361 1.8567 1.8811 1.8793 1.8794 1.8794 1.8794 1.8794
ans =
8.0000 0.0000 1.8794
k =
8
piancha =
5.9875e-008
xk =
1.8794
由以上结果可知迭代式(5)是收敛的。
(6)
建立迭代式子(6)的M文件:
function y1 =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.0000 1.0556 -0.5556
x =
0.5000 -0.5556 -0.3168
ans =
2.0000 0.2388 -0.3168
x =
0.5000 -0.5556 -0.3168 -0.3470
ans =
3.0000 0.0302 -0.3470
x =
0.5000 -0.5556 -0.3168 -0.3470 -0.3473
ans =
4.0000 0.0003 -0.3473
x =
0.5000 -0.5556 -0.3168 -0.3470 -0.3473 -0.3473
ans =
5.0000 0.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
for i = 1:100
x(i+1)=funl(x(i))
piancha=abs(x(i+1)-x(i));
[(i-1) piancha x(i)]
if (piancha<0.0000000005)%误差小于0.0000000005
k=i,xk=x(i)
break
end
i=i+1;
end
[k piancha xk]
对于不同的收敛迭代式运行命令[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]上存在唯一的不动点,又可表述为
迭代法的收敛性:只要满足以上条件,则对任意的,其迭代计算都收敛到不动点。
展开阅读全文