二分法matlab程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
二分法
二分法基本思路
一般地,对于函数f(x),如果存在实数C,当x=c时,若f(c)=O,那么把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) ①如果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)的零点所在小区间收缩一半的方法,使区间的两个端点逐步迫近函数的零 点,以求得零点的近似值,这种方法叫做二分法。 从以上可以看出,每次运算后,区间长度减少一半,是线形收敛。另外,二分法不能计算复根和重根。 二分法步骤 用二分法求方程f (x) 0的根x*的近似值x k的步骤 ①若对于a b有f(a)f(b) 0,则在(a,b)内f(x) 0至少有一个根。 a b ②取a,b的中点x i 计算f (x1) 2 ③若f(xj 0则&是f (x) 0的根,停止计算, , , * 运行后输出结果x x1 若f (a) f (x-i) 0则在(a,xj 内f(x) 0 至少有一个根。取a1a,b1 x1; 若f (a) f(x)) 0,则取a1 x1,b1 b ; 1 ④若一|b k a k ( 为预先给定的要求精度)退出计算,运行后输出结果 2 x* ak bk,反之,返回步骤1,重复步骤1,2,3 2 二分法Mtalab程序 syms x; fun=input('(输入函数形式)fx='); a=input('(输入二分法下限)a='); b=input('(输入二分法上限)b='); d=i nput('输入误差限d=')%二分法求根%f=i nli ne(x A2-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为次数 例题: 用二分法计算方程|x4 2x3 4x 10 0在(-2,2)内的实根的近似值,要求精度为 0.0001 解:(输入函数形式)fx=x A4-2*x A3+4*x+10 (输入二分法下限)a=-2 (输入二分法上限)b=2 输入误差限d=0.0001 得到结果 d = 1.0000e-004 2.0000 >>