在matlab中保存為:demimethod.m
function [x,k]=demimethod(a,b,f,emg)
% a,b :求解區間的兩個端點
% f :所求方程的函數名
% emg :精度指標
% x:所求近似解
% k: 循環次數
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=0;
while abs(b-a)>emg
if fab==0
x=(a+b)/2;
return;
elseif fa*fab<0
b=(a+b)/2;
else
a=(a+b)/2;
end
fa=feval(f,a);
fab=feval(f,(a+b)/2);
k=k+1;
end
x=(a+b)/2;
命令窗口輸入以下內容:
>> f=@(x)x^3-3*x+2-exp(x);
>> demimethod(-5,5,f,10^(-8))
ans =
-1.9846