资源描述:
《数值分析上机(四)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Authorbyprs,版权所有Ps:题目均来自数值分析第五版作者:李庆扬,王能超,易大义编出版社:清华大学出版社误差分析问题:求下列方程的实根(1)(2)要求:(1)设计一种不动点迭代法,要使迭代序列收敛,然后再用斯特芬森加速迭代,计算到为止。(2)用牛顿迭代,同样计算到,输出迭代初值及各次迭代值和迭代次数k,比较方法的优劣。代码部分:/**函数**/functiony=fun(x)y=x^3+2*x^2+10*x-20;endfunctiony=fun1(x)y=x^2-3*x+2-exp(x);%y=2*log(x)+log(3);endfunct
2、ion[y,k]=niudun(x0)%NUIDUNSummaryofthisfunctiongoeshere%Detailedexplanationgoesherex(1)=x0;k=1;des=1;whiledes>1.0e-8x(k+1)=x(k)-fun1(x(k))/dfun1(x(k));des=abs(x(k+1)-x(k));k=k+1;endy=x(k);k=k;endfunction[y,k]=sitefensen(x0,f)%SITEFENSENSummaryofthisfunctiongoeshere%Detailedexplan
3、ationgoeshere%x0为初值,n为迭代次数,f为迭代函数x(1)=x0;des=1;Authorbyprs,版权所有k=1;whiledes>1.0e-8y(k)=f(x(k));z(k)=f(y(k));x(k+1)=x(k)-(y(k)-x(k))^2/(z(k)-2*y(k)+x(k));des=abs(x(k+1)-x(k));k=k+1;endy=x(k);k=k;end%fun的导数functiony=dfun(x)%DFUNSummaryofthisfunctiongoeshere%Detailedexplanationgoesh
4、erey=3*x^2+4*x+10;end%fun1的导数functiony=dfun1(x)%DFUN1Summaryofthisfunctiongoeshere%Detailedexplanationgoesherey=2*x-exp(x)-3;endclearclc%不动点迭代法n=100;x0=0.5;%初值k=0;des=1;whiledes>1.0e-8x=(x0^2+2-exp(x0))/3;%2*log(x)+log(3)%x=(-x0^3-10*x0+20)/2*(x0+eps);des=abs(x-x0);k=k+1;x0=x;end
5、disp('不动点迭代解->')fprintf('%f',x)Authorbyprs,版权所有disp('迭代次数->')fprintf('%d',k)disp('误差->')fprintf('%f',abs(0-fun1(x)))%斯蒂芬森加速f='(x^2+2-exp(x))/3';f=inline(f);[yy,kk]=sitefensen(0.5,f);disp('斯蒂芬森加速解->')fprintf('%f',yy)disp('迭代次数->')fprintf('%d',kk)disp('误差->')fprintf('%f
6、',abs(0-fun1(yy)))%牛顿迭代法[yy1,kk1]=niudun(0.5);disp('牛顿迭代法解->')fprintf('%f',yy1)disp('迭代次数->')fprintf('%d',kk1)disp('误差->')fprintf('%f',abs(0-fun1(yy1)))第一个方程的运行结果如下:不动点迭代解->0.257530迭代次数->14误差->0.000000斯蒂芬森加速解->0.257530迭代次数->5误差->0.000000牛顿迭代法解->0.257530迭代次数->5误差->0.000000迭代
7、初值迭代次数不动点迭代0.514Authorbyprs,版权所有斯蒂芬森加速0.55牛顿法0.55迭代初值迭代次数不动点迭代115斯蒂芬森加速15牛顿法15迭代初值迭代次数不动点迭代39斯蒂芬森加速35牛顿法37结论:由上述三个表格可以看出去在迭代初值相同的情况下,斯蒂芬森加速和牛顿加速迭代次数都明显少于不动点迭代。但在迭代初值和真实值相差较大的时候,牛顿法的迭代次数和不动点差不多,而斯蒂芬森加速法依然保持很好的收敛快速性。此外,在初值取得再大时,不动点迭代呈发散状,故在方法的选取中,我们应该选择斯蒂芬森加速迭代法。