Wolfram mathematica Mathematica将多项式函数转换为列表并从中提取术语

Wolfram mathematica Mathematica将多项式函数转换为列表并从中提取术语,wolfram-mathematica,Wolfram Mathematica,我有一个mathematica多项式函数,我想把它转换成一个术语列表。即 函数 v[a_,b_,c_]:=a^2+b^2+c^2 通过使用单项式列表,我可以得到列表形式的术语 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 有什么简单的方法可以做

我有一个mathematica多项式函数,我想把它转换成一个术语列表。即 函数

   v[a_,b_,c_]:=a^2+b^2+c^2
通过使用单项式列表,我可以得到列表形式的术语

   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
有什么简单的方法可以做到这一点吗?

例如

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}
*)

我没有理由不预先计算列表,比如:

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]
vf
的定义:

Definition[vf]

谢谢此外,只需将设置的延迟符号“:=”替换为设置的符号“=”就可以了,即vl[a,b,c]=MonomialList[v[a,b,c]]
Definition[vf]
vf[a_, b_, c_] = {a^2, b^2, c^2}