c - 使用 GSL 构建 3x3 反射矩阵

标签 c math matrix linear-algebra

基于文档

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/

相关文章:

sql-server - 查找一组 3d 点的相关子集

objective-c - S 曲线的向量数学函数

algorithm - 线性递归算法中的矩阵求幂

c++ - 将 UNALIGNED MSVC 特定代码转换为可移植 C++ 代码?

c - C 中未读取整个文件(意外出现 EOF)

c - 在不交换数据的情况下交换链表中的节点

r - 根据R中的另一个矩阵/df替换df/matrix中的值

c - 编写可移植 C 时要考虑什么?

php - acos(1) 在某些情况下返回 NAN

python - 如何从文件中提取非常大的 HDF5 数据集并写入另一个文件?