python - 使用 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 永远不会相等。我错过了什么,还是数字错误?
谢谢
凯达
解决方案
您正在使用eigvalsh
,它要求矩阵是真正对称的(或复杂的 Hermitian),而您的随机生成的矩阵不是。
删除h
并eigvals
改用可以解决此问题。
推荐阅读
- shell - 在不关闭 vim 编辑器的情况下切换文件
- ios - Xcode Projects 的模拟器是空白的
- scala - Jsoup 按包含单引号的属性选择(Scala)
- java - Android 应用程序无法再访问服务器文件
- jquery - 为什么在 MVC 应用程序中多次加载部分?
- python - Python 2 xml.dom - 更改元素前缀
- vba - 对于每个形状宏不会在 PowerPoint VBA 中一次删除所有形状
- php - 不工作!==NULL
- javascript - 在 JavaScript 中创建 SOAP XMLHttpRequest 请求
- wordpress - Watson Assistant Wordpress 聊天插件不关注/滚动到最新消息