首页 > 解决方案 > 使用 numpy 进行类似的矩阵计算

问题描述

我正在尝试使用随机可逆矩阵 P 找到与 3 X 3 矩阵 :A 相似的矩阵 B 。B = P_inv.AP

import numpy as np
from scipy import linalg as LA
from numpy.linalg import inv

A = np.random.randint(1,10,9).reshape(3,3)
P = np.random.randn(3,3)
P_inv = inv(P)
eig1 = LA.eigvalsh(A)
eig1 = np.sort(eig1)

B1 = P_inv.dot(A)
B = B1.dot(P)
eig2 = LA.eigvalsh(B)
eig2 = np.sort(eig2)

print(np.round(eig1 ,3))
print(np.round(eig2,3))

但是,我知道 eig1 和 eig2 永远不会相等。我错过了什么,还是数字错误?

谢谢

凯达

标签: pythonnumpymatrix

解决方案


您正在使用eigvalsh,它要求矩阵是真正对称的(或复杂的 Hermitian),而您的随机生成的矩阵不是。

删除heigvals改用可以解决此问题。


推荐阅读