3

我有一个数学多项式函数,我想将其转换为术语列表。即对于一个函数

   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

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

4

2 回答 2

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}
*)
于 2012-08-02T18:33:58.077 回答
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}
于 2012-08-03T03:10:11.823 回答