2011-05-16 35 views
2

这是一个例子。我想知道是否有一种通用的方法来处理这类问题。总结一个可变的整数:如何获得系数?

假设我有一个功能(ε ℜ):

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 @@ [email protected][r, n]) 
    Product[x[i]^r[i], {i, n}], 
    [email protected](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

你知道结果多项式的根吗?如果是这样,答案是微不足道的。 – abcd 2011-05-16 15:11:57

+0

@Yoda k [i]是我希望稍后使用来自其他近似值的这些系数的关系发现的一般函数。所以,不,根不知道:( – 2011-05-16 15:14:11

+0

'收集[f [a,3,4],a]'什么都不做,因为你已经定义了f把'Real'作为第一个参数,而不是符号 – 2011-05-16 15:25:29

回答

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价值。在这种情况下使用它时,最好用其Piecewise模拟(例如)模拟替换IfBoole

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]) *) 
+0

@Sasha:我认为belisarius想要一个表达式来处理一个未知的'm'和'n',而不是用值代替 – abcd 2011-05-16 18:34:25

+0

@yoda I认识到'm'和'n'不一定是明确的,只有'p'必须是,例如'With [{p = 7}, BellY [Table [{FactorialPower [m,s] k [0] ^(m-s), Boole [s = s] s [k]},{s,1,p}]]/p!]/ FactorialPower [m_,k_Integer]:>产品[m - i,{i,0,k - 1}]' – Sasha 2011-05-16 18:38:00

+0

@Sasha:这真的很整洁。我无法尝试,因为我没有mma8,但我删除了我的答案,因为我的声称它可能无法完成是不正确的 – abcd 2011-05-16 18:55:51

相关问题