Mathematica递归,解决定点

时间:2014-04-25 01:17:43

标签: recursion wolfram-mathematica recurrence evaluate

这是一个简单的问题,希望是一个简单的答案。 (免责声明:我是Mathematica的新手。)我试图找到差分方程的固定点。一个简单的例子是:

x[t_] := x[t] = (x[t - 1])^2
Solve[x[t] == x[t - 1], x[t - 1]]

它输出$RecursionLimit::reclim: Recursion depth of 1024 exceeded.所以我假设它同时递归取代x[t]x[t-1]?我试过了

Solve[x[t] == Hold[x[t - 1]], x[t - 1]]

但这并没有解决任何问题。如果只是在x[t-1]^2替换为x[t],它会发现它非常容易解决。关于如何轻推Mathematica的任何建议?

1 个答案:

答案 0 :(得分:0)

你有x [n + 1] = x [n] ^ 2。如果您只是将其作为重复发生攻击,那么您将获得无限递归。 (你最初的情况是什么?你没有指定一个,你一般不需要它来找到固定点。但是,所有M'ma都知道你有一些语法递归定义函数 - - 通过应用您编写的SetDelayed []来评估函数。)

但是,如果将此短语称为“y [x_]:= x ^ 2”,将更新重写规则与递归重写规则分开,则可以通过“y(x)= x”找到固定点:

Solve[y[x]==x,x]

事实上,这是构建寻找固定点问题的通用方法 - 当我使用更新功能对其进行操作时,输入的输入是什么?

假设你现在想要k周期点...

kPoints[k_] := Solve[Nest[y,x,k]==x,x]