Я разрабатываю приложение, используя конструктор приложений MATLAB для решения нелинейных уравнений с использованием метода деления пополам.
Ниже приведена функция вызова кнопки для выполнения расчета и получения корня / решения. функции:
% Button pushed function: SolveButton
function SolveButtonPushed(app, event)
func = (app.func.Value);
a = (app.num1.Value);
b = (app.num2.Value);
error = (app.errortol.Value);
fx = 2*error; n = 0;
while ((abs(fx) > (error) )&(n<=100))
n=n+1;
x=a;
fa=eval(func);
x=(a+b)/2;
fx=eval(func);
if (sign(fx)==sign(fa))
a=x;
else
b=x;
end
end
var = linspace(a,b,50);
result = eval(func);
plot(app.UIAxes, var, result)
app.solution.Text=num2str(x);
end
Вот как выглядит интерфейс:
После запуска приложения я не могу получить точное решение, которое, я полагаю, получит, решивуравнение вручную или запустить тот же алгоритм в командном окне MATLAB.
function [x, n]=bisection(f, a, b, TOL, NO)
fx = 2*TOL; n = 0;
while ((abs(fx)>TOL)&&(n<=NO))
n=n+1;
x=a;
fa=eval(f);
x=(a+b)/2;
fx=eval(f);
if (sign(fx)==sign(fa))
a=x;
else
b=x;
end
end
Это из-за типов данных текстовых полей и меток? Я имею в виду, как я могу заставить приложение принимать отрицательные числа в полях ввода? Как я могу заставить приложение идентифицировать e как натуральное число в математике?