资源描述:
《数值分析实验报告——非线性方程求根》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数值分析实验报告——非线性方程求根二分法一、题目二、方法二分法三、程序1、Jiangerfen.M的程序function[c,yc]=jiangerfen(f,a,b,tol1,tol2)ifnargin<4tol1=1e-3;tol2=1e-3;end%nargin<4表示若赋的值个数小于4,则tol1和tol2取默认值。ya=feval('f',a);%令x=a代入到方程f中,ya即f(a)。yb=feval('f',b);ifya*yb>0,disp('(a,b)不是有根区间');return,endmax=1+round((log(b-a)-log(tol2))/lo
2、g(2));%round函数是将数据取整,使数据等于其最接近的整数。fork=1:maxc=(a+b)/2;yc=feval('f',c);if((b-a)/23、(abs(yc)>formatcompact>>fplot('[x^3-2*x-1,0]',[-1.5,2]);>>jiangerfen('f',-1.5,-0.8
4、);k=8c=-0.9996yc=3.9017e-004>>jiangerfen('f',-0.8,-0.3);k=8c=-0.6184yc=2.7772e-004>>jiangerfen('f',1.3,2);k=10c=1.6179yc=-9.5348e-004>>jiangerfen('f',2,3);(a,b)不是有根区间方程f(x)=x^3-2*x-1的所有根为-0.9996,-0.6184,1.6179。迭代次数分别为8,8,10。五、拓展由于二分法收敛太慢,可以先通过画图,取得一个包含根的小区间,再用二分法来求解,这样就能有效减少迭代次数。不动点迭代法一、题目二
5、、方法不动点迭代法三、程序1、Jiangbudong.M的程序functionp=jiangbudong(g,x0,tol,max)P(1)=x0;fork=1:maxP(k+1)=feval('g',P(k));p=P(k+1);ifabs(P(k+1)-P(k))>formatcompact>>fplot('[2*x^2-sin(x)-1,0]',[0,1]);>>jiang
6、budong('g',0.5,1e-4,50)P=Columns1through90.50001.47940.67451.20420.80281.07080.87671.00870.9151Columns10through180.97940.93430.96550.94370.95880.94830.95560.95050.9541Columns19through270.95160.95330.95210.95300.95240.95280.95250.95270.9526Column280.9526ans=26ans=0.9526方程2x^2-sin(x)-1=0在[0,1
7、]的根为0.9526。取的初值是0.5。五、拓展在不动点迭代法中,迭代过程的收敛速度依赖于迭代函数g(x)的选取。若dg(x)不等于0,则该迭代过程只可能是线性收敛。如果改动迭代函数为g(x)=sqrt((sin(x)+1)/2),则输出结果为>>jiangbudong('g',0.5,1e-4,50)P=Columns1through60.50000.86010.93750.95030.95230.9526Column70.9526ans=5ans=0.9526迭代次数为5次,相比先前的26次,收敛速度加快了很多。因此,在选取迭代函数时,应该尽量让函数收敛的阶更高一点。Ne
8、wton迭代法一、题目二、方法Newton迭代法三、程序1、Jiangnewton.M的程序functionp=jiangnewton(h,dh,x0,tol1,max)p0=x0;fork=1:maxp=p0-feval(h,p0)/feval(dh,p0);ifabs(p-p0)