Нахождение фиксированных точек итерационной карты - PullRequest
0 голосов
/ 05 апреля 2011

Мне нужно найти фиксированные точки итерационной карты x[n] == 1/2 x[n-1]^2 - Mu.
Мой подход:

Subscript[g, n_ ][Mu_, x_] :=  Nest[0.5 * x^2 - Mu, x, n]

fixedPoints[n_] := Solve[Subscript[g, n][Mu, x] == x, x]

Plot[
  Evaluate[{x, 
   Table[Subscript[g, 1][Mu, x], {Mu, 0.5, 4, 0.5}]}
  ], {x, 0, 0.5}, Frame -> True]

Ответы [ 3 ]

4 голосов
/ 05 апреля 2011

Я немного изменю обозначения (в основном, чтобы я сам мог это понять). Вы можете захотеть что-то вроде этого.

y[n_, mu_, x_] := Nest[#^2/2 - mu &, x, n]
fixedPoints[n_] := Solve[y[n, mu, x] == x, x]

Существенной особенностью является то, что вложенная «функция» теперь действительно является функцией в правильном формате.

Пример:

fixedPoints[2]

Out[18]= {{x -> -1 - Sqrt[-3 + 2*mu]}, 
          {x -> -1 + Sqrt[-3 + 2*mu]}, 
          {x ->  1 - Sqrt[ 1 + 2*mu]}, 
          {x ->  1 + Sqrt[ 1 + 2*mu]}}

Даниэль Лихтблау

3 голосов
/ 05 апреля 2011

Прежде всего, ошибка в вашем подходе. Гнездо берет чистую функцию. Также я бы использовал точный ввод, т. Е. 1/2 вместо 0,5, поскольку Solve является символическим, а не числовым решателем.

Subscript[g, n_Integer][Mu_, x_] := Nest[Function[z, 1/2 z^2 - Mu], x, n]

Тогда

In[17]:= fixedPoints[1]

Out[17]= {{x -> 1 - Sqrt[1 + 2 Mu]}, {x -> 1 + Sqrt[1 + 2 Mu]}}
0 голосов
/ 06 апреля 2011

Примечание:

Посмотрите, что происходит, когда вы начинаете очень близко к фиксированной точке (странно :):

f[z_, Mu_, n_] := Abs[N@Nest[1/2 #^2 - Mu &, z, n] - z]

g[mu_] := f[1 + Sqrt[1 + 2*mu] - mu 10^-8, mu, 10^4]

Plot[g[mu], {mu, 0, 3}, PlotRange -> {0, 7}]  

enter image description here

Редактировать

На самом деле, похоже, у вас есть автоподобная структура:

enter image description here

...