1、数值分析上机报告 数值分析上机报告学 院 班 级 姓 名 学 号 指导教师 2013.06内 容第一次上机题目一分别用不动点迭代与Newton法求解方程的正根与负根。(1)不动点迭代a原理将变形为进行迭代,直到 为止变形后为有两种形式: 和b程序注:(初值为0,误差限为10e-6) 形式:Lx1_1_1.mx=zeros(100,1);tol=1;i=1;x(1)=0;while tol=10e-6; disp(x(i) x(i+1)=exp(2*x(i)-5; tol=abs(x(i+1)-x(i); i=i+1;enddisp(i-1); 形式:Lx1_1_2.mx=zeros(100,1
2、);tol=1;i=1;x(1)=0;while tol=10e-6; disp(x(i) x(i+1)=1/2*log(x(i)+5); tol=abs(x(i+1)-x(i); i=i+1;enddisp(i-1);c运行结果注:(初值为0,误差限为10e-6)正根:x1x2x3x4x5x600.804718950.879335600.885721880.886264700.88631081负根:x1x2x3x40-4-4.99966454-4.99995457(2)Newton法a原理假设,是方程根的近似,考虑在点展开的一阶泰勒多项式:,则有:,即, ,通过初始值p0,就可以产生序列:。
3、针对本题来说,迭代公式为: b程序注:(误差限为10e-6)Lx1_1_3.mclc,clear %Newton法p0=1;%求正根p0=-2;%求负根TOL=10(-6);N0=30;%Inputi=1;format long g;while i=N0 p=p0-(p0-exp(2*p0)+5)/(1-2*exp(2*p0); disp(p); if abs(p-p0)N0disp(超过最大迭代步数,原方程无解!);endc运行结果注:(误差限为10e-6)正根:X0X1X2X3X410.899183860.886494100.886315130.88631509负根:X0X1X2X3-2-
4、5.09506038-4.99995532- 4.99995460结果分析:不动点迭代会因为迭代公式选取的不同得出不同的迭代结果,而牛顿法迭代会因为初值选取的不同而得到不同的结果。牛顿法比不动点迭代法收敛速度快,能使用较少的迭代步数达到理想的结果。题目二 P100,2.6.9对于,使用下面的各种方法求位于0.1,1 内的解,精确到10e-4。a.二分法 b .Newton法 c. 正割法 d. 试位法 e. Mller法 (1)二分法a原理假定f(x)是定义在a,b上的连续函数,且f(a)和f(b)反号。设a1=a和b1=b,p1是a,b的中点。 若f(p1)与f(a1)同号,让a2=p1,b
5、2=b1;若f(pn)与f(a1)反号,让a2= a1,b2=p1;重复此过程直到f(pn)=0或者,终止迭代。b.程序注:(误差限为10e-4)Lx1_2_1.mclc,clear %二分法TOL=10(-4);N0=30;a=0.1;b=1;i=1;format long g;FA=600*a4-550*a3+200*a2-20*a-1;while i=N0 p=a+(b-a)/2; FP=600*p4-550*p3+200*p2-20*p-1;disp(i);disp(a);disp(b);disp(p);disp(FP); if FP=0 | (b-a)/20 a=p;FA=FP; e
6、lse b=p; end endendif iN0 disp(超过最大迭代步数,原方程无解!);endc.运行结果注:(误差限为10e-4)NAnBnPnF(Pn)10.110.5511.897520.10.550.3251.43851562530.10.3250.2125-0.272934570312540.21250.3250.268750.52432952880859350.21250.268750.2406250.11629644393920860.21250.2406250.2265625-0.080510288476942270.22656250.2406250.233593750
7、.017347389683127580.22656250.233593750.230078125.0317*90.2300781250.233593750.2318359375-0.00721856665244491100.23183593750.233593750.232714843750.00505592718842429110.23183593750.232714843750.232275390625-0.00108343871279004120.2322753906250.232714843750.23249511718750.00198571425098226130.23227539
8、06250.23249511718750.232385253906250.000451005303902186140.2322753906250.232385253906250.232330322265625-0.000316249816916248(2)Newton法a原理如题目一,令,得到本题迭代公式为:b.程序注:(误差限为10e-4,初值x0=0.5)Lx1_2_2.mclc,clear %Newton法p0=0.5;TOL=10(-4);N0=30;i=1;format long g;while i=N0 p=p0-(600*p04-550*p03+200*p02-20*p0-1)/
9、(2400*p03-1650*p02+400*p0-20); disp(i); disp(p); if abs(p-p0)N0 disp(超过最大迭代步数,原方程无解!);endc.运行结果注:(误差限为10e-4,初值x0=0.5)X0X1X2X30.50.3851851851851850.2812826491652530.234848973527312X4X50.2323578624218840.232352964768764(3)正割法a原理在Newton公式中使用近似公式,得到迭代公式为:,b.程序注:(误差限为10e-4,初值x0=0.15,x1=0.85)Lx1_2_3.mclc,
10、clear %正割法p0=0.15;p1=0.85;TOL=10(-4);N0=30;i=1;q0=600*p04-550*p03+200*p02-20*p0-1;q1=600*p14-550*p13+200*p12-20*p1-1;while i=N0 p=p1-q1*(p1-p0)/(q1-q0); disp(i+1); disp(p); if abs(p-p1)N0 disp(超过最大迭代步数,原方程无解!);endc.运行结果注:(误差限为10e-4,初值x0=0.15,x1=0.85)X0X1X2X30.150.850.157*86410.163700278470673X4X5X6X
11、70.2408853731511510.2317730923239290.2323490659375360.232352966526348(4)试位法a原理在正割法基础上增加检验:即对满足初值x0和x1,x2取连接所得直线截距。但为了计算x3,需要检验,若为负值,x3取连接所得直线截距,否则,x3取连接所得直线截距,并交换x0和x1下标,同理确定以后的Xk的值。b.程序注:(误差限为10e-4,初值x0=0.1,x1=0.4)Lx1_2_4.mclc,clear %试位法p0=0.1;p1=0.4;TOL=10(-4);N0=100;i=1;q0=600*p04-550*p03+200*p02
12、-20*p0-1;q1=600*p14-550*p13+200*p12-20*p1-1;while i=N0 p=p1-q1*(p1-p0)/(q1-q0); disp(i+1); disp(p); if abs(p-p1)TOL break; else i=i+1; q=600*p4-550*p3+200*p2-20*p-1; if q*q1N0 disp(超过最大迭代步数,原方程无解!);endc.运行结果注:(误差限为10e-4,初值x0=0.1,x1=0.4)X0X1X2X30.10.40.1961290322580650.223540690358892X4X5X6X70.230112
13、2035189140.2317754155258630.232203*0.232314285473330X80.232342947957081(5)Mller法a原理Mller法通过考虑经过、和的抛物线与x轴交点的横坐标来确定下一个近似值x3.以此类推。b.程序注:(误差限为10e-4,初值x0=0.1,x1=0.3,x2=0.5)Lx1_2_5.mclc,clear %Mller 法 TOL=10(-4);N0=30;%Inputi=1;x0=0.1;x1=0.3;x2=0.5;h1=x1-x0;h2=x2-x1;det1=(600*x14-550*x13+200*x12-20*x1-1)-
14、(600*x04-550*x03+200*x02-20*x0-1)/h1;det2=(600*x24-550*x23+200*x22-20*x2-1)-(600*x14-550*x13+200*x12-20*x1-1)/h2;d=(det2-det1)/(h2+h1);while i=N0 b=det2+h2*d; D=sqrt(b2-4*(600*x24-550*x23+200*x22-20*x2-1)*d); disp(i+2); if abs(b-D)abs(b+D) E=b+D; else E=b-D; end h=-2*(600*x24-550*x23+200*x22-20*x2-1
15、)/E; p=x2+h; disp(p); if abs(h)N0 disp(超过最大迭代步数,原方程无解!);endc.运行结果注:(误差限为10e-4,初值x0=0.1,x1=0.3,x2=0.5)X0X1X2X30.10.30.50.250700784928408X4X5X6X70.2234158903910800.2329155744008380.2323530547699870.232352964750002结果分析: 通过实验结果比较我们可以看到,Newton法只需选取不同的初始值,便可求出全部的解,即牛顿法对于它的全部解都是收敛的。二分法比较简单易行,但对初值的选取必须满足函数值
16、乘积为负,且收敛速度较慢。正割法是对Newton法的改进,Mller 法和试位法是对正割法的改进,所以这几种算法差别不太大,但是,由于二者弥补了正割法的不足,所以,相对来说更精确一些。题目三 用Newton法求解方程f(x)的零点,e=10-6 ,这里。再用求重根的两种方法求f(x)的零点。a原理求重根的方法:1、定义,如果p是f(x)的一个m重零点,并且有,和由于,其中p是u(x)的单重零点。应用牛顿法就可以得到如下公式:迭代形式为:。如果g具有需要的连续性条件,则无论f(x)零点的重数,关于g的迭代公式就是二次收敛。2、如果p是f(x)的多重零点,定义b程序1Newton法注:(误差限为1
17、0e-6,初值x0=0.5)Lx1_3_1.mclear all;clc;p0=0.01;tol=10e-6;N0=100;i=1;format long g;while i=N0 p=p0-(p0-sin(p0)/(1-cos(p0); disp(i); disp(p); if abs(p-p0)N0 disp(超过最大迭代步数,原方程无解!);end2第一种求重根方法注:(误差限为10e-6,初值x0=0.5)Lx1_3_2.m%第一种求重根方法clear all;clc;p0=0.5;tol=10e-6;N0=30;i=1;format long g;while i=N0 p=p0-(p
18、0-sin(p0)*(1-cos(p0)/(1-cos(p0)2-(p0-sin(p0)*sin(p0); disp(i); disp(p); if abs(p-p0)N0 disp(超过最大迭代步数,原方程无解!);end3第二种求重根方法注:(误差限为10e-6,初值x0=0.5,重数m取为2)Lx1_3_3.m%第二种求重根方法clear all;clc;p0=0.5;tol=10e-6;N0=30;m=2;i=1;format long g;while i=N0 p=p0-m*(p0-sin(p0)/(1-cos(p0); disp(i); disp(p); if abs(p-p0)N
19、0 disp(超过最大迭代步数,原方程无解!);endc运行结果1Newton法注:(误差限为10e-6,初值x0=0.5)X0X1X2X30.50.331931939489110.220880000703620.147133388298258X22X23X24X256.6327737201341e-054.42184894556538e-052.94789959330259e-051.9652668253838e-052第一种求重根方法注:(误差限为10e-6,初值x0=0.5)X0X1X2X30.50.008274056887745023.77629891905318e-081.50220
20、208792981e-083第二种求重根方法注:(误差限为10e-6,初值x0=0.5,重数m取为2)X0X1X2X30.50.1638638789782190.0545234220364570.0181708716869622X4X5X6X70.0060568239014230.0020189363628070.00067297860467170.0002243261947150X8X9X10X117.47753973315954e-052.49251358236218e-058.30837786750213e-062.76950811671404e-06结果分析: 由课本知识我们得知,用N
21、ewton法求重根时只能达到线性收敛。从以上实验结果可以看出,Newton法的迭代次数要远远多于后面两种求重根方法的迭代次数。而后两种方法相比,第一种方法收敛速度要明显快于第二种方法。题目四 用Newton法求解方程f(x)的零点,e=10-6 ,这里 。再用Steffensens method加速其收敛。a原理1Newton法Newton法原理同题1。2Steffensens 方法和Aitken2方法稍有不同,Steffensens 方法构造同样的开始的前4项:p0,p1,p2和。但是,在这一步,它假设比p2更好的逼近p,从而将不动点迭代应用于而不是p2。使用这种符号产生的序列为:每个第3项
22、由2方法产生,其余的由不动点方法产生。b程序1Newton法注:(误差限为10e-6,初值x0=0.5)程序同题目三。2Steffensens 方法Lx1_4_2.m%Steffensens方法clear all;clc p0=0.5;TOL=10(-6);N0=100;i=1;while i=N0 p1=sin(p0); p2=sin(p1); delte_2_pn=p2-2*p1+p0; if delte_2_pn=0 %第一处终止条件 break; end p=p0-(p1-p0)2/delte_2_pn; disp(i); disp(p); disp(p1); disp(p2); if
23、 abs(p-p0)N0 disp(超过最大迭代步数,原方程无解!);endc运行结果1Newton法注:(误差限为10e-6,初值x0=0.5)X0X1X2X30.50.331931939489110.220880000703620.147133388298258X22X23X24X256.6327737201341e-054.42184894556538e-052.94789959330259e-051.9652668253838e-052Steffensens 方法k00.50.4794255386042030.46126955503318110.3249690539268930.319
24、2794596354510.31388251658303220.214354510454120.212716755849220.21111619848984430.1422459414419530.141766727971670.14129233825280440.09463868926992930.0944974809095575.0943*160.0007279124937069750.0007279124294254370.000727912365143916170.000485160618961170.0004851605999282520.000485160580895337180.0003221760068692380.0003221760012957340.00032217599572223190.000207570264469470.0002075702629789280.000207570261488386200.000125603451414741结果分析: 与Newton法相比, Steffensen的收敛速度应该会更快一些,因为,理论上Steffensen方法是二次收敛的,而应用于求重根的Newton方法只能
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1