我有一个简单的递归方程,其思想是给定x的起始值,跟踪x的未来值,以查看是否存在收敛。我在下面编写了一个简单的MATLAB代码,很明显,x很快收敛到稳态值0.0292。
x(1) = 0.2;
for t = 1:1:100
x(t+1) = 0.12*x(t).^0.40;
end
但是,对于更复杂的方程式,我认为我无法应用上述代码。例如,如果我有:
x(t+1) = 0.12*(x(t)./(x(t+1)+x(t))).^0.40
我如何“解决”它以查看(不尝试做任何代数运算以在右侧隔离x(t + 1))以查看x的路径是什么? 谢谢。
答案 0 :(得分:0)
如评论中所述,一种简单的方法是对x(t+1)
进行初步猜测,然后尝试收敛到x(t+1)
的解决方案,然后继续进行迭代。
recEq = @(p,q) 0.12 * (p ./ (q+p))^0.4;
x = nan(1, 100);
x(1) = 0.2;
for t = 1:100
kold = x(t);
k = recEq(x(t), kold);
while abs(k-kold) > 1e-8
kold = k;
k = recEq(x(t), kold);
end
x(t+1) = k;
end