使用python查找矩阵特征值的方法?
我目前正试图找到矩阵H的特征值。 我尝试过同时使用numpy.linalg.eig和scipy.linalg.eig,尽管两者显然使用相同的底层方法 问题是我的矩阵H是纯实的,特征值必须是实的并且也是正的 但是scipy和numpy方法返回复数特征值,包括正特征值和负特征值,因为它们是复数和负特征值,所以不可能正确。 编辑我知道特征值必须是实的,因为矩阵表示一个物理系统,其中复特征值没有意义\end EDIT 有人知道我可以用python获得矩阵的正确的、纯实的特征值的其他方法吗 谢谢你抽出时间! 编辑3: 修正后的H矩阵给出了纯实特征值,所以我的假想问题消失了。现在我只需要弄清楚为什么我的特征值太大,但那是另一个问题 非常感谢所有回应的人 修正后的H矩阵如下所示。 注意我现在的问题,特征值太大了。 我期望值在0-1范围内。不是~10^50 校正的H矩阵特征值:使用python查找矩阵特征值的方法?,python,numpy,scipy,eigenvalue,Python,Numpy,Scipy,Eigenvalue,我目前正试图找到矩阵H的特征值。 我尝试过同时使用numpy.linalg.eig和scipy.linalg.eig,尽管两者显然使用相同的底层方法 问题是我的矩阵H是纯实的,特征值必须是实的并且也是正的 但是scipy和numpy方法返回复数特征值,包括正特征值和负特征值,因为它们是复数和负特征值,所以不可能正确。 编辑我知道特征值必须是实的,因为矩阵表示一个物理系统,其中复特征值没有意义\end EDIT 有人知道我可以用python获得矩阵的正确的、纯实的特征值的其他方法吗 谢谢你抽出时间
[ -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))))