您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业文档 > 二分法matlab程序
二分法二分法基本思路一般地,对于函数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,ab①如果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)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零点,以求得零点的近似值,这种方法叫做二分法。从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。另外,二分法不能计算复根和重根。二分法步骤用二分法求方程()0fx的根*x的近似值kx的步骤①若对于ab有()()0fafb,则在(,)ab内()0fx至少有一个根。②取,ab的中点12abx计算1()fx③若1()0fx则1x是()0fx的根,停止计算,运行后输出结果*1xx若1()()0fafx则在1(,)ax内()0fx至少有一个根。取111,aabx;若1()()0fafx,则取111,axbb;④若12kkba(为预先给定的要求精度)退出计算,运行后输出结果*2kkabx,反之,返回步骤1,重复步骤1,2,3二分法Mtalab程序symsx;fun=input('(输入函数形式)fx=');a=input('(输入二分法下限)a=');b=input('(输入二分法上限)b=');d=input('输入误差限d=')%二分法求根%f=inline(x^2-4*x+4);%修改需要求解的inline函数的函数体f=inline(fun);%修改需要求解的inline函数的函数体e=b-a;k=0;whileedc=(a+b)/2;iff(a)*f(c)0b=c;elseiff(a)*f(c)0a=c;elsea=c;b=cende=e/2;k=k+1;endx=(a+b)/2;x%x为答案k%k为次数例题:用二分法计算方程4324100xxx在(-2,2)内的实根的近似值,要求精度为0.0001解:(输入函数形式)fx=x^4-2*x^3+4*x+10(输入二分法下限)a=-2(输入二分法上限)b=2输入误差限d=0.0001得到结果d=1.0000e-004x=2.0000k=16
本文标题:二分法matlab程序
链接地址:https://www.777doc.com/doc-1868380 .html