提问人:Brunodu94 提问时间:10/29/2023 更新时间:10/29/2023 访问量:20
如何在 C 中使用 lapack 构建特征向量
How are built eigenvectors with lapack in C
问:
我正在 C 代码中使用 lapacke 处理特征向量,我想知道当特征值具有虚部时如何构建它们?我的意思是,我必须在相同的维度上进行 malloc,就好像它们只是真实的一样,那么特征向量是如何构建的呢?
谢谢
答:
0赞
francis
11/25/2023
#1
如果矩阵是实数,则可以使用 LAPACKE 在 C 中查找这种一般矩阵的特征值和特征向量。LAPACKE 是 LAPACK 的接口。因此,有关该函数的文档可能会回答您的问题:LAPACKE_dgeev()
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)。
虽然特征值的实部和复部存储在两个不同的数组中,并且 的特征向量(包括具有复部分的特征)完全存储在大小为 NxN 的实双精度数组中。这是可能的,因为对应于一对复共轭特征值的特征向量是彼此的逐点复共轭。WR
WI
此英特尔代码示例中提供了一个示例,展示了如何处理 找到的复杂特征向量LAPACKE_dgeev()
这种交错技术在LAPACK中也用于单精度实一般矩阵。sgeev()
评论