作业十(第五章):1、 在区间(0,1、5)上分别用二分法、牛顿法与割线法编程求下面得函数得零点,精度要求 10-10。二分法fun c tio n [X]=bisection(f x,x a,xb,n,d elta)% 二分法解方程% f x就是由方程转化得关于x得函数,有 fx=0。% x a 解区间上限% xb 解区间下限%解区间人为推断输入% n 最多循环步数,防止死循环。%delta 为允许误差x=x a;fa=eva l(fx);x=xb;fb=eval(fx);for i=1:n xc=(x a+xb)/2;x=x c;fc=e va l(fx); X=[i,x c,fc]; if fc*fa<0 xb=xc; e lse xa=x c; end i f (xb-x a)〈de l ta,b r e a k,e n dE nd二分法结果:迭代 34 次,xc=0、5149牛顿法f u ncti on [X]=newton(f x,e,x 0,m)x=x0;k=0;F=e val(fx);if ab s(F)<=e X=[x F]; disp(X); re turn endwhile k<=m x=x0;g=eval(diff(fx)); x1=x0—F/g; x=x1;F=ev a l(f x);k=k+1; if abs(F)〈=e X=[x1 F k];retur n end if k>m f pr i ntf('牛顿法迭代 M 次没有找到方程得根') r e tur n e n d x 0=x 1;endfpri n t f('\n%s%、4f\t%s%d','X=',X,’k=',k) %输出结果牛顿法结果:迭代5次 结果 0、5149割线法:f unc t i o n [X]=g x 9(fx,x 0,x1,m,e)x=x0;f0=e val(fx);x=x1;f1=e va l(fx);if a bs(f 0)〈=e X=[x0,f0];endfor k=2:m if a bs(f0)
0 y0=y1;c o nti n ue en d x 0=x—k;x1=x; [X]=g x 9(f x,x 0,x 1,m,e);%割线法 if x>b X=x;disp(X); r etur n end y 0=y 1;end%%%%%%%%%%%%%%%%f unc tion [X]=gx9(f x,x0,x1,m,e)x=x0;f 0=ev a l(f x);x=x1;f 1=eval(f x);if a bs(f0)<=e X=[x0,f 0];e ndf o r k=2:m i f abs(f0)〈a bs(f1) b=x 0;x0=x1;x1=b; b=f0;f0=f 1;f 1=b; e n d t=(x1—x0)/(f1-f0);x0=x 1;f0=f 1; x1=x 1—t*f 1; x=x1;f 1=e v a l(f x); if ab s(f 1)<=e X=[x,f1,k] retu r n endEn d扫描法结果: