1. 程式人生 > >計算方法中方程的近似解法中二分法matlab實現

計算方法中方程的近似解法中二分法matlab實現

計算方法

方程的近似解法

二分法

fun.m中程式碼如下:

function fun(a,b,e)
%f是自定義的函式
%a為隔根區間左端點,b為隔根區間右端點,e為絕對誤差限
if nargin==2
    e=1.0e-6;
elseif nargin<2
    input('變數輸入錯誤!');
    return;
end
if a>=b
    input('隔根區間輸入錯誤!');
    return;
end
a1=a;
b1=b;
c1=(a1+b1)/2;
n=0;  %迭代計數器,初值為0
while  (b-a)/(2^(n)) >= 1/2*e
    c1
    if f(c1)==0
        c1
    elseif f(a1)*f(c1)>0
        a1=c1;
        c1=(a1+b1)/2;
        n=n+1;
    elseif f(b1)*f(c1)>0
        b1=c1;
        c1=(a1+b1)/2;
        n=n+1;
    end
end
n
 

f.m檔案為自己需要編寫的函式

例:用二分法求方程 x^3+4x^2-10=0在區間[1,2]內的根,要求絕對誤差不超過1/2*10^(-2)

則f.m檔案程式碼如下:

function y=f(x)
  y=x^3+4*x^2-10;

執行及結果:

 fun(1,2,10^(-2))

c1 =

    1.5000


y =

    1.4812


y =

    1.2599


y =

    1.4812


c1 =

    1.7500


y =

    1.5956


y =

    1.4812


y =

    1.5956


c1 =

    1.8750


y =

    1.6529


y =

    1.5956


y =

    1.6529


c1 =

    1.9375


y =

    1.6814


y =

    1.6529


y =

    1.6814


c1 =

    1.9688


y =

    1.6957


y =

    1.6814


y =

    1.6957


c1 =

    1.9844


y =

    1.7028


y =

    1.6957


y =

    1.7028


c1 =

    1.9922


y =

    1.7064


y =

    1.7028


y =

    1.7064


c1 =

    1.9961


y =

    1.7082


y =

    1.7064


y =

    1.7082


n =

     8