Решите повторение формы p [n, m] == p [n, m-2] + p [n-1, m-1] + p [n-2, m] - PullRequest
6 голосов
/ 05 октября 2010

Я пытаюсь решить (найти решение в закрытой форме) это (Калькулятор шансов на риск) отношение повторения:

p[n,m] == 2890/7776*p[n,m-2] + 2611/7776*p[n-1,m-1] + 2275/7776*p[n-2,m],
p[n,1] == 855/1296 + 441/1296*p[n-1,1],
p[3,m] == 295/1296*p[3,m-2] + 420/1296*p[2,m-1],
p[2,m] == 55/216,
p[1,m] == 0

Функция Matolmatica RSolve не работает (я уверен, что использую правильный синтаксис, так как я следую за примерами с двумя переменными в http://reference.wolfram.com/mathematica/ref/RSolve.html).

На самом деле, RSolve даже не решит эту "более простую" рекурсию:

p[n,m] == p[n,m-2] + p[n-1,m-1] + p[n-2,m],
p[0,m] == 1,
p[1,m] == 1,
p[n,1] == 1,
p[n,0] == 1

Есть ли что-то принципиально сложное в решении этого типа рекуррентное отношение или Mathematica просто ненадежна?

Точный пример, который я использую:

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

Возвращаемое значение совпадает с моим вводом, вплоть до некоторого манипулирования числами.

На странице документа она находится в разделе "Область действия", а затем "Уравнения частичной разности"

Ответы [ 2 ]

1 голос
/ 12 октября 2010

... только мои два цента, но разве эта система уравнений не ошибочна? I.e.:

p[n,m] == 2890/7776*p[n,m-2] + 2611/7776*p[n-1,m-1] + 2275/7776*p[n-2,m]

Например, давайте попробуем вычислить p [N, 2]:

p[N,2] = 2890/7776*p[N,0] + ...
       = 2890/7776*2890/7776*p[N,-2] + ...
       = ... p[N,-4] + ...

Полагаю, вы поняли мою точку зрения. Он никогда не достигнет начального условия для четного m. То же для:

p[3,m] == 295/1296*p[3,m-2] + ...

Напротив, начальное условие p[1,m] == 0 никогда не будет использовано. Возможно, добавление определения для p [n, 0] или p [n, 2] решит вашу проблему, сделав ее хорошо определенной.

0 голосов
/ 10 октября 2010

Отказ от ответственности: я знаю только небольшую линейную алгебру и немного исчисления. Я ничего не знаю о Вольфраме.

Возможно, в этом есть что-то принципиально сложное. Все примеры, на которые вы ссылались, проще, чем ваши. Например, посмотрите на этот пример:

RSolve[a[m + 1, n] - 3/4 a[m, n + 1] == 0, a[m, n], {m, n}]

Все a [m, n] находятся на прямой линии, m + n = k для некоторой константы k. Как, скажем, вы знаете [10,5]. Из этого вы можете вычислить [11,4], [12,3] и т. Д. Но все они на прямой линии. Вот почему вывод включает некоторую функцию m + n. Вы можете переписать его только с одной переменной и получить тот же эффект:

RSolve[{a[m + 1] - 3/4 a[m] == 0, m+n=k}, a[m], {m, n}]

Все примеры в этой ссылке тоже на прямой линии. Для каждого a [m, n], которое вам нужно знать, n всегда является функцией от m. Все, что имеет такую ​​форму, легко решить с помощью матриц линейной алгебры. (Дайте мне знать, если вы хотите знать, как это сделать.)

Для вас, однако, это не так. Ваш расширяется как дерево, а не как линия. Я думаю, что , что может быть трудностью.

Это напоминает мне разницу между частными производными и полными производными. Это может быть хорошей отправной точкой.

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