求解形式p [n,m] == p [n,m-2] + p [n-1,m-1] + p [n-2,m]的重现

bar*_*ter 6 recursion wolfram-mathematica

我正试图解决(找到一个封闭形式的解决方案)这个(风险赔率计算器)递归关系:

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
Run Code Online (Sandbox Code Playgroud)

Mathematica的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
Run Code Online (Sandbox Code Playgroud)

解决这种类型的递归关系是否存在根本性的困难,或者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}]
Run Code Online (Sandbox Code Playgroud)

返回值与我的输入相同,直到一些数字杂耍.

在doc页面上,它位于"Scope"下,然后是"Partial Difference Equations"

Eya*_*yal 0

免责声明:我只懂一点线性代数和一些微积分。我对沃尔弗拉姆一无所知。

可能有一些根本性的困难。您链接到的示例都比您的更容易。例如,看看这个例子:

RSolve[a[m + 1, n] - 3/4 a[m, n + 1] == 0, a[m, n], {m, n}]
Run Code Online (Sandbox Code Playgroud)

所有 a[m,n] 都在一条直线上,对于某个常数 k,m+n=k。就像说你知道a[10,5]。由此你可以计算 a[11,4]、a[12,3] 等。但它们都在一条直线上。这就是为什么输出包含一些 m+n 函数的原因。您可以仅用一个变量重写它并获得相同的效果:

RSolve[{a[m + 1] - 3/4 a[m] == 0, m+n=k}, a[m], {m, n}]
Run Code Online (Sandbox Code Playgroud)

该链接中的所有示例也都在一条直线上。对于您需要知道的每个 a[m,n],n 始终是 m 的函数。任何这种形式的问题都很容易用线性代数矩阵来解决。(如果您想知道如何执行这些操作,请告诉我。)

然而,对于你来说,情况并非如此。你的扩展像一棵树,而不是像一条线。我想可能就是困难所在。

这让我想起了偏导数和全导数之间的区别。这可能是一个很好的起点。

  • 这些仍然不像所有其他示例那样处于一条直线上。为什么你还需要它?只是个人挑战吗?如果您确实需要计算它,您只需记住 100x100 结果即可。 (2认同)