上周我问了以下问题: https://stackoverflow.com/questions/32658199/vectorizing-gibbs-sampler-in-matlab 也许我不想清楚我想做什么,所以这可能会更清楚。 我想向" for"在matlab中循环,其中循环内的一些变量是双向相关的。所以,这是一个例子:
A=2;
B=3;
for i=1:10000
A=3*B;
B=exp(A*(-1/2))
end
再次感谢你的时间。
答案 0 :(得分:2)
快速Excel计算表明这很快收敛到0.483908(经过少于10000次循环后 - 所以加速它的一种方法是检查收敛)。如果 A 和 B 分别始终为2和3,则可以使用此值替换循环。
或者,使用某些系列分析,当 i 很大时,您可以为 B 提供解析表达式 - 尽管嵌套的指数派生这是一个超出我自己的能力!
修改强>
一些谷歌搜索显示this。维基百科指出,对于 x 到无穷大(即 x ^ x ^ x ^ x ^ x ... )的分类,解决方案 y 满足 y = x ^ y 。在您的情况下,例如,0.483908 = e ^( - 3/2)^ 0.483908,因此0.483908是一个解决方案。不知道如何利用这个。
维基百科也给出了收敛条件,这可能对您有用:x位于e ^ -e和e ^ 1 / e之间。
最终编辑(?)
事实证明,你需要Lambert的W函数来求解 y = x ^ y 形式的方程。似乎没有本机功能,但FileExchange中似乎有一些内容 - 请参阅here和here。