2016-10-13 1 views
2

В настоящее время я пытаюсь найти собственные значения матрицы H. Я попытался использовать numpy.linalg.eig и scipy.linalg.eig, хотя оба они, очевидно, используют один и тот же базовый метод.Методы определения собственных значений матрицы с использованием python?

Проблема в том, что моя матрица H чисто вещественна, а собственные значения должны быть вещественными и также положительными.

Но методы scipy и numpy возвращают сложные Собственные значения, как положительные, так и отрицательные, которые, поскольку они являются сложными и отрицательными, не могут быть правильными. EDIT Я знаю, что собственные значения должны быть вещественными, так как матрица представляет собой физическую систему, в которой сложное собственное значение не имеет значения \ end EDIT

Кто-нибудь знает о любом другом способе, которым я могу получить правильные, чисто реальные, собственные значения матрицы в python?

Благодарим вас за внимание! EDIT 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 MATRIX:

[[ -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, так что уже существующие ответы имеют смысл для будущих читателей.

EDIT 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]] 
+1

Вы проверили [numpy.linalg.eigh] (http://docs.scipy.org/doc/numpy/reference/generated/numpy.linalg.eigh.html)? – Stelios

+0

К сожалению, моя матрица не является эрмитовой или симметричной. –

+2

Как вы знаете, что у него есть реальные и положительные собственные значения заранее? Просьба привести пример кода – Stelios

ответ

2

Стандартный метод должен был бы использовать numpy.linalg.eig.

from numpy import linalg as LA 
w, v = LA.eig(np.diag((1, 2, 3))) 
# w: 
# array([ 1., 2., 3.]) 
# v: 
# array([[ 1., 0., 0.], 
#  [ 0., 1., 0.], 
#  [ 0., 0., 1.]]) 

Очевидно, что если ваша матрица очень специфична (скажем, очень большие и редкий), как правило, вы хотите использовать итеративный подход (например, Крылов метода подпространства), чтобы найти наиболее доминантные собственные значения. См. discussion для получения более подробной информации.

1

Вы пытались с libeigen? Для него есть хорошая обложка Python, называемая minieigen.

#!/usr/bin/env python3 

import minieigen as eigen 

M = eigen.Matrix3(1, 0, 0, 0, 2, 0, 0, 0, 3) 
print(M.spectralDecomposition()) 
1

Ваша матрица не имеет гамильтонов структуру,

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)))) 

, следовательно, нет никаких условий для собственных значений вещественной и симметричной по отношению к мнимой оси.Также вы можете масштабировать матрицу с наименьшим числом из десяти, появляющимся в вашей матрице.

Возможно, у вас есть расширенный гамильтоновский карандаш?

+0

Спасибо, я исправил свою матрицу H. Я сделал некоторые ошибки на основе транскрипции при вычислении матрицы. Боюсь, я не знаю, что такое гамильтоновский карандаш. –

Смежные вопросы