求和至变量整数:如何获得系数?

时间:2011-05-16 14:37:46

标签: wolfram-mathematica

这是一个例子。我想知道是否有一般方法来处理这类问题。

假设我有一个函数(εℜ):

f[a_, n_Integer, m_Integer] := Sum[a^i k[i],{i,0,n}]^m  

enter image description here

我需要一个闭合形式的系数a ^ p。什么是更好的方法?

注1 :在这种特殊情况下,人们可以手动尝试通过Multinomial[ ]来表示总和,但似乎很难为可变数量的参数写下多项式术语而且,我希望Mma能够做到这一点。

注2 :当然

 Collect[f[a, 3, 4], a]  

会这样做,但仅适用于给定的mn

注3 :此问题与this other one有关。我的申请是不同的,但可能适用相同的方法。因此,您可以随意回答这两个问题。

注4

您可以使用以下函数对多项式定理建模:

f[n_, m_] := 
  Sum[KroneckerDelta[m - Sum[r[i], {i, n}]] 
   (Multinomial @@ Sequence@Array[r, n]) 
     Product[x[i]^r[i], {i, n}], 
  Evaluate@(Sequence @@ Table[{r[i], 0, m}, {i, 1, n}])];

所以,例如

f[2,3]    

是二项式的立方体

x[1]^3+ 3 x[1]^2 x[2]+ 3 x[1] x[2]^2+ x[2]^3

1 个答案:

答案 0 :(得分:5)

a^k系数可以被视为零k的导数,除以k!。在版本8中,有一个函数BellY,它允许在各个组件的衍生物中构造函数组合点的导数。基本上,对于f[g[x]]并在x==0左右展开,我们会发现Derivative[p][Function[x,f[g[x]]][0]

BellY[ Table[ { Derivative[k][f][g[0]], Derivative[k][g][0]}, {k, 1, p} ] ]/p!

这也称为广义贝尔多项式,见wiki

在手头的情况下:

f[a_, n_Integer, m_Integer] := Sum[a^i k[i], {i, 0, n}]^m

With[{n = 3, m = 4, p = 7}, 
  BellY[ Table[{FactorialPower[m, s] k[0]^(m - s), 
      If[s <= n, s! k[s], 0]}, {s, 1, p}]]/p!] // Distribute

(*
Out[80]= 4 k[1] k[2]^3 + 12 k[1]^2 k[2] k[3] + 12 k[0] k[2]^2 k[3] + 
 12 k[0] k[1] k[3]^2
*)

With[{n = 3, m = 4, p = 7}, Coefficient[f[a, n, m], a, p]]

(*
Out[81]= 4 k[1] k[2]^3 + 12 k[1]^2 k[2] k[3] + 12 k[0] k[2]^2 k[3] + 
 12 k[0] k[1] k[3]^2
*)  

这样做比计算整个表达式和提取系数更有效。


编辑此处列出的方法适用于符号订单nm,但需要p的显式值。在这种情况下使用时,最好将If替换为Piecewise类似物,例如Boole

With[{p = 2}, 
 BellY[Table[{FactorialPower[m, s] k[0]^(m - s), 
     Boole[s <= n] s! k[s]}, {s, 1, p}]]/p!]

(* 1/2 (Boole[1 <= n]^2 FactorialPower[m, 2] k[0]^(-2 + m)
     k[1]^2 + 2 m Boole[2 <= n] k[0]^(-1 + m) k[2]) *)