形式为p [n,m] = p [n,m-1] + p [n-1,m] + p [n-1,m-1] *(n-1)的非常硬的二维递归关系

时间:2018-03-09 21:28:19

标签: math recursion wolfram-mathematica mathematica-8 dimensional

我有一个二维递推方程,帮我解决这个问题:

p[n,m]=p[n,m-1]+p[n-1,m]+p[n-1,m-1]*(n-1)

p[n,0]=1 

p[0,m]=0

p[0,0]=0

我为1< = n,m< = 6:

生成了这些数字

n行,m列

1 1 1 1 1 1

3 5 7 9 11 13

6 17 34 57 86 121

10 45 130 289 546 925

15 100 410 1219 2921 6030

21 196 1106 4375 13391 34026

首先我看到,p [n,1] = n *(n + 1)/ 2

接下来,修正n = 2,寻找p [n,i]和p [n,i-1]之间的差异。

他们都等于2 = 2! (记住那个)

现在,修正n = 3,同时寻找p [n,i]和p [n,i-1]之间的差异

我们有11个,16个,23个,29个。好的,现在寻找差异之间的差异:)

他们都等于6 = 3!

现在,修正n = 4,同样(hah)寻找p [n,i]和p [n,i-1]之间的差异

我们有35,85,159,257。寻找差异之间的差异。

我们有50,74,98。还要寻找差异之间的差异。

他们都等于24 = 4!

现在,修正n = 5,同样(hah)寻找p [n,i]和p [n,i-1]之间的差异

85,310,809,1702 - >

225,499,893 - >

274,394 - >

120 = 5!

等等......

现在一切都是:(

更新:我发现oeis序列与我的非常相似!

1 个答案:

答案 0 :(得分:1)

我怀疑这个差分方程的解非常强烈(因子?)发散,所以计算n,m大到10 ^ 5的值将是具有挑战性的。

显然(并且效率低下!)通过简单的重复计算p(n,m),如下所示(在Python中):

import numpy
n_max, m_max = 10, 10
p = numpy.zeros((n_max+1, m_max+1), dtype='int64')
p[:,0] = 1
p[0,:] = 0
p[0,0] = 0
for n in range(1, n_max+1):
    for m in range(1, m_max+1):
        p[n,m] = p[n, m-1] + p[n-1, m] + p[n-1, m-1] * (n-1)

这给出了p(n,m)的以下结果:

[[         0          0          0          0          0          0
           0          0          0          0          0]
 [         1          1          1          1          1          1
           1          1          1          1          1]
 [         1          3          5          7          9         11
          13         15         17         19         21]
 [         1          6         17         34         57         86
         121        162        209        262        321]
 [         1         10         45        130        289        546
         925       1450       2145       3034       4141]
 [         1         15        100        410       1219       2921
        6030      11180      19125      30739      47016]
 [         1         21        196       1106       4375      13391
       34026      75356     150381     276745     477456]
 [         1         28        350       2632      13643      53284
      167656     447168    1049685    2228716    4366642]
 [         1         36        582       5664      37731     186516
      727160    2347920    6527781   16104292   36071946]
 [         1         45        915      11235      94278     582642
     2801930   10967130   36278271  104604811  269511093]
 [         1         55       1375      20845     216238    1647382
     9693090   45877590  180860031  611969281 1822923673]]

,即使n = m = 10,也已包含一些相当大的值。将该计算扩展到n = m = 100,并使用浮点运算,表明p(100,100)可能大到5x10 ^ 172。

使用生成功能

enter image description here

我相信你可以将你的二维差分方程转换成类似

的方法

enter image description here

这可能有助于您的分析。然而,作为说明性比较,可以考虑形式的差异方程

enter image description here

可以转换为生成函数的以下微分方程:

enter image description here

有以下形式的解决方案:

enter image description here

显然,这样的生成函数在\alpha=0附近的泰勒展开性很差。