Numpy特征向量约定发生奇怪的变化

问题描述

好的,所以我有两个非常非常相似的36x36矩阵,我需要计算第18个特征向量。当然,对于这样的大矩阵和高特征向量,特征向量约定可能是任意的,但前提是特征值是非简并的,它们只应在一个相位上是唯一的,对吧?嗯,这里不是这样。

第一矩阵:https://shrib.com/?v=nc#Pronghorn5ke1Wa6

第二矩阵:https://shrib.com/?v=nc#KirkSDikDik7rMXOA9

为了展示距离有多近,

LA.norm(first-second)

给出1.615464552286151e-11。

此外,每个第18个特征向量之间的相位偏移

eigvec1 = LA.eigh(first)[1][:,18]
eigvec2 = LA.eigh(second)[1][:,18]
eigvec1/eigvec2

给予

[-0.09638687-0.j,-0.95358982-0.3011087j,0.59816461-0.06896481j,-0.04320863-0.02599621j,0.42297316+0.41475341j,-0.0985544 -0.00545411j,1.2554442 +0.67027035j,-0.8480686 -0.32419582j,0.63874412+0.28189543j]

正如我所说,通常似乎存在相位偏移,但某些特定点却完全不同,我不确定为什么。我确实需要计算矩阵特征向量的导数,但是如果符号约定以这种怪异的方式更改,则符号约定在这里一个实际的问题。我可以校正一个恒定的相位,但是我什至不确定它在做什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)