基于文件
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 :(得分:1)
反射矩阵P.
相反,你可以像P = I - \tau v v^T
中那样得到v。
gsl_linalg_householder_hm应用PA转换,您必须先使用gsl_linalg_householder_transform
生成v