1、课题一 迭代格式的比较 要求 : 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]
2、输出迭代次数、偏差和第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
3、 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
4、 = 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.
5、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
6、 -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
7、 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
8、 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.71
9、81 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.0
10、008 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 =
11、 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); 在ma
12、tlab命令窗口中运行以下命令: >> [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 =
13、 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文件: fun
14、ction 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
15、 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
16、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 =
17、 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 =
18、 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.50
19、00 -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
20、)) 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.0403
21、e-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),如果其迭代式满足不动点存在的两个条件,则在其要求的区间内存在不动点,那么对于其所要求的区间上的所有点此迭代式都收敛。也就
22、是说,此时初值的选取对于迭代收敛没有影响。又称全局收敛性。以上四个收敛式都有全局收敛性。 初值的不同对于迭代式的敛散性和收敛阶没有影响,只是对于达到所要求误差的达到次数有一定的影响。 4、分析迭代收敛和发散的原因。 f(x)=0 分解为x= 若其迭代后趋近于一点,称该点为不动点。迭代法是一种逐次逼近法,其基本思想是将隐式方程归结为一组显式的计算公式,就是说迭代工程实质上是一个逐步显化的过程。 发散迭代式的迭代过程可表示为图1 收敛迭代式的迭代过程可表示为图2 不动点的存在性:x=满足以下条件: 1. 对于任意的在f(x)的定义域[a,b]上的有 2.存在正常数L<1,对于任意的x,y ∈[a,b]都有,则在[a,b]上存在唯一的不动点,又可表述为 迭代法的收敛性:只要满足以上条件,则对任意的,其迭代计算都收敛到不动点。






