这是一个例子。我想知道是否有一般方法来处理这类问题。
假设我有一个函数(εℜ):
f[a_, n_Integer, m_Integer] := Sum[a^i k[i],{i,0,n}]^m
我需要一个闭合形式的系数a ^ p。什么是更好的方法?
注1 :在这种特殊情况下,人们可以手动尝试通过Multinomial[ ]
来表示总和,但似乎很难为可变数量的参数写下多项式术语而且,我希望Mma能够做到这一点。
注2 :当然
Collect[f[a, 3, 4], a]
会这样做,但仅适用于给定的m
和n
。
注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
答案 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
*)
这样做比计算整个表达式和提取系数更有效。
编辑此处列出的方法适用于符号订单n
和m
,但需要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]) *)