二分法:没有足够的输入错误

时间:2016-10-30 20:00:46

标签: matlab

我为Bisection Method编写了以下代码:

f1=input('Enter the equation:','s');
f=inline(f1);
e1=input('Enter the first end:');
e2=input('Enter the first end:');
acc=input('Enter the accuracy:');
disp('*******************************');
m=(e1+e2)/2;
i=0;
while abs(f(m))>acc
    i=i+1;
    fprintf('%d)\t%f\tf(x)=%f\n',i,m,f(m));
    if (f(m)*f(e2))<0
        e1=m;
    else
        e2=m;
    end
    m=(e1+e2)/2;
end 
fprintf('%d)\t%f\tf(x)=%f\n',i,m,f(m));
disp ('************************');
fprintf('The root of equation by bisection method (Accuracy Type) = %f\n',m);

这适用于一些简单的方程式(Ex; x^2-6),但它不适用于复杂的方程式,例如:e-x(3.2 sin(x) - 0.5 cos(x))的区间[3, 4]。 我收到以下错误:

Error message

1 个答案:

答案 0 :(得分:0)

错误的原因是你错过了一些乘法符号(*)而e不是任何内置变量。

您输错了e-x(3.2 sin(x) - 0.5 cos(x))。它意味着像这样输入:

exp(1) - x*(3.2*sin(x) - 0.5*cos(x))

除此之外,在代码的第4行,您可能需要改为写下:
e2=input('Enter the last end:'); last 而不是 first