2016-10-30 2 views
-2

Я написал следующий код для метода половинного деления:Bisection Метод: Недостаточно входы ошибки

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

ответ

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

Смежные вопросы