Я пытаюсь найти метод Newton-Raphson для поиска корней. Он делает это, делая предположение, а затем улучшая предположение после каждой итерации, пока не получите один из нулей.Ошибка цикла с методом Netwon-Raphson
Поскольку метод Ньютона-Рафсона быстро находит нули, он дает мне небольшую ошибку немедленно и после двух или трех итераций max он не должен удовлетворять условиям цикла while. Однако проблема заключается в том, что когда я удаляю полуточку после «ошибки» в моем цикле, я начинаю получать дроби, которые должны разорвать цикл while, но его, как Matlab, не знает, что 123/8328423
меньше 1
. Он продолжает работать до тех пор, пока я вручную не заставлю программу прекратить работу.
Как исправить это? Я пробовал формат long, формат longe и использовал double в командном окне, в файле scrip и где-то в цикле.
Благодарим вас за любые советы, предложения или советы, которые могут помочь!
A = [1,2,-4;2,-2,-2;-4,-2,1;];
format longe
% syms x y z
% P = x^4 + 3*x^2*y^2-z^3+y+1;
% feval(symengine,'degree',P,x)
syms x
B = mateigenvalue(A);
f(x) = simplify(matdet(B));
x0 = 1;
error = 10;
while(error > .01)
x1 = x0 - f(x0)/(27*(x0)-3*(x0)^2);
error = abs(((f(x0)-f(x1))/f(x0))*100)
x0 = x1;
end
x0 = double(x0)