数值分析实验报告——非线性方程求根 二分法 一、题目 0.001. .012 .13要求每个根的误差小于的所有根用二分法求方程 xx 二、方法 二分法 三、程序 1、Jiangerfen.M 的程序 function[c,yc]=jiangerfen(f,a,b,tol1,tol2) if nargin<4 tol1=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); if ya*yb>0,disp('(a,b)不是有根区间');return,end max=1+round((log(b -a)-log(tol2))/log(2));%round 函数是将数据取整,使数据等于其最接近的整数。 for k=1:max c=(a+b)/2; yc=feval('f',c); if((b-a)/2> format compact >> fplot('[x^3-2*x-1,0]',[-1.5,2]); >> jiangerfen('f',-1.5,-0.8); k = 8 c = -0.9996 y c = 3.9017e-004 >> jiangerfen('f',-0.8,-0.3); k = 8 c = -0.6184 y c = 2.7772e-004 >> jiangerfen('f',1.3,2); k = 10 c = 1.6179 y c = -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。 五、拓展 由于二分法收敛太慢,可以先通过画图,取得一个包含根的小区间,再用二分法来求解,这样就能有效减少迭代次数。 不动点迭代法 一、题目 的一个根。的在用不动点迭代求]1,0[01sin 2 : .22xx 二、方法 不动点迭代法 三、程序 1、Jiangbu dong.M 的程序 fu nction p=jiangbu dong(g,x 0,tol,max ) P(1)=x 0; for k=1:max P(k+1)=fev al('g',P(k)); p=P(k+1); if abs(P(k+1)-P(k))> format compact >> fplot('[2*x^2-sin(x)-1,0]',[0,1]); >> jiangbudong('g',0.5,1e-4,50) P = Columns 1 through 9 0.5000 1.4794 0.6745 1.2042 0.8028 1.0708 0.8767 1.0087 0.9151 Columns 10 through 18 0.9794 0.9343 0.9655 0.9437...