7

さまざまな行列演算を使用して、次数 'n' の多項式の係数を求める連立方程式を解きました。

Ax^(n-1) + Bx^(n-2) + ... + Z

次に、指定された x 範囲で多項式を評価します。基本的に、多項式曲線をレンダリングしています。これがキャッチです。この作業は、「データ空間」と呼ぶ 1 つの座標系で行いました。ここで、同じ曲線を別の座標空間に表示する必要があります。座標空間との間で入力/出力を変換するのは簡単ですが、エンド ユーザーは係数 [A,B,....,Z] だけに関心があります。これは、多項式を独自に再構築できるためです。異なる座標系で同じ形状の曲線を表す係数 [A',B',....,Z'] の 2 番目のセットをどのように提示できますか。

それが役立つ場合、私は 2D 空間で作業しています。昔ながらの x と y です。また、これには係数に変換行列を掛けることが含まれる可能性があると思いますか? 座標系間のスケール/変換係数を組み込むことはできますか? この行列の逆になりますか? いい方向に向かってる気がする…

更新: 座標系は線形に関連しています。有益な情報だったでしょう?

4

5 に答える 5

5

問題文が少し不明確なので、まず私自身の解釈を明確にします。

多項式関数があります

f(x) = C n x n + C n-1 x n-1 + ... + C 0

[以下の線形代数をより簡単に扱うために、A、B、... Z を C n、C n-1、...、C 0に変更しました。]

次に、同じ多項式   の係数を見つけるために使用するz = ax + bのような変換もありますが   、 zに関しては次のとおりです。

f(z) = D n z n + D n-1 z n-1 + ... + D 0

これは、いくつかの線形代数を使用して非常に簡単に行うことができます。特に、(n+1)×(n+1) 行列Tを定義して、行列の乗算を行うことができます。

  d = T * c

ここで、dは先頭のエントリD 0から最後のエントリD nまでの列ベクトルで、列ベクトルcC i係数と同様であり、行列Tは (i,j) 番目の [i番目の行、j番目の列] のエントリを持ちます。で与えられるt ij

  t ij = ( j choose i ) a i b j-i .

( j choose i ) は二項係数で、i > jの場合は = 0です。また、標準の行列とは異なり、i,j の範囲はそれぞれ 0 から n (通常は 1 から開始) であると考えています。

これは基本的に、手動で z=ax+b をプラグインして二項定理を使用する場合に、多項式の展開と再圧縮を書き出す良い方法です。

于 2008-09-26T23:03:45.880 に答える
3

この変数 z = ax+b の変化を何度も計算する必要がある場合 (つまり、多くの異なる多項式の場合)、Tyler の答えは正しい答えです。一方、一度だけ実行する必要がある場合は、行列の係数の計算と最終的な評価を組み合わせた方がはるかに高速です。これを行う最善の方法は、Hörner の方法によって点 (ax+b) で多項式を記号的に評価することです。

  • 多項式の係数をベクトル V (最初はすべての係数がゼロ) に格納し、i = n を 0 にするには、(ax+b) を掛けて C iを加算します。
  • C iを追加することは、それを定数項に追加することを意味します
  • (ax+b) を掛けるとは、すべての係数に b を掛けてベクトル K 1にし、すべての係数に a を掛けて、それらを定数項からベクトル K 2にシフトし、K 1 +K 2を V に戻すことを意味します。

これにより、プログラミングが容易になり、計算が高速になります。

y を w = cy+d に変更するのは非常に簡単です。最後に、mattiast が指摘しているように、一般的な座標の変更では多項式は得られません。

テクニカル ノート: それでも行列 T (Tyler によって定義されている) を計算する場合は、パスカルの規則の加重バージョンを使用して計算する必要があります (これは、Hörner 計算が暗黙的に行うことです)。

t i,j = bt i,j-1 + at i-1,j-1

このようにして、左から右へ、列ごとに単純に計算します。

于 2008-09-27T12:14:29.253 に答える
2

私があなたの質問を正しく理解していれば、座標を変更した後も関数が多項式のままであるという保証はありません。たとえば、y = x ^ 2とし、新しい座標系x'= y、y'=xとします。これで、方程式はy'= sqrt(x')になりますが、これは多項式ではありません。

于 2008-09-26T22:23:56.630 に答える
0

入力スペースが線形に関連している場合、はい、マトリックスは係数のセットを別のセットに変換できるはずです。たとえば、「元の」x 空間に多項式がある場合:

ax^3 + bx^2 + cx + d

そして、w = px+q である別の w 空間に変換したいと考えていました。

次に、a'、b'、c'、および d' を見つけたいとします。

ax^3 + bx^2 + cx + d = a'w^3 + b'w^2 + c'w + d'

そしていくつかの代数を使って、

a'w^3 + b'w^2 + c'w + d' = a'p^3x^3 + 3a'p^2qx^2 + 3a'pq^2x + a'q^3 + b'p ^2x^2 + 2b'pqx + b'q^2 + c'px + c'q + d'

したがって

a = a'p^3

b = 3a'p^2q + b'p^2

c = 3a'pq^2 + 2b'pq + c'p

d = a'q^3 + b'q^2 + c'q + d'

これは行列問題として書き直して解くことができます。

于 2008-09-26T19:45:32.813 に答える
0

あなたは方程式を持っています:

y = Ax^(n-1) + Bx^(n-2) + ... + Z

xy 空間で、x'y' 空間でそれが必要です。必要なのは、変換関数 f(x) = x' および g(y) = y' (または h(x') = x および j(y') = y) です。最初のケースでは、x について解決し、y について解決する必要があります。x と y を取得したら、それらの結果を元の方程式に代入して、y' について解くことができます。

これが自明であるかどうかは、ある空間から別の空間への変換に使用される関数の複雑さに依存します。たとえば、次のような方程式です。

5x = x' and 10y = y'

結果を解決するのは非常に簡単です

y' = 2Ax'^(n-1) + 2Bx'^(n-2) + ... + 10Z
于 2008-09-26T19:42:34.473 に答える