2016-11-06 5 views
0

ベクトル(デルタV)の勾配はどのようにして3x3行列になりますか?そして、その固有値をどのように効率的に計算しますか?これを行うことができるC++ライブラリがありますか(C++ライブラリEigenはこれを行うことができますか?)ベクトル値関数の勾配の固有値

+0

https://en.wikipedia.org/wiki/Gradient#Gradient_of_a_vector。そして、固有値は行列の固有値を計算することができます...それを使用するか、またはアルマジロなどの別のライブラリ – coincoin

+0

はい、私はその記事を読んでいます。勾配は単一の行ベクトルですが、どのように3x3になりますか? Eigenにベクトルを与えると、それを3x3行列に変換できますか? – user6682440

+0

は3次元で異なる導関数を持つためです。そして、自分でマトリックスをレンダリングする必要はありません。 – coincoin

答えて

1

gradientは、複数の変数を持つ関数の導関数の一般化です。関数のすべての偏微分で構成されているため、各変数には1つの微係数があります。 スカラーについて

  • が N変数関数scalar y = f(x1, ..., xN)を大切に、勾配は、N個のスカラー要素とベクトルです。 ベクターにさらにそれを一般

  • が機能vector y = f(x1, ..., xN)、(ベクトルはN個の要素を有し、機能がNスカラ変数を有する場合に)評価さ、勾配は、N個のベクトル要素とベクトルとして考えることができます。実際にNxN要素を持つ行列で、Jacobianとも呼ばれます。

この場合、関数はvector3 y = f(x1, x2, x3)のようにする必要があります。したがって、グラデーションは3x3行列です。

他の任意の行列と同様に、その固有値を計算することができます。 Eigen decompositionを使用してください。その名前が示すように、Eigen線形代数ライブラリはそのような機能を提供します。

+0

一般に、任意のベクトル場の導関数から形成される行列は対称ではないことには、おそらく注目する価値があります。これは、その行列の固有分解が複素数を含む可能性があることを意味します。一方、ベクトル自体がスカラー関数の派生であった場合、2次導関数の行列は対称であり、実数の半分の固有値になります。 – rwp

関連する問題