不动点迭代在matlab中的实现
我想做一个程序,用不动点迭代计算函数的根。函数是fixpoint_迭代(f,s),而f已经是fixpoint函数(例如x=2*x^2),s是起始值。到目前为止,我的代码是:不动点迭代在matlab中的实现,matlab,Matlab,我想做一个程序,用不动点迭代计算函数的根。函数是fixpoint_迭代(f,s),而f已经是fixpoint函数(例如x=2*x^2),s是起始值。到目前为止,我的代码是: while 1 xn = eval(subs(g,x)); if abs(xn-x) < 0.0000001 disp(xn); break end x = xn; end 1 xn=eval(subs(g,x)); 如果abs(xn-x)
while 1
xn = eval(subs(g,x));
if abs(xn-x) < 0.0000001
disp(xn);
break
end
x = xn;
end
1
xn=eval(subs(g,x));
如果abs(xn-x)<0.0000001
disp(xn);
打破
结束
x=xn;
结束
我的问题是,它经常在一个无限循环中运行,我不知道为什么以及如何解决这个问题。例如,当我请求fixpoint_迭代(@(x)x^3+0.3,0)时,它会给我一个正确的根,但当我使用其他开始值时,我无法找到其他根,因为它总是找到相同的根,并且经常以无限循环结束。您是否尝试过使用调试器逐步检查代码?也许你可以通过观察你的值在循环中的变化来了解发生了什么。我已经试着在while循环中观察xn值了。当涉及到无限循环时,它们上升到无穷大。但我没能解决这个问题。