MATLAB帮助需要函数root

时间:2010-12-31 12:28:06

标签: matlab

我制作了一个节目,

function bisection;
x1=input('enter the first value=')
x2=input('enter the second value=')
%f3=[];

for x=1:20
    %x=1;
       x3=(x1+x2)/2;
    while x3-x1 >= 0.001

    f3(x)=x3^3 + x3^2 - 3*x3 - 3;
    f1(x)=x1^3 + x1^2 - 3*x1 - 3;

    if ((f3(x)*f1(x)) < 0)
    x2=x3;
    else
     x1=x3;
    end   
    break
 end


 format long
 f3'
 disp('The root is found to be =');
 x3
end

。 。 。 。 。 程序计算用户给出的区间(x1,x2)的函数,

我的程序编译并执行但很少重复,直到循环完成,我想在使用条件时实现所需的值时停止进一步打印循环。

1 个答案:

答案 0 :(得分:3)

Bisection method在以下方法中实现。要分析的函数以及间隔边界作为参数传递。

function bisection(f, x1, x2)

if f(x1)*f(x2) < 0  % check precondition sign(f(x1)*f(x2)) = -1
    while abs(x2-x1) >= 0.001
        x3=(x1+x2)/2;
        if ((f(x1)*f(x3)) < 0)
            x2 = x3;
        elseif ((f(x2)*f(x3)) < 0)
            x1 = x3;
        else
            break
        end
    end

    fprintf('The root is found to be = %.3f\n', x3);
else
    fprintf('f(x1) and f(x2) must have opposite signs!\n')
end

Runner 是您的根查找任务的一部分。

format long

f = @(x) x^3 + x^2 - 3*x - 3;
x1=input('enter the first value=');
x2=input('enter the second value=');
bisection(f, x1, x2)