3

項のリストに変換したい mathematica 多項式関数があります。つまり、関数の場合

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

MonomialList ie を使用して、リストの形式で用語を取得できます。

   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 に答える