我有一个二维递推方程,帮我解决这个问题:
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序列与我的非常相似!
答案 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。
使用生成功能
我相信你可以将你的二维差分方程转换成类似
的方法这可能有助于您的分析。然而,作为说明性比较,可以考虑形式的差异方程
可以转换为生成函数的以下微分方程:
有以下形式的解决方案: