我需要找到这个矩阵的特征值,类似这样的矩阵(空格表示分隔符):
[[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()
给出错误“无法将复数转换为浮动”。
可能是什么原因,我如何找到特征值?
答案 0 :(得分:1)
正如不止一位评论者所解释的那样,您的矩阵可以与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]
答案 1 :(得分:-1)
在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)