多変数多項式の係数を抽出するMapleプログラムの例

多変数多項式の係数を抽出する Maple プログラムの例。

# 多変数多項式の係数の抽出
myCoeffTable := proc()
  local (
    f,     # 与えられた多項式
    coef,  # 係数
    var,   # 変数
    dim,   # 変数の数
    deg,   # 多項式の次数
    i, j, k, B, T, nv, nvseq, c
  );

  f := args[1];
  var := args[2];
  dim := nops(var);
  deg := degree(f);

  B := [seq([seq(i, i=0..deg)], i=1..dim)];
  T := combinat[cartprod](B);  # [0,..,0]→…→[deg,..,deg]
  while not T[finished] do
    nv := ListTools[Reverse](T[nextvalue]());
    nvseq := seq(nv[i], i=1..nops(nv));
    c[0] := f;
    for j from 1 to dim do
      c[j] := coeff(c[j-1], var[j], nv[j]);
    end do;
    coef[nvseq] := c[dim];
  end do:
  coef;
end proc:

f := 2*x^2 - 3*y^2 + z^2
     - 8*y*z - 12*z*x + 4*x*y
     + 20*x + 12*y + 8*z - 36;
coefxyz := myCoeffTable(f, [x,y,z]):
coefxyz[2,0,0],  # x^2 の係数
coefxyz[0,2,0],  # y^2 の係数
coefxyz[0,0,2],  # z^2 の係数
coefxyz[0,1,1],  # y*z の係数
coefxyz[1,0,1],  # z*x の係数
coefxyz[1,1,0],  # x*y の係数
coefxyz[1,0,0],  # x の係数
coefxyz[0,1,0],  # y の係数
coefxyz[0,0,1],  # z の係数
coefxyz[0,0,0];  # 定数項

【theme : 数学
【genre : 学問・文化・芸術

プロフィール

よしいず

Author:よしいず
MATHEMATICS.PDFというウェブサイトを運営しています。

管理の都合上、トラックバックとコメントはオフにしてあります。ブログ経験者なら分かっていただけると思いますが、スパム(アダルトやその他の宣伝)ばかりなのが現実です。

リンクは自由です。当サイトの記事に対する間違いの指摘・意見・感想などを述べた記事からのリンクは歓迎です。ただし、ブログ記事アップ直後はミスが多く、頻繁に修正します。場合によっては削除する可能性もあります。その際、何も断りもなく修正・削除しますがご了承ください。内容を参考にする場合には投稿後一週間ほど様子を見てからにしてください(笑)。

記事の間違いを指摘するときは、その具体的箇所、理由(仕様に反するなど)・根拠(参考にした文献など)、代替案(同じ結果を得るための正しいやり方)も教えてください。そうしないと、(指摘される側および第三者はその時点では無知の状態なので、)どこが間違いなのか分かりませんし、本当に間違っているのかどうかが判断・検証できません。実際、間違いだと指摘されたことが結局は正しかったというケースもありますので。

このブログのタイトル一覧

リンク
月別アーカイブ
カテゴリ
最新記事
検索フォーム
RSSリンクの表示