【发布时间】:2016-02-28 09:59:02
【问题描述】:
我正在尝试使用 Newton-Raphson 方法来查找根源。它通过猜测,然后在每次迭代后改进猜测,直到你得到一个零。
因为 Newton-Raphson 方法可以快速找到零点,所以它会立即给我一个小错误,并且在最多两到三个迭代后它应该无法满足 while 循环的条件。但是,问题是当我在循环中删除“错误”之后的分号时,我开始得到应该打破 while 循环的分数,但它就像 Matlab 不知道 123/8328423 小于 1 .它会继续运行,直到我手动强制程序停止运行。
我该如何解决这个问题?我在命令窗口、脚本文件和循环中的某处尝试了长格式、长格式和双精度。
提前感谢您提供任何可能有帮助的提示、建议或建议!
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)
【问题讨论】:
标签: matlab while-loop numerical-methods approximation termination