使用python查找矩阵特征值的方法?

使用python查找矩阵特征值的方法?,python,numpy,scipy,eigenvalue,Python,Numpy,Scipy,Eigenvalue,我目前正试图找到矩阵H的特征值。 我尝试过同时使用numpy.linalg.eig和scipy.linalg.eig,尽管两者显然使用相同的底层方法 问题是我的矩阵H是纯实的,特征值必须是实的并且也是正的 但是scipy和numpy方法返回复数特征值,包括正特征值和负特征值,因为它们是复数和负特征值,所以不可能正确。 编辑我知道特征值必须是实的,因为矩阵表示一个物理系统,其中复特征值没有意义\end EDIT 有人知道我可以用python获得矩阵的正确的、纯实的特征值的其他方法吗 谢谢你抽出时间

我目前正试图找到矩阵H的特征值。 我尝试过同时使用numpy.linalg.eig和scipy.linalg.eig,尽管两者显然使用相同的底层方法

问题是我的矩阵H是纯实的,特征值必须是实的并且也是正的

但是scipy和numpy方法返回复数特征值,包括正特征值和负特征值,因为它们是复数和负特征值,所以不可能正确。 编辑我知道特征值必须是实的,因为矩阵表示一个物理系统,其中复特征值没有意义\end EDIT

有人知道我可以用python获得矩阵的正确的、纯实的特征值的其他方法吗

谢谢你抽出时间! 编辑3: 修正后的H矩阵给出了纯实特征值,所以我的假想问题消失了。现在我只需要弄清楚为什么我的特征值太大,但那是另一个问题

非常感谢所有回应的人

修正后的H矩阵如下所示。 注意我现在的问题,特征值太大了。 我期望值在0-1范围内。不是~10^50

校正的H矩阵特征值:

[ -1.56079757e-02  -6.70247389e+59  -1.31298702e+56  -3.64404066e+52
  -9.70803701e+48  -1.85917866e+45  -1.65895844e+41  -5.61503911e+39
  -7.19768059e+36  -4.58657021e+32  -4.98763491e+28  -3.08561491e+27
  -3.63383072e+25  -2.58033979e+25  -3.45930959e+23  -2.13272853e+18
  -4.25175990e+21  -1.93387466e+22]
修正的H矩阵:

[[ -1.56079757e-02  -1.96247112e-02  -2.02799782e-02  -1.99695485e-02
   -1.93678897e-02  -1.86944625e-02  -1.30222438e+04  -3.54051869e+05
   -4.91571514e+06  -4.51159690e+07  -3.09207669e+08  -1.69913322e+09
   -2.76231241e+15  -4.29262866e+17  -3.76558847e+19  -2.27013318e+21
   -1.03308991e+23  -3.75607123e+24]
 [ -1.96247112e-02  -3.16659228e-02  -3.73018152e-02  -3.99083810e-02
   -4.09801356e-02  -4.12397330e-02  -9.25855152e+03  -2.52585509e+05
   -3.52145205e+06  -3.24749687e+07  -2.23781425e+08  -1.23712026e+09
   -1.95621015e+15  -3.04176626e+17  -2.67015928e+19  -1.61101326e+21
   -7.33788197e+22  -2.67049818e+24]
 [ -2.02799782e-02  -3.73018152e-02  -4.77923287e-02  -5.41249519e-02
   -5.79464638e-02  -6.01988341e-02  -7.57318263e+03  -2.06839231e+05
   -2.88760361e+06  -2.66717677e+07  -1.84121508e+08  -1.01989311e+09
   -1.59803489e+15  -2.48531861e+17  -2.18219073e+19  -1.31694511e+21
   -6.00020265e+22  -2.18437720e+24]
 [ -1.99695485e-02  -3.99083810e-02  -5.41249519e-02  -6.39296468e-02
   -7.06496425e-02  -7.52593492e-02  -6.56444085e+03  -1.79388958e+05
   -2.50607920e+06  -2.31660126e+07  -1.60063118e+08  -8.87505427e+08
   -1.38428190e+15  -2.15309349e+17  -1.89070134e+19  -1.14117996e+21
   -5.20014426e+22  -1.89341950e+24]
 [ -1.93678897e-02  -4.09801356e-02  -5.79464638e-02  -7.06496425e-02
   -8.00703376e-02  -8.70367786e-02  -5.87456014e+03  -1.60590211e+05
   -2.24436978e+06  -2.07565818e+07  -1.43492007e+08  -7.96094702e+08
   -1.23832305e+15  -1.92618393e+17  -1.69155984e+19  -1.02106226e+21
   -4.65319430e+22  -1.69443289e+24]
 [ -1.86944625e-02  -4.12397330e-02  -6.01988341e-02  -7.52593492e-02
   -8.70367786e-02  -9.62124393e-02  -5.36462746e+03  -1.46683176e+05
   -2.05056240e+06  -1.89701536e+07  -1.31188910e+08  -7.28124191e+08
   -1.13054072e+15  -1.75859951e+17  -1.54445848e+19  -9.32316767e+20
   -4.24900807e+22  -1.54734986e+24]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -4.12478326e+18  -5.45644679e+19
   -2.90876009e+20  -8.98307694e+20  -1.93571800e+21  -3.25655840e+21
   -1.23009840e+30  -2.34880436e+32  -2.19696316e+34  -1.25767256e+36
   -4.92737192e+37  -1.41676103e+39]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -5.45644679e+19  -1.18364260e+21
   -9.55137274e+21  -4.18185914e+22  -1.20837111e+23  -2.59872572e+23
   -4.88154308e+30  -1.23670123e+33  -1.52633071e+35  -1.14675488e+37
   -5.86768809e+38  -2.19383952e+40]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -2.90876009e+20  -9.55137274e+21
   -1.10203112e+23  -6.57480361e+23  -2.48279601e+24  -6.72600978e+24
   -9.55655956e+30  -2.93055192e+33  -4.39290725e+35  -4.01427998e+37
   -2.49882367e+39  -1.13605487e+41]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -8.98307694e+20  -4.18185914e+22
   -6.57480361e+23  -5.15935422e+24  -2.48241611e+25  -8.32646595e+25
   -1.32363927e+31  -4.60841402e+33  -7.90547208e+35  -8.31277603e+37
   -5.97680290e+39  -3.14644094e+41]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -1.93571800e+21  -1.20837111e+23
   -2.48279601e+24  -2.48241611e+25  -1.48582210e+26  -6.06263231e+26
   -1.52615891e+31  -5.77316621e+33  -1.08616056e+36  -1.26177499e+38
   -1.00789238e+40  -5.92030497e+41]
 [  0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00  -3.25655840e+21  -2.59872572e+23
   -6.72600978e+24  -8.32646595e+25  -6.06263231e+26  -2.95791640e+27
   -1.59124215e+31  -6.34774909e+33  -1.27102306e+36  -1.58346849e+38
   -1.36500133e+40  -8.69716304e+41]
 [ -2.76231241e+15  -1.95621015e+15  -1.59803489e+15  -1.38428190e+15
   -1.23832305e+15  -1.13054072e+15   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -3.91170589e+42  -3.71477021e+44  -1.55100113e+46  -3.65410576e+47
   -5.53824601e+48  -5.87586247e+49]
 [ -4.29262866e+17  -3.04176626e+17  -2.48531861e+17  -2.15309349e+17
   -1.92618393e+17  -1.75859951e+17   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -3.71477021e+44  -5.04566596e+46  -2.92377802e+48  -9.33903419e+49
   -1.88272072e+51  -2.61414916e+52]
 [ -3.76558847e+19  -2.67015928e+19  -2.18219073e+19  -1.89070134e+19
   -1.69155984e+19  -1.54445848e+19   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -1.55100113e+46  -2.92377802e+48  -2.28558880e+50  -9.63567387e+51
   -2.51888438e+53  -4.46829479e+54]
 [ -2.27013318e+21  -1.61101326e+21  -1.31694511e+21  -1.14117996e+21
   -1.02106226e+21  -9.32316767e+20   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -3.65410576e+47  -9.33903419e+49  -9.63567387e+51  -5.25195965e+53
   -1.74576666e+55  -3.88366439e+56]
 [ -1.03308991e+23  -7.33788197e+22  -6.00020265e+22  -5.20014426e+22
   -4.65319430e+22  -4.24900807e+22   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -5.53824601e+48  -1.88272072e+51  -2.51888438e+53  -1.74576666e+55
   -7.26381158e+56  -1.99648815e+58]
 [ -3.75607123e+24  -2.67049818e+24  -2.18437720e+24  -1.89341950e+24
   -1.69443289e+24  -1.54734986e+24   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -5.87586247e+49  -2.61414916e+52  -4.46829479e+54  -3.88366439e+56
   -1.99648815e+58  -6.69651817e+59]]
我留下了之前不正确的H矩阵,这样已经存在的答案对任何未来的读者都有意义

编辑2: 旧的H矩阵肯定是不对的

[[  9.84292024e+03  -8.31470427e+03   1.28883548e+04  -1.42234052e+03
    6.39075781e+03   1.68134522e+03   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -5.93837816e+16   6.38322749e+16  -6.85843186e+16   5.75338966e+16
   -4.88603241e+16   3.50805052e+16]
 [ -8.31470427e+03   1.16557521e+05  -3.57981876e+05   7.96363898e+05
   -1.49026732e+06   2.53900589e+06   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    8.06918956e+18  -3.72079304e+19   1.23800418e+20  -3.42505937e+20
    8.36989008e+20  -1.86726751e+21]
 [  1.28883548e+04  -3.57981876e+05   3.15391321e+06  -1.63653726e+07
    6.55556033e+07  -2.25027001e+08   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -2.29647856e+20   2.23060743e+21  -1.47751020e+22   7.86504336e+22
   -3.61027130e+23   1.48623808e+24]
 [ -1.42234052e+03   7.96363898e+05  -1.63653726e+07   1.68187967e+08
   -1.22007429e+09   7.18684022e+09   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    3.46309077e+21  -5.84715936e+22   6.46859079e+23  -5.59189865e+24
    4.08308120e+25  -2.63166392e+26]
 [  6.39075781e+03  -1.49026732e+06   6.55556033e+07  -1.22007429e+09
    1.47164022e+10  -1.36810088e+11   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   -3.69586675e+22   9.89735934e+23  -1.67505077e+25   2.15859810e+26
   -2.30442140e+27   2.13906412e+28]
 [  1.68134522e+03   2.53900589e+06  -2.25027001e+08   7.18684022e+09
   -1.36810088e+11   1.90724566e+12   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    3.17341100e+23  -1.27716724e+25   3.13774985e+26  -5.72503211e+27
    8.49214835e+28  -1.07936569e+30]
 [ -2.62366128e+07   3.12867102e+08  -2.07586348e+09   9.55718390e+09
   -3.58688215e+10   1.18206299e+11  -3.72545099e+19   3.55377485e+20
   -2.19797302e+21   1.06820421e+22  -4.43482421e+22   1.64613799e+23
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [  6.21899934e+06  -1.35300269e+09   2.25199661e+10  -2.08147670e+11
    1.41978312e+12  -8.03720030e+12   3.55377485e+20  -6.92933885e+21
    7.86285194e+22  -6.60223225e+23   4.55617308e+24  -2.73627888e+25
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [ -2.10320449e+07   4.11734924e+09  -1.49402973e+11   2.51974540e+12
   -2.86573004e+13   2.56306446e+14  -2.19797302e+21   7.86285194e+22
   -1.49349605e+24   1.98682041e+25  -2.09455082e+26   1.87262719e+27
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [  2.94574146e+06  -1.02367345e+10   7.58502833e+11  -2.20591701e+13
    3.96780330e+14  -5.32688366e+15   1.06820421e+22  -6.60223225e+23
    1.98682041e+25  -3.97295506e+26   6.07807050e+27  -7.69005025e+28
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [ -1.34143013e+07   2.23461195e+10  -3.24369808e+12   1.56693459e+14
   -4.30207139e+15   8.37537551e+16  -4.43482421e+22   4.55617308e+24
   -2.09455082e+26   6.07807050e+27  -1.30367761e+29   2.25611610e+30
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [ -1.29818367e+06  -4.45010813e+10   1.22995908e+13  -9.61118583e+14
    3.92675368e+16  -1.08141277e+18   1.64613799e+23  -2.73627888e+25
    1.87262719e+27  -7.69005025e+28   2.25611610e+30  -5.21172115e+31
    0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
    0.00000000e+00   0.00000000e+00]
 [ -5.93837816e+16   8.06918956e+18  -2.29647856e+20   3.46309077e+21
   -3.69586675e+22   3.17341100e+23  -4.12843622e+30   1.31023908e+32
   -2.32666430e+33   2.96546578e+34  -3.03538906e+35   2.65606764e+36
   -3.91170589e+42   9.60158418e+43  -1.53011091e+45   1.88717441e+46
   -1.94862667e+47   1.76215269e+48]
 [  6.38322749e+16  -3.72079304e+19   2.23060743e+21  -5.84715936e+22
    9.89735934e+23  -1.27716724e+25   3.81005492e+31  -2.11434722e+33
    5.97475670e+34  -1.14689052e+36   1.70519806e+37  -2.11260012e+38
    9.60158418e+43  -3.55965236e+45   8.25594136e+46  -1.44373334e+48
    2.07304224e+49  -2.56816531e+50]
 [ -6.85843186e+16   1.23800418e+20  -1.47751020e+22   6.46859079e+23
   -1.67505077e+25   3.13774985e+26  -2.44128687e+32   2.26787992e+34
   -9.81982973e+35   2.73945925e+37  -5.71489855e+38   9.68877560e+39
   -1.53011091e+45   8.25594136e+46  -2.68951294e+48   6.44111112e+49
   -1.24291248e+51   2.03914940e+52]
 [  5.75338966e+16  -3.42505937e+20   7.86504336e+22  -5.59189865e+24
    2.15859810e+26  -5.72503211e+27   1.26953404e+33  -1.91719765e+35
    1.23852494e+37  -4.89510985e+38   1.39768692e+40  -3.16418412e+41
    1.88717441e+46  -1.44373334e+48   6.44111112e+49  -2.06086355e+51
    5.21505047e+52  -1.10591734e+54]
 [ -4.88603241e+16   8.36989008e+20  -3.61027130e+23   4.08308120e+25
   -2.30442140e+27   8.49214835e+28  -5.72744451e+33   1.37649297e+36
   -1.30066841e+38   7.14559647e+39  -2.74085484e+41   8.13459136e+42
   -1.94862667e+47   2.07304224e+49  -1.24291248e+51   5.21505047e+52
   -1.69908728e+54   4.57315759e+55]
 [  3.50805052e+16  -1.86726751e+21   1.48623808e+24  -2.63166392e+26
    2.13906412e+28  -1.07936569e+30   2.32655148e+34  -8.75599541e+36
    1.19185355e+39  -8.96773338e+40   4.55433688e+42  -1.74680817e+44
    1.76215269e+48  -2.56816531e+50   2.03914940e+52  -1.10591734e+54
    4.57315759e+55  -1.54023048e+57]]

标准方法是使用

显然,如果矩阵非常具体(比如说非常大且稀疏),通常需要使用迭代方法(例如Krylov子空间方法)来找到最主要的特征值。有关更多详细信息,请参阅。

您尝试过吗?有一个很好的Python包装器,名为


你的矩阵没有任何哈密顿结构

J.dot(A).dot(J.T) - A.T
不为零,其中
J

# J = [0  I]
#     [-I 0]
J = np.rot90(sp.linalg.block_diag(np.rot90(-eye(9)),np.rot90(eye(9))))
因此,不存在特征值为实且相对于虚轴对称的条件。此外,您还可以缩小矩阵,使矩阵中出现最小的十次幂


你脑子里有扩展的哈密顿铅笔吗

你们检查过了吗?不幸的是,我的矩阵不是厄米矩阵或对称矩阵。你们怎么知道它事先有实特征值和正特征值?请提供一个代码示例如果没有看到H(或显示相同行为的较小版本的H),很难知道您的矩阵是否具有使查找特征值的过程不稳定的数值特征,或者所有特征值的虚部是否可以忽略,在检查矩阵时(它不是Python可用的形式),元素范围从
0
10**57
,我发现很难相信这个矩阵恰好只有正特征值。即使在原则上它确实有这个属性,元素值的大范围表明在矩阵元素的推导和随后的特征值的查找过程中都存在数值问题。谢谢,我已经更正了我的H矩阵。我在计算矩阵时犯了一些基于转录的错误。恐怕我不知道什么是哈密顿铅笔。
J.dot(A).dot(J.T) - A.T
# J = [0  I]
#     [-I 0]
J = np.rot90(sp.linalg.block_diag(np.rot90(-eye(9)),np.rot90(eye(9))))