我有一个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
有没有简单的方法可以做到这一点?
答案 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}