基于文档
http://www.gnu.org/software/gsl/manual/html_node/Householder-Transformations.html
和
http://en.wikipedia.org/wiki/Householder_transformation
我认为以下代码将成功生成与单位 vector 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 变换的函数,而无需实际查找矩阵。我实际上需要我的案例中的矩阵来进行其他工作。]
最佳答案
反射矩阵 P 永远不会形成。
相反,您会得到 v,如 P = I -\tau v v^T
。
gsl_linalg_householder_hm 应用 PA 变换,您必须先使用 gsl_linalg_householder_transform
生成 v
关于c - 使用 GSL 构建 3x3 反射矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3384990/