我想创建一个用固定点迭代计算函数根的程序。函数是fixpoint_iteration(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
我遇到的问题是它经常在无限循环中运行,我不知道为什么以及如何解决这个问题。例如,当我要求fixpoint_iteration(@(x)x ^ 3 + 0.3,0)时,它给了我一个正确的根,但是当我使用其他起始值时我无法找到其他根,因为它总是找到相同的根,通常以无限循环结束。