Определение рекурсивной функции в Mathematica - PullRequest
2 голосов
/ 18 апреля 2011

Mathematica может решать рекурсивные уравнения с помощью RSolve. Можно ли иметь функцию, определяемую рецидивом, независимо от того, может ли рецидив быть решен аналитически или нет?

Ответы [ 2 ]

6 голосов
/ 18 апреля 2011

Да. Посмотрите на RecurrenceTable. Можно также запрограммировать определение функции по ее рекуррентному уравнению, факториал - самый простой пример.

In[94]:= fac[1] = 1;
fac[k_Integer?Positive] := k*fac[k - 1]

In[96]:= fac[10]

Out[96]= 3628800

In[97]:= Function[If[#1 == 1, 1, #1*#0[#1 - 1]]][10]

Out[97]= 3628800

In[100]:= RecurrenceTable[
 f[k] == k f[k - 1] && f[1] == 1, f, {k, 1, 10}]

Out[100]= {1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800}
0 голосов
/ 18 апреля 2011

Я на секунду задумался, для чего нужен RecurrenceTable, пока не переписал пример Саши с помощью NestList:

Rest@NestList[{1, 0} + First@# {1, Last@#} &, {1, 1}, 10][[All, -1]]

{1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800}

Если задействовать k (First @ #) сложно, RecurrenceTable может быть намного проще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...