如何在C中使用lapack构建特征向量

问题描述 投票:0回答:1

我正在 C 代码中使用 lapacke 研究特征向量,我想知道当特征值有虚部时它们是如何构建的?我的意思是我必须在同一维度上进行 malloc,就好像它们是真实的一样,那么特征向量是如何构建的?

谢谢你

c lapack eigenvector
1个回答
0
投票

如果矩阵是实数、双精度,则可以使用 LAPACKE 中的

LAPACKE_dgeev()
在 C 中执行查找此类通用矩阵的特征值和特征向量。 LAPACKE 是 LAPACK 的接口。因此,有关 dgeev()
 函数的 
文档可能会回答您的问题:

如果第 j 个特征值是实数,则 v(j) = VR(:,j), VR 的第 j 列。 如果第 j 个和 (j+1)-st 特征值形成复数 共轭对,则 v(j) = VR(:,j) + i*VR(:,j+1) 且 v(j+1) = VR(:,j) - i*VR(:,j+1).

虽然特征值的实部和复数部分存储在两个不同的数组

WR
WI
中,但特征向量(包括具有复数部分的特征向量)完全存储在大小为NxN的实数双精度数组中。这是可能的,因为对应于一对复共轭特征值的特征向量是彼此的逐点复共轭。

英特尔代码示例
提供了一个示例,展示了如何处理由LAPACKE_dgeev()

找到的复杂特征向量

这种交错技术也是 LAPACK

sgeev()
中的特色,适用于单精度实数通用矩阵。

© www.soinside.com 2019 - 2024. All rights reserved.