欢迎来到天天文库
浏览记录
ID:59224319
大小:105.50 KB
页数:5页
时间:2020-09-09
《初值的选取对迭代法的影响实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、安徽工业大学数理科学与工程学院数值计算实习姓名:陶仕杰学号:班级:数121班指导老师:谭高山初值的选取对迭代法的影响实验目的:通过具体的数值实验,体会选取不同的初值对同一迭代法的影响。实验内容:用牛顿迭代法求方程在=1.5附近的根。实验要求:(1)对牛顿迭代公式:,编写程序进行实验,分别取,迭代10次,观察比较其计算值,并分析原因。(2)用MATLAB内部函数solve直接求出方程的所有根,并与(1)的结果进行比较。试验过程:①首先保存牛顿切线法的MATLAB程序为M文件,命名为newtonqx.m.function[k,xk,yk,p
2、iancha,xdpiancha]=newtonqx(x0,tol,ftol,gxmax)x(1)=x0;fori=1:gxmaxx(i+1)=x(i)-fnq(x(i))/(dfnq(x(i))+eps);piancha=abs(x(i+1)-x(i));xdpiancha=piancha/(abs(x(i+1))+eps);i=i+1;xk=x(i);yk=fnq(x(i));[(i-1)xkykpianchaxdpiancha]if(abs(yk)3、(xdpiancha4、1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;endendifi>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;end[(i-1),xk,yk,piancha,xdpiancha]';②建立名为fnq.m的M文件functiony=fnq(x)y=x^3-x-1;③建立名为dfnq.m的M文件functiony=dfnq(x)y=3*x^2-1;a.当初始值取时,迭代次数为105、,要求精度为,在MATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(0,1e-3,1e-3,10)运行后输出结果如表1-1表1-11.0000-1.0000-1.00001.00001.00002.0000-0.5000-0.62500.50001.00003.0000-3.0000-25.00002.50000.83334.0000-2.0385-7.43200.96150.47175.0000-1.3903-2.29700.64820.46626.0000-0.9116-0.8466、00.47870.52517.0000-0.3450-0.69600.56661.64218.0000-1.4278-2.48271.08270.75839.0000-0.9424-0.89460.48530.515010.0000-0.4049-0.66150.53751.3272由以上可知初始值取时,迭代次数为10时,迭代次数超过给定的最大值gxmax。根的近似值xk=-0.4049,函数值yk=-0.6615,偏差piancha=0.5375和相对偏差xdpiancha=1.3272。b.当初始值,迭代次数为10,要求精度为,在M7、ATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(1.5,1e-3,1e-3,10)运行后输出结果如表1-1表1-21.00001.34780.10070.15220.11292.00001.32520.00210.02260.01713.00001.32470.00000.00050.0004由以上可知初始值取时,迭代次数为10时,迭代次数k=3。根的近似值xk=1.3247,函数值yk=9.2438e-007,偏差piancha=4.8222e-004和相对偏差xdpiancha=8、3.6402e-004。c.用solve函数直接计算方程的所有根,在MATLAB工作窗口输入程序solve('x^3-x-1');roots([1-1-1])运行后输出结果为ans=-0.61801.6180实验结果分析:比较初始值分别为和1.5的两组结果,在处迭代10次,迭代次数超过给定的最大值gxmax,得到根的近似值xk=-0.4049,函数值yk=-0.6615。在处迭代3次就得到根的近似值,根的近似值xk=1.3247,函数值yk=9.2438e-007。由此可见牛顿迭代法在初始值接近于近似根处的迭代速度要比远离近似根初始值的9、迭代速度快很多,而且近似值和函数近似值要精确很多,所以在进行牛顿迭代法进行根的近似求解时,初始值的选择非常重要。用MATLAB内部函数solve直接求出方程的所有根,得到ans=-0.6180和1.6180
3、(xdpiancha4、1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;endendifi>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;end[(i-1),xk,yk,piancha,xdpiancha]';②建立名为fnq.m的M文件functiony=fnq(x)y=x^3-x-1;③建立名为dfnq.m的M文件functiony=dfnq(x)y=3*x^2-1;a.当初始值取时,迭代次数为105、,要求精度为,在MATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(0,1e-3,1e-3,10)运行后输出结果如表1-1表1-11.0000-1.0000-1.00001.00001.00002.0000-0.5000-0.62500.50001.00003.0000-3.0000-25.00002.50000.83334.0000-2.0385-7.43200.96150.47175.0000-1.3903-2.29700.64820.46626.0000-0.9116-0.8466、00.47870.52517.0000-0.3450-0.69600.56661.64218.0000-1.4278-2.48271.08270.75839.0000-0.9424-0.89460.48530.515010.0000-0.4049-0.66150.53751.3272由以上可知初始值取时,迭代次数为10时,迭代次数超过给定的最大值gxmax。根的近似值xk=-0.4049,函数值yk=-0.6615,偏差piancha=0.5375和相对偏差xdpiancha=1.3272。b.当初始值,迭代次数为10,要求精度为,在M7、ATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(1.5,1e-3,1e-3,10)运行后输出结果如表1-1表1-21.00001.34780.10070.15220.11292.00001.32520.00210.02260.01713.00001.32470.00000.00050.0004由以上可知初始值取时,迭代次数为10时,迭代次数k=3。根的近似值xk=1.3247,函数值yk=9.2438e-007,偏差piancha=4.8222e-004和相对偏差xdpiancha=8、3.6402e-004。c.用solve函数直接计算方程的所有根,在MATLAB工作窗口输入程序solve('x^3-x-1');roots([1-1-1])运行后输出结果为ans=-0.61801.6180实验结果分析:比较初始值分别为和1.5的两组结果,在处迭代10次,迭代次数超过给定的最大值gxmax,得到根的近似值xk=-0.4049,函数值yk=-0.6615。在处迭代3次就得到根的近似值,根的近似值xk=1.3247,函数值yk=9.2438e-007。由此可见牛顿迭代法在初始值接近于近似根处的迭代速度要比远离近似根初始值的9、迭代速度快很多,而且近似值和函数近似值要精确很多,所以在进行牛顿迭代法进行根的近似求解时,初始值的选择非常重要。用MATLAB内部函数solve直接求出方程的所有根,得到ans=-0.6180和1.6180
4、1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;endendifi>gxmaxdisp('请注意:迭代次数超过给定的最大值gxmax。')k=i-1;xk=x(i);[(i-1)xkykpianchaxdpiancha]return;end[(i-1),xk,yk,piancha,xdpiancha]';②建立名为fnq.m的M文件functiony=fnq(x)y=x^3-x-1;③建立名为dfnq.m的M文件functiony=dfnq(x)y=3*x^2-1;a.当初始值取时,迭代次数为10
5、,要求精度为,在MATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(0,1e-3,1e-3,10)运行后输出结果如表1-1表1-11.0000-1.0000-1.00001.00001.00002.0000-0.5000-0.62500.50001.00003.0000-3.0000-25.00002.50000.83334.0000-2.0385-7.43200.96150.47175.0000-1.3903-2.29700.64820.46626.0000-0.9116-0.846
6、00.47870.52517.0000-0.3450-0.69600.56661.64218.0000-1.4278-2.48271.08270.75839.0000-0.9424-0.89460.48530.515010.0000-0.4049-0.66150.53751.3272由以上可知初始值取时,迭代次数为10时,迭代次数超过给定的最大值gxmax。根的近似值xk=-0.4049,函数值yk=-0.6615,偏差piancha=0.5375和相对偏差xdpiancha=1.3272。b.当初始值,迭代次数为10,要求精度为,在M
7、ATLAB工作窗口输入程序为[k,xk,yk,piancha,xdpiancha]=newtonqx(1.5,1e-3,1e-3,10)运行后输出结果如表1-1表1-21.00001.34780.10070.15220.11292.00001.32520.00210.02260.01713.00001.32470.00000.00050.0004由以上可知初始值取时,迭代次数为10时,迭代次数k=3。根的近似值xk=1.3247,函数值yk=9.2438e-007,偏差piancha=4.8222e-004和相对偏差xdpiancha=
8、3.6402e-004。c.用solve函数直接计算方程的所有根,在MATLAB工作窗口输入程序solve('x^3-x-1');roots([1-1-1])运行后输出结果为ans=-0.61801.6180实验结果分析:比较初始值分别为和1.5的两组结果,在处迭代10次,迭代次数超过给定的最大值gxmax,得到根的近似值xk=-0.4049,函数值yk=-0.6615。在处迭代3次就得到根的近似值,根的近似值xk=1.3247,函数值yk=9.2438e-007。由此可见牛顿迭代法在初始值接近于近似根处的迭代速度要比远离近似根初始值的
9、迭代速度快很多,而且近似值和函数近似值要精确很多,所以在进行牛顿迭代法进行根的近似求解时,初始值的选择非常重要。用MATLAB内部函数solve直接求出方程的所有根,得到ans=-0.6180和1.6180
此文档下载收益归作者所有