Как решить для аналитического решения рекуррентного отношения в математике - PullRequest
3 голосов
/ 09 февраля 2011

У меня рецидив, такой как:

RSolve[{f[m, n] == f[m, n - 1] + f[m - 1, n], 
        f[0, n] == 1, f[m, 0] == 1}, 
        f[m, n], {n}]

Я пытался использовать RSolve, но получил ошибку:

RSolve::deqx: Supplied equations are not difference equations 
              of the given functions.

Ценю вашу помощь!

Ответы [ 2 ]

9 голосов
/ 09 февраля 2011

Разностное уравнение и начальные условия: difference equation

Mathematica (7 и 8) не любит ее решать ... как с начальными условиями, так и без них.Выражения RSolve оставлены без оценки

In[1]:= RSolve[{f[m,n]==f[m,n-1]+f[m-1,n],f[0,n]==f[m,0]==1},f[m,n],{m,n}]
        RSolve[{f[m,n]==f[m,n-1]+f[m-1,n]},f[m,n],{m,n}]
Out[1]= RSolve[{f[m,n]==f[-1+m,n]+f[m,-1+n],f[0,n]==f[m,0]==1},f[m,n],{m,n}]
Out[2]= RSolve[{f[m,n]==f[-1+m,n]+f[m,-1+n]},f[m,n],{m,n}]

Я знаю, что Mathematica использует генерирующие функциональные методы (возможно, среди прочего) для решения таких повторений, но я неЯ не знаю, почему это терпит неудачу в таком простом случае.

Итак, давайте сделаем это вручную.

Пусть g (x, n) будет производящей функцией для f (m, n)
enter image description here

Теперь рассмотрим сумму f (m + 1, n) x ^ m enter image description here

Теперь решим простое уравнение алгебраических разностей: enter image description here

Что также можно сделать с помощью RSolve

In[3]:= RSolve[g[x,n]-x g[x,n]==g[x,n-1]&&g[x,0]==1/(1-x),g[x,n],n];
        Simplify[%,Element[n,Integers]]
Out[4]= {{g[x,n]->(1-x)^(-1-n)}}

Теперь извлеките коэффициент x ^ m:

In[5]:= SeriesCoefficient[(1 - x)^(-1 - n), {x, 0, m}]
Out[5]= Piecewise[{{(-1)^m*Binomial[-1 - n, m], m >= 0}}, 0]

Бином для упрощения с использованием

In[6]:= FullSimplify[(-1)^m*Binomial[-n - 1, m] == Binomial[m + n, m], Element[{n,m}, Integers]&&m>0&&n>0 ]
Out[6]= True

Таким образом, мы наконец получаем Results!

Это можно проверить с помощью символических и числовых средств

In[7]:= ff[m_,n_]:=ff[m,n]=ff[m-1,n]+ff[m,n-1]
        ff[0,_]:=1;ff[_,0]:=1
In[9]:= And@@Flatten[Table[ff[m,n]==Binomial[n+m,m],{n,0,20},{m,0,20}]]
Out[9]= True

In[10]:= {f[m,n]==f[m,n-1]+f[m-1,n],f[0,n]==f[m,0]==1}/.f->(Binomial[#1+#2,#1]&)//FullSimplify
Out[10]= {True,True}
2 голосов
/ 09 февраля 2011

Не ответ, но кажется, что правильная форма должна быть (примечание {m, n} в конце):

RSolve[{f[m, n] == f[m, n - 1] + f[m - 1, n], f[0, n] == 1, f[m, 0] == 1}, f[m, n], {m, n}]

Mathematica оставляет это без оценки.Я думаю, что это просто не может решить это.

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