基于matlab的二分法(Bisection method)查找(附代码)

基于matlab的二分法

  • 一、二分法定义
  • 二、二分法算法
  • 三、matlab实现

一、二分法定义

 二分法(Bisection method) 即一分为二的方法. 设[a,b]为R的闭区间. 逐次二分法就是造出如下的区间序列([an,bn]):a0=a,b0=b,且对任一自然数n,[an+1,bn+1]或者等于[an,cn],或者等于[cn,bn],其中cn表示[an,bn]的中点。

二、二分法算法

给定精确度 ξ ξ ξ,用二分法求函数 f ( x ) f(x) f(x)零点近似值的步骤如下:
 1.确定区间[a,b],验证 f ( a ) ⋅ f ( b ) < 0 f(a)·f(b)<0 f(a)f(b)<0,给定精确度 ξ ξ ξ.
 2.求区间(a,b)的中点c.
 3.计算 f ( c ) f(c) f(c).
  (1) 若 f ( c ) = 0 f(c)=0 f(c)=0,则c就是函数的零点;
  (2) 若 f ( a ) ⋅ f ( c ) < 0 f(a)·f(c)<0 f(a)f(c)<0,则令b=c;
  (3) 若 f ( c ) ⋅ f ( b ) < 0 f(c)·f(b)<0 f(c)f(b)<0,则令a=c.
  (4) 判断是否达到精确度ξ:即若 ∣ a − b ∣ < ξ |a-b|<ξ ab<ξ,则得到零点近似值a(或b)为近似c,否则重复step2-4。

三、matlab实现

%此程序是求x^3-x-1=0在[1,2]的误差不超过0.001的解。
x_up = 2;
x_down = 1;
error = 0.001;
res_down = x_down^3 - x_down - 1;
res_up = x_up^3 - x_up - 1;

while(res_down * res_up < 0)
        x = 0.5*(x_up + x_down);%求区间(a,b)的中点c.
        res = x^3 - x - 1;%计算f(c)
        
        if( res*res_down < 0 )
                x_up = x;% 若f(a)·f(c)<0,则令b=c;
        else
                x_down = x;%若f(c)·f(b)<0,则令a=c.
        end
        
        if( abs(x_up-x_down) < error ) %确定区间[a,b],验证f(a)·f(b)<0,给定精确度ξ.
                break;
        end
end

result_x = 0.5*(x_up + x_down)
%若有改动请改1,2,3,4,5,8行

你可能感兴趣的:(数学分析的常用软件,数学模型,Matlab,算法,线性代数,概率论)