作业十(第五章):1. 在区间 (0,1.5)上分别用二分法、牛顿法和割线法编程求下面的函数的零点,精度要求 10-10 。22( )=cos (2 )f xxx二分法function [X]=bisection(fx,xa,xb,n,delta)% 二分法解方程% fx是由方程转化的关于x 的函数,有 fx=0 。% xa 解区间上限% xb 解区间下限%解区间人为判断输入% n 最多循环步数,防止死循环。%delta 为允许误差x=xa;fa=eval(fx);x=xb;fb=eval(fx);for i=1:n xc=(xa+xb)/2;x=xc;fc=eval(fx); X=[i,xc,fc];if fc*fa<0 xb=xc;else xa=xc;endif (xb-xa)
m fprintf(' 牛顿法迭代 M次没有找到方程的根 ' ) returnend x0=x1;endfprintf('\n%s%.4f\t%s%d', 'X=',X, 'k=',k) %输出结果牛顿法结果:迭代 5 次结果 0.5149 割线法: function [X]=gx9(fx,x0,x1,m,e)x=x0;f0=eval(fx);x=x1;f1=eval(fx);if abs(f0)<=e X=[x0,f0];endfor k=2:mif abs(f0)0 y0=y1;continueend x0=x-k;x1=x; [X]=gx9(fx,x0,x1,m,e);%割线法if x>b X=x;disp(X);returnend y0=y1;end%%%%%%%%%%%%%%%%function [X]=gx9(fx,x0,x1,m,e)x=x0;f0=eval(fx);x=x1;f1=eval(fx);if abs(f0)<=e X=[x0,f0];endfor k=2:mif abs(f0)