您的位置首页百科快答

matlab二分法编程

matlab二分法编程

的有关信息介绍如下:

matlab二分法编程

这是源代码:

在matlab中保存为:bisection.m

function rtn=bisection(fx,xa,xb,n,delta)

% 二分法解方程

% fx是由方程转化的关于x的函数,有fx=0。

% xa 解区间上限

% xb 解区间下限

%解区间人为判断输入

% n 最多循环步数,防止死循环。

%delta 为允许误差

x=xa;fa=eval(fx);

x=xb;fb=eval(fx);

disp(' [ n xa xb xc fc ]');

for i=1:n

xc=(xa+xb)/2;x=xc;fc=eval(fx);

X=[i,xa,xb,xc,fc];

disp(X),

if fc*fa<0

xb=xc;

else xa=xc;

end

if (xb-xa)

end

例子:用二分法求方程x3-x-1=0在区间[1,1.5]内的一个实根,要求两次近似值之间的误差不超过0.001。

>>f='x^3-x-1';

>>bisection(f,1,1.5,20,10^(-3))

[ n xa xb xc fc ]

1.0000 1.0000 1.5000 1.2500 -0.2969

2.0000 1.2500 1.5000 1.3750 0.2246

3.0000 1.2500 1.3750 1.3125 -0.0515

4.0000 1.3125 1.3750 1.3438 0.0826

5.0000 1.3125 1.3438 1.3281 0.0146

6.0000 1.3125 1.3281 1.3203 -0.0187

7.0000 1.3203 1.3281 1.3242 -0.0021

8.0000 1.3242 1.3281 1.3262 0.0062

9.0000 1.3242 1.3262 1.3252 0.0020

从结果可以看出,

这个解为:1.3262

本题的结果如下图:我选的区间为[0,1.5],你可以换个区间,再算出另一个根来(如果有的话)

x=0.0015