用python求复值矩阵的特征值



我需要找到这个矩阵的特征值,以及类似的矩阵(空格表示分隔符):

[[1.0000 -0.7071*I 0 -0.7071*I 0 0 0 0 0]    
 [0.7071*I 0.5000 -0.7071*I 0 -0.70710*I 0 0 0 0]    
 [0 0.7071*I 1.0000 0 0 -0.7071*I 0 0 0]   
 [0.7071*I 0 0 0.5000 -0.7071*I 0 -0.7071*I 0 0]    
 [0 0.7071*I 0 0.7071*I 0 -0.7071*I 0 -0.7071*I 0]    
 [0 0 0.7071*I 0 0.7071*I 0.5000 0 0 -0.7071*I]    
 [0 0 0 0.7071*I 0 0 1.0000 -0.7071*I 0]    
 [0 0 0 0 0.7071*I 0 0.7071*I 0.5000 -0.7071*I]    
 [0 0 0 0 0 0.7071*I 0 0.7071*I 1.000]]

错误:numpy.linalg.eigvalsh()给出错误"can't convert complex to float"

原因是什么,我如何找到特征值?

正如不止一个评论者所解释的那样,您的矩阵在eigvalsh中工作得很好。

import numpy as np
from numpy.linalg import eigvalsh
I = 1j
arr = np.array([[1.0000, -0.7071*I, 0, -0.7071*I, 0, 0, 0, 0, 0],
    [0.7071*I, 0.5000, -0.7071*I, 0, -0.70710*I, 0, 0, 0, 0],
    [0, 0.7071*I, 1.0000, 0, 0, -0.7071*I, 0, 0, 0],
    [0.7071*I, 0, 0, 0.5000, -0.7071*I, 0, -0.7071*I, 0, 0],
    [0, 0.7071*I, 0, 0.7071*I, 0, -0.7071*I, 0, -0.7071*I, 0],
    [0, 0, 0.7071*I, 0, 0.7071*I, 0.5000, 0, 0, -0.7071*I],
    [0, 0, 0, 0.7071*I, 0, 0, 1.0000, -0.7071*I, 0],
    [0, 0, 0, 0, 0.7071*I, 0, 0.7071*I, 0.5000, -0.7071*I],
    [0, 0, 0, 0, 0, 0.7071*I, 0, 0.7071*I, 1.000]])
# Ensure hermitian
assert(np.all(0 == (arr - np.conj(arr.T))))
print(eigvalsh(arr))
# outputs:
# [-1.56153421 -0.2807671  -0.2807671   0.5         0.5         1.          1.7807671  1.7807671   2.56153421]

在numpy中您可以免费获得

import numpy as np
matrix = np.array([[1+1j,0+1j],[0+1j,1+1j]])
eingenvalues,eigenvectors=np.linalg.eig(matrix)

会给你两个特征值和对应的特征向量

如果你真的只对特征值感兴趣,你可以使用

eingenvalues=np.linalg.eigvals(matrix)

相关内容

  • 没有找到相关文章

最新更新