例:用二分法算法 (取[a,b]=[1,2]) 解算非线性方程 x^3-x-1=0 的根。
程序代码:
mabisec.m
function x = mabisec(fun,a,b,ep)
k = 0;
x = (a+b)/2.0;
while abs(feval(fun,x))>ep||(b-a>ep)
if feval(fun,x)*feval(fun,a)<0
b = x;
else
a = x;
end
k= k+1 %此处两行不加分号可输出全部中间结果
x = (a+b)/2.0
end
运行代码:
>> x=mabisec(inline('x^3-x-1'),1,2,1e-3)
%包含方程,区间,精度
运行结果:
k =
1
x =
1.2500
k =
2
x =
1.3750
k =
3
x =
1.3125
| k =
4
x =
1.3438
k =
5
x =
1.3281
k =
6
x =
1.3203
| k =
7
x =
1.3242
k =
8
x =
1.3262
k =
9
x =
1.3252
| k =
10
x =
1.3247 |
最终结果为:
k =
10
x =
1.3247
程序共计算10次,由于达到精度而终止,方程的近似根为x =1.3247。