二分法matlab程序.docx
二分法二分法根本思路一般地,对于函数f(x),如果存在实数c,当x=c时,假设f(c)=0,那么把x=c叫做函数f(x)的零点。 解方程即要求f(x)的所有零点。 假定f(x)在区间x,y上连续 先找到a、b属于区间x,y,使f(a),f(b)异号,说明在区间(a,b)内一定有零点,然后求f(a+b)/2, 现在假设f(a)<0,f(b)>0,a<b 如果f(a+b)/2=0,该点就是零点, 如果f(a+b)/2<0,那么在区间(a+b)/2,b)内有零点,(a+b)/2>=a,从开场继续使用 中点函数值判断。 如果f(a+b)/2>0,那么在区间(a,(a+b)/2)内有零点,(a+b)/2<=b,从开场继续使用 中点函数值判断。 这样就可以不断接近零点。 通过每次把f(x)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。 从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。另外,二分法不能计算复根和重根。二分法步骤用二分法求方程的根的近似值的步骤 假设对于有,那么在内至少有一个根。 取的中点计算 假设那么是的根,停顿计算,运行后输出结果假设那么在内至少有一个根。取;假设,那么取; 假设为预先给定的要求精度退出计算,运行后输出结果,反之,返回步骤1,重复步骤1,2,3二分法Mtalab程序syms x; fun=input('(输入函数形式)fx='); a=input('输入二分法下限a='); b=input('输入二分法上限b='); d=input('输入误差限 d=')%二分法求根 %f=inline(x2-4*x+4); %修改需要求解的inline函数的函数体 f=inline(fun);%修改需要求解的inline函数的函数体 e=b-a; k=0 ; while e>d c=(a+b)/2; if f(a)*f(c)<0 b=c; elseif f(a)*f(c)>0 a=c; else a=c;b=c end e=e/2; k=k+1; end x=(a+b)/2; x%x为答案 k%k为次数例题:用二分法计算方程解:(输入函数形式)fx=x4-2*x3+4*x+10输入二分法下限a=-2输入二分法上限b=2得到结果d =x =k = 16