2010-08-02 44 views
0

一個3x3的反射矩陣基於文件構建使用GSL

http://www.gnu.org/software/gsl/manual/html_node/Householder-Transformations.html

http://en.wikipedia.org/wiki/Householder_transformation

我想下面的代碼將成功打造出矩陣在平面正交反射單位矢量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轉換而不實際找到矩陣的函數。實際上我需要矩陣在我的情況下進行其他工作。]

+0

你肯定normal_vector真的是一個單位矢量? – 2010-08-02 04:36:24

+0

是的,在我發佈之前,我仔細檢查了一下。 – 2010-08-02 04:45:21

回答

1

反射矩陣P永遠不會形成。 取而代之,你會得到如P = I - \tau v v^T中的v。

gsl_linalg_householder_hm適用PA轉化,必須產生第V與gsl_linalg_householder_transform

+0

你說得對。我想這是一個我根本不理解文檔的例子。我仍然覺得文檔很混亂,所以也許這個問題會在未來幫助別人。 – 2010-08-02 04:58:51

+0

@Zac我同意。文檔看起來顛倒了,也讓我感到困惑 – Anycorn 2010-08-02 05:03:30