Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
不动点迭代在matlab中的实现_Matlab - Fatal编程技术网

不动点迭代在matlab中的实现

不动点迭代在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)

我想做一个程序,用不动点迭代计算函数的根。函数是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)<0.0000001
disp(xn);
打破
结束
x=xn;
结束

我的问题是,它经常在一个无限循环中运行,我不知道为什么以及如何解决这个问题。例如,当我请求fixpoint_迭代(@(x)x^3+0.3,0)时,它会给我一个正确的根,但当我使用其他开始值时,我无法找到其他根,因为它总是找到相同的根,并且经常以无限循环结束。

您是否尝试过使用调试器逐步检查代码?也许你可以通过观察你的值在循环中的变化来了解发生了什么。我已经试着在while循环中观察xn值了。当涉及到无限循环时,它们上升到无穷大。但我没能解决这个问题。