初值的选取对迭代法的影响实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
初值的选取对迭代法的影响
实验目的:通过具体的数值实验,体会选取不同的初值对同一迭代法
的影响。
实验内容:用牛顿迭代法求方程x‘—X—1=0在X=1.5附近的根。
实验要求:
3 彳
(1)对牛顿迭代公式:X ki =x「了-1,编写程序进行实验,分
3X k -1
别取X0 ",X0 =1.5迭代10次,观察比较其计算值,并分析原因。
(2)用MATLA内部函数solve直接求出方程的所有根,并与(1) 的结果进行比较。
试验过程:
①首先保存牛顿切线法的MATLAB程序为M文件,命名为n ewt onq x.m.
fun cti on
[k,xk,yk,pia ncha,xdpia ncha]=n ewt onq x(x0,tol,ftol,gxmax)
x(1)=x0;
for i=1: gxmax
x(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps);
pia ncha=abs(x(i+1)-x(i));
xdpia ncha二pia ncha/( abs(x(i+1))+eps); i=i+1;
xk=x(i);yk=fnq(x(i)); [(i-1) xk yk pia ncha xdpia ncha]
if (abs(yk) k=i-1; xk=x(i);[(i-1) xk yk pia ncha xdpia ncha] return ; end end if i>gxmax disp('请注意:迭代次数超过给定的最大值gxmax ') k=i-1; xk=x(i);[(i-1) xk yk pia ncha xdpia ncha] retur n ; end [(i-1),xk,yk,pia ncha,xdpia ncha]'; ②建立名为fnq.m的M文件 fun cti on y=fnq(x) y=x A3-x-1; ③建立名为dfnq.m的M文件 fun cti on y=dfnq(x) y=3*xA2-1; a.当初始值取冷=0时,迭代次数为10,要求精度为;二10",在MATLAB 工作窗口输入程序为 [k,xk,yk,pia ncha,xdpia ncha]二n ewt onq x(0,1e-3,1e-3,10) 运行后输出结果如表1-1 表1-1 由以上可知初始值取x0= O时,迭代次数为10时,迭代次数超过给定 的最大值gxmax根的近似值xk=-0.4049,函数值yk=-0.6615,偏差 piancha=0.5375 和相对偏差xdpiancha=1.3272。 b .当初始值x0 =1.5,迭代次数为10,要求精度为;=10",在MATLAB 工作窗口输入程序为 [k,xk,yk,pia ncha,xdpia ncha]二n ewt onq x(1.5,1e-3,1e-3,10) 运行后输出结果如表1-1 表1-2 由以上可知初始值取x0M.5时,迭代次数为10时,迭代次数k=3。根 的近似值xk= 1.3247 ,函数值yk= 9.2438e-007 ,偏差piancha二 4.8222e-004 和相对偏差xdpiancha=3.6402e-004。 c.用solve函数直接计算方程x3 - x -仁0的所有根,在MATLA工作窗 口输入程序 solve(W3-x-1');roots([1 -1 -1]) 运行后输出结果为ans=-0.6180 1.6180 实验结果分析: 比较初始值分别为x0=0和1.5的两组结果,在x0=0处迭代10次, 迭代次数超过给定的最大值gxmax,得到根的近似值xk=-0.4049,函数值yk=-0.6615。在x0=1.5处迭代3次就得到根的近似值,根的近似值xk=1.3247,函数值yk= 9.2438e-007。由此可见牛顿迭代法在初始值接近于近似根处的迭代速度要比远离近似根初始值的迭代速度快很多,而且近似值和函数近似值要精确很多,所以在进行牛顿迭代法进行根的近似求解时,初始值的选择非常重要。 用MATLA内部函数solve直接求出方程的所有根,得到ans=-0.6180 和1.6180,与(1)的结果进行比较时可以发现其两个根分别和初始值和近似根差别很大时和接近近似根的两个值相差不大。虽然用MATLA内部函数solve 直接求出方程的根的方法比较快,但是其计算结果和用迭代法求方程的根的方法相比存在一定的误差,即没有迭代法求解方程时精确值高。