計算方法中方程的近似解法中二分法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