使用GSL构建3x3反射矩阵

时间:2010-08-02 04:28:26

标签: c math matrix linear-algebra

基于文件

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转换而不实际找到矩阵的函数。我实际上需要在我的情况下使用矩阵进行其他工作。]

1 个答案:

答案 0 :(得分:1)

从未形成

反射矩阵P. 相反,你可以像P = I - \tau v v^T中那样得到v。

gsl_linalg_householder_hm应用PA转换,您必须先使用gsl_linalg_householder_transform生成v