作业帮 > 综合 > 作业

matlab二分法编程

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/24 11:30:51
matlab二分法编程
用二分法求方程的根:x*x+53.99x-0.054=0
这是源代码:
在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)<delta,break,end
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