Mathematica-将多项式函数转换为列表并从中提取项

时间:2012-08-02 18:03:18

标签: wolfram-mathematica

我有一个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

有没有简单的方法可以做到这一点?

2 个答案:

答案 0 :(得分: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}
*)

答案 1 :(得分: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}