1、Author by prs,版权所有Ps:题目均来自数值分析第五版作者:李庆扬,王能超,易大义 编 出 版 社:清华大学出版社误差分析问题:求下列方程的实根(1)(2)要求:(1)设计一种不动点迭代法,要使迭代序列收敛,然后再用斯特芬森加速迭代,计算到为止。(2)用牛顿迭代,同样计算到,输出迭代初值及各次迭代值和迭代次数k,比较方法的优劣。代码部分:/*函数*/function y = fun(x)y=x3+2*x2+10*x-20;endfunction y = fun1( x)y=x2-3*x+2-exp(x);% y=2*log(x)+log(3);endfunction y,k= ni
2、udun(x0)%NUIDUN Summary of this function goes here% Detailed explanation goes herex(1)=x0;k=1;des=1;while des1.0e-8 x(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)%SITEFENSEN Summary of this function goes here% Detailed explanation goes he
3、re%x0为初值,n为迭代次数,f为迭代函数x(1)=x0;des=1;k=1;while des1.0e-8 y(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的导数function y= dfun(x)%DFUN Summary of this function goes here% Detailed explanation goes here y=3*x2+ 4*x+10;end%fun1的导数functi
4、on y = dfun1( x )%DFUN1 Summary of this function goes here% Detailed explanation goes herey=2*x-exp(x)-3;end clearclc%不动点迭代法n=100;x0=0.5;%初值k=0;des=1;while des1.0e-8 x=(x02+2-exp(x0)/3;% 2*log(x)+log(3)% x=(-x03-10*x0+20)/2*(x0+eps); des=abs(x-x0); k=k+1; x0=x;enddisp(不动点迭代解-)fprintf(%fn,x)disp(迭代次数
5、-)fprintf(%dn,k)disp(误差-)fprintf(%fn,abs(0-fun1(x)%斯蒂芬森加速f=(x2+2-exp(x)/3;f=inline(f);yy,kk=sitefensen(0.5,f);disp(斯蒂芬森加速解-)fprintf(%fn,yy)disp(迭代次数-)fprintf(%dn,kk)disp(误差-)fprintf(%fn,abs(0-fun1(yy)%牛顿迭代法yy1,kk1=niudun(0.5);disp(牛顿迭代法解-)fprintf(%fn,yy1)disp(迭代次数-)fprintf(%dn,kk1)disp(误差-)fprintf(%
6、fn,abs(0-fun1(yy1)第一个方程的运行结果如下:不动点迭代解-0.257530迭代次数-14误差-0.000000斯蒂芬森加速解-0.257530迭代次数-5误差-0.000000牛顿迭代法解-0.257530迭代次数-5误差-0.000000迭代初值迭代次数不动点迭代0.514斯蒂芬森加速0.55牛顿法0.55迭代初值迭代次数不动点迭代115斯蒂芬森加速15牛顿法15迭代初值迭代次数不动点迭代39斯蒂芬森加速35牛顿法37结论:由上述三个表格可以看出去在迭代初值相同的情况下,斯蒂芬森加速和牛顿加速迭代次数都明显少于不动点迭代。但在迭代初值和真实值相差较大的时候,牛顿法的迭代次数和不动点差不多,而斯蒂芬森加速法依然保持很好的收敛快速性。此外,在初值取得再大时,不动点迭代呈发散状,故在方法的选取中,我们应该选择斯蒂芬森加速迭代法。