質問

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

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

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

それが役立つ場合、2D空間で作業しています。普通の古いxとy。また、これには係数に変換行列を乗算する必要があると思いますか?座標系間のスケール/変換係数を組み込むことはできますか?それはこの行列の逆でしょうか?私は正しい方向に向かっているように感じます...

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

役に立ちましたか?

解決

問題の説明は少し不明瞭なので、最初にそれについての私自身の解釈を明確にします:

多項式関数があります

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 、列ベクトル c C i 係数で類似しており、行列 T は( i、j)-th [i th row、j th column]エントリ t ij p>

  t ij =( j i を選択) a i b ji

Where( j select i )は二項係数で、 i >の場合= 0 j 。また、標準のマトリックスとは異なり、i、jの範囲はそれぞれ0〜n(通常は1から始まります)であると考えています。

これは、基本的にz = ax + bを手で差し込んで二項定理

他のヒント

Tylerの答えは、変数z = ax + bのこの変化を何度も計算する必要がある場合に正しい答えです(多くの異なる多項式を意味します)。一方、一度だけ行う必要がある場合は、マトリックスの係数の計算と最終評価を組み合わせる方がはるかに高速です。それを行う最良の方法は、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が指摘しているように、座標の一般的な変更は多項式を与えません。

Technical note :マトリックスT(Tylerの定義による)を引き続き計算する場合は、Pascalのルールの加重バージョンを使用して計算する必要があります(これはHö rner計算は暗黙的に行われます):

t i、j = b t i、j-1 + a t i-1、j-1

この方法では、列ごとに左から右に単純に計算します。

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

次の方程式があります:

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

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

ax ^ 3 + bx ^ 2 + cx + d

そして、w = px + qの異なるw-spaceに変換したい

次に、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 '

行列の問題として書き直して解決できます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top