0


0

GSLを使用した3x3反射マトリックスの構築

文書に基づいて

and

次のコードは、単位ベクトル「normal_vector」に直交する平面での反射用のマトリックスを正常に生成すると考えました。

gsl_matrix * reflection = gsl_matrix_alloc(3, 3);
gsl_matrix_set_identity(reflection);
gsl_linalg_householder_hm(2, normal_vector, reflection);

しかし、私が知る限り、結果は反射行列ではありません。 特に私の場合、実固有値-(2 + 1/3)を持ちますが、これは反射行列では不可能です。

だから私の質問は次のとおりです。

{空}(1)何が間違っていますか? それは私にはうまくいくようだ。

(2)そのアプローチが機能しない場合、gslを使用してこのようなマトリックスを構築する方法を知っている人はいますか?

[最後の注意として、gslは、実際に行列を見つけることなくHouseholder変換を適用するための関数を提供することを理解しています。 私の場合、実際には他の作業のために行列が必要です。]

1 Answer


1


反射行列Pは決して形成されません。 代わりに、 `P = I-\ tau v v ^ T`のようにvを取得します。

gsl_linalg_householder_hmはPA変換を適用します。最初に `gsl_linalg_householder_transform`でvを生成する必要があります