Как мне получить Maxima для хранения выходных данных функции? - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть функция логистической карты в Maxima, например:

F(x,r,n):= x[n]=r*x[n-1]*(1-x[n-1]);

И когда я ввожу правильные переменные, это дает мне ответ, например, на x [0]:

(%i15)  n:0$
x[n-1]:[0.1]$
F(x, r:3, n);
(%o15)  x[0]=[0.27]

Однако этот ответ не запоминается, и когда я ввожу x [0], я получаю

    x[0];
(%o5)   x[0]

Как мне написать функцию, которая вычислит для меня x [n] и сохранит ее впамять, так что я могу использовать это позже?Я пытаюсь сделать бифуркационную диаграмму для логистической карты без использования каких-либо черных ящиков, т.е. функций орбит.

Спасибо!

1 Ответ

0 голосов
/ 25 февраля 2019

Есть разные способы сделать это.Одним простым способом является создание списка, а затем итерация, вычисление его элементов один за другим.Например:

(%i4) x: makelist (0, 10);
(%o4)            [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
(%i5) x[1]: 0.1;
(%o5)                          0.1
(%i6) r: 3;                       
(%o6)                           3
(%i7) for i:2 thru 10 do x[i]: r * x[i - 1] * (1 - x[i - 1]);
(%o7)                         done
(%i8) x; 
(%o8) [0.1, 0.2700000000000001, 0.5913000000000002, 
0.7249929299999999, 0.5981345443500454, 0.7211088336156269, 
0.603332651091411, 0.7179670896552621, 0.6074710434816448, 
0.7153499244388992]

Обратите внимание, что : является оператором присваивания, а не =.

...