2012-08-02 85 views
3

我有一個數學多項式函數,我想將其轉換爲術語列表。即 的功能Mathematica-將多項式函數轉換爲列表並從中提取項

v[a_,b_,c_]:=a^2+b^2+c^2 

我可以用MonomialList即

vl[a_,b_,c_]:=MonomialList[v[a,b,c]] 

這使我得到一個列表的形式條款:

vl[a,b,c]={a^2,b^2,c^2}; 

現在我想從這些術語中分別製作功能,以便我得到:

vl[1,1,1]={1,1,1} 

而不是

vl[1,1,1]=3 

有沒有簡單的方法來做到這一點?

回答

1

例如

v[a_, b_, c_] := a^2 + b^2 + c^2 
vl[a_, b_, c_] := Module[{x, y, z}, 
         MonomialList[v[x, y, z]] /. {x -> a, y -> b, z -> c}] 
vl[1, 1, 1] 
(* 
-> {1,1,1} 
*) 
+0

謝謝!而且,只用集合符號'='代替集合延遲符號':='也就是v1 [a_,b_,c_] = MonomialList [v [a,b,c]] – user1572202 2012-08-03 14:09:07

1

我沒有看到一個理由不預先計算的列表,像這樣:

v[a_, b_, c_] := a^2 + b^2 + c^2 

Block[{a, b, c}, 
vf[a_, b_, c_] = MonomialList[v[a, b, c]]; 
] 

測試:

vf[q, r, s] 
vf[1, 1, 1] 
{q^2, r^2, s^2} 

{1, 1, 1} 

vf定義:

Definition[vf] 
vf[a_, b_, c_] = {a^2, b^2, c^2}