Search code examples
numpyeigenvector

Numpy gives the wrong eigenvectors?


Okay, so this is really weird. I have this hermitian matrix and for some reason, the numpy eigenvectors are not actually eigenvectors! What!

matrix = np. array([[ 5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , 61.14109509+774.06193172j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  3.11819585 -39.47715852j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  5.  +0.j  ,  -9.52578079 -11.43230285j, -9.52578079 -11.43230285j,  -9.52578079 +11.43230285j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -244.56443004+597.56276449j, -8.63584441  -7.34967968j,  10.68293151  -3.8040208j , -2.04708711 -11.15370048j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , -12.47278593 -30.47570099j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -9.52578079 +11.43230285j,   5.  +0.j  ,  0.  +0.j  ,  -9.52578079 -11.43230285j, -9.52578079 +11.43230285j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  10.68293151  +3.8040208j , -550.26995517+421.06359727j,   0.  +0.j  , 10.68293151  -3.8040208j ,  -2.04708711 -11.15370048j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  -28.06376771 -21.47424346j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -9.52578079 +11.43230285j,   0.  +0.j  ,  5.  +0.j  ,  -9.52578079 -11.43230285j,  0.  +0.j  ,  -9.52578079 +11.43230285j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -8.63584441  +7.34967968j,  0.  +0.j  ,  61.14109509+421.06359727j, -8.63584441  -7.34967968j,   0.  +0.j  , -2.04708711 -11.15370048j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   3.11819585 -21.47424346j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -9.52578079 -11.43230285j,  -9.52578079 +11.43230285j, -9.52578079 +11.43230285j,   5.  +0.j  , -9.52578079 -11.43230285j,  -9.52578079 -11.43230285j, -9.52578079 +11.43230285j,   0.  +0.j  ,  0.  +0.j  ,  -2.04708711 +11.15370048j, -8.63584441  +7.34967968j,  10.68293151  +3.8040208j , -244.56443004+244.56443004j,  -8.63584441  -7.34967968j, 10.68293151  -3.8040208j ,  -2.04708711 -11.15370048j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  -12.47278593 -12.47278593j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,  -9.52578079 -11.43230285j,  0.  +0.j  ,  -9.52578079 +11.43230285j,  5.  +0.j  ,   0.  +0.j  , -9.52578079 -11.43230285j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -2.04708711 +11.15370048j,   0.  +0.j  , 10.68293151  +3.8040208j ,  -550.26995517 +68.06526281j,  0.  +0.j  ,  10.68293151  -3.8040208j ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , -28.06376771  -3.4713284j ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -9.52578079 -11.43230285j,  -9.52578079 +11.43230285j,  0.  +0.j  ,   5.  +0.j  , -9.52578079 -11.43230285j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -2.04708711 +11.15370048j, -8.63584441  +7.34967968j,   0.  +0.j  , 61.14109509 +68.06526281j,  -8.63584441  -7.34967968j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  3.11819585  -3.4713284j ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -9.52578079 -11.43230285j, -9.52578079 +11.43230285j,  -9.52578079 +11.43230285j,  5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -2.04708711 +11.15370048j,  -8.63584441  +7.34967968j, 10.68293151  +3.8040208j ,  -244.56443004-108.43390441j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , -12.47278593  +5.53012912j,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -550.26995517-284.93307164j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  -28.06376771 +14.53158665j], [  61.14109509-774.06193172j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -244.56443004-597.56276449j,  10.68293151  -3.8040208j , -8.63584441  -7.34967968j,  -2.04708711 -11.15370048j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   5.  +0.j  ,  8.29952587  -8.790553j  ,   8.29952587  -8.790553j  ,  8.29952587  +8.790553j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -8.63584441  +7.34967968j,  -550.26995517-421.06359727j,  0.  +0.j  ,  -8.63584441  -7.34967968j, -2.04708711 -11.15370048j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   8.29952587  +8.790553j  ,  5.  +0.j  ,   0.  +0.j  ,  8.29952587  -8.790553j  ,   8.29952587  +8.790553j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , 10.68293151  +3.8040208j ,   0.  +0.j  , 61.14109509-421.06359727j,  10.68293151  -3.8040208j ,  0.  +0.j  ,  -2.04708711 -11.15370048j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   8.29952587  +8.790553j  ,  0.  +0.j  ,   5.  +0.j  ,  8.29952587  -8.790553j  ,   0.  +0.j  ,  8.29952587  +8.790553j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  , -2.04708711 +11.15370048j,  10.68293151  +3.8040208j , -8.63584441  +7.34967968j,  -244.56443004-244.56443004j, 10.68293151  -3.8040208j ,  -8.63584441  -7.34967968j, -2.04708711 -11.15370048j,   0.  +0.j  ,  0.  +0.j  ,   8.29952587  -8.790553j  ,  8.29952587  +8.790553j  ,   8.29952587  +8.790553j  ,  5.  +0.j  ,   8.29952587  -8.790553j  ,  8.29952587  -8.790553j  ,   8.29952587  +8.790553j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,  -2.04708711 +11.15370048j,  0.  +0.j  ,  -8.63584441  +7.34967968j, -550.26995517 -68.06526281j,   0.  +0.j  , -8.63584441  -7.34967968j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  8.29952587  -8.790553j  ,   0.  +0.j  ,  8.29952587  +8.790553j  ,   5.  +0.j  ,  0.  +0.j  ,   8.29952587  -8.790553j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -2.04708711 +11.15370048j,  10.68293151  +3.8040208j ,  0.  +0.j  ,  61.14109509 -68.06526281j, 10.68293151  -3.8040208j ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   8.29952587  -8.790553j  ,  8.29952587  +8.790553j  ,   0.  +0.j  ,  5.  +0.j  ,   8.29952587  -8.790553j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -2.04708711 +11.15370048j, 10.68293151  +3.8040208j ,  -8.63584441  +7.34967968j, -244.56443004+108.43390441j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  8.29952587  -8.790553j  ,   8.29952587  +8.790553j  ,  8.29952587  +8.790553j  ,   5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -550.26995517+284.93307164j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , 61.14109509+774.06193172j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -244.56443004+597.56276449j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -550.26995517+421.06359727j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  61.14109509+421.06359727j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -244.56443004+244.56443004j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -550.26995517 +68.06526281j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , 61.14109509 +68.06526281j,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , 340.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -244.56443004-108.43390441j,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  340.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -550.26995517-284.93307164j], [ 3.11819585 +39.47715852j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  61.14109509-774.06193172j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  -12.47278593 +30.47570099j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -244.56443004-597.56276449j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  , -28.06376771 +21.47424346j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -550.26995517-421.06359727j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  3.11819585 +21.47424346j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , 61.14109509-421.06359727j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , -12.47278593 +12.47278593j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -244.56443004-244.56443004j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  -28.06376771  +3.4713284j ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -550.26995517 -68.06526281j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   3.11819585  +3.4713284j ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  61.14109509 -68.06526281j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  -12.47278593  -5.53012912j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -244.56443004+108.43390441j,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -5.  +0.j  ,  0.  +0.j  ], [ 0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  , -28.06376771 -14.53158665j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,  -550.26995517+284.93307164j,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  ,  0.  +0.j  ,   0.  +0.j  , -5.  +0.j  ]])

testvec = LA.eigh(matrix)[1][:, 18]
testval = LA.eigh(matrix)[0][18]

print(testval)
print(np.dot(matrix, testvec)/testvec)

The output there is

28.081038605585686
[ -183.43245272+1.74213886e+01j    28.08103861+7.25481867e-11j
    28.08103861+1.27643875e-11j    28.08103861-1.41589018e-12j
    28.08103861-6.60184127e-13j    28.08103861+6.75330988e-12j
    28.08103861+1.16790389e-14j    28.08103861-3.70296960e-12j
   236.26728922+3.14873632e+02j -1079.23472835-4.74317731e+01j
    28.08103861-9.92409189e-12j    28.08103861-3.35359500e-11j
    28.08103861-1.04000538e-13j    28.08103861+2.78132206e-13j
    28.08103861+4.88732504e-12j    28.08103861+3.98266910e-14j
    28.08103861-1.37676972e-12j   586.99433236-4.65807994e+02j
   -14.23315879+4.40331948e+03j    28.08103861+1.56567705e-09j
    28.08103861-4.39930895e-10j    28.08103861-7.51553075e-12j
    28.08103861+1.92682082e-11j    28.08103861+9.93263280e-11j
    28.08103861+3.95907444e-13j    28.08103861-6.75700975e-12j
  -118.22531925+5.61652861e+01j    -2.79796252-1.38935399e+02j
    28.08103861+3.03407400e-11j    28.08103861+5.30616379e-10j
    28.08103861+3.10058409e-12j    28.08103861-5.18881898e-13j
    28.08103861+3.52468153e-12j    28.08103861-4.98108172e-14j
    28.08103861+3.96217802e-13j  -238.25990447-8.91950754e+02j]

How does this make any sense? Some components give it right but others don't? What is the issue here?


Solution

  • Your problem happens because of precision of numbers close to 0, testvec would be:

    array([-3.59900540e-19+0.00000000e+00j, -5.17637105e-04-2.76467148e-04j,
           -2.15232299e-04+2.40919102e-04j,  8.68903778e-03+1.58504512e-02j,
            1.31080038e-02+2.40391043e-02j, -7.77501222e-04-1.52668092e-03j,
           -2.73682736e-01-6.93085398e-01j,  7.51273340e-03+1.59428750e-02j,
            2.46330734e-16-7.52436308e-17j,  5.52080470e-20+2.96032521e-19j,
           -7.05446819e-04-1.48378619e-04j, -6.84977730e-05-4.20362420e-04j,
           -1.49592643e-02+2.24449546e-02j, -3.65064949e-02+3.22827890e-03j,
           -4.67427537e-04-1.08629775e-03j, -1.42698210e-01-3.57459915e-02j,
            3.32809901e-02-6.92791416e-03j, -4.41354873e-17-2.80018652e-17j,
            5.42101086e-20-2.16840434e-19j,  1.01201785e-05-2.46242545e-05j,
           -7.40223595e-06-3.96792638e-06j,  1.59380630e-03-7.50085850e-04j,
            2.22688637e-03+3.68340275e-04j,  7.47964828e-05+1.05972530e-04j,
            1.78419605e-01+6.68711013e-02j, -4.96084176e-03+2.62909133e-04j,
            3.14618038e-17-1.33145850e-16j,  1.19770459e-18+4.40457133e-18j,
           -6.97579774e-05-3.73394056e-04j,  9.88225468e-05-1.83875899e-04j,
           -1.60717176e-02-1.45382244e-02j, -2.77458699e-02-2.33076540e-02j,
           -2.06341303e-04-7.03094158e-04j,  5.14279493e-01-3.37559644e-01j,
            3.56457556e-02-2.54713924e-02j,  7.10394311e-17+5.07212415e-17j])
    

    If you look close the values that differs are in the entries close to 0, where usually there are precision problems in division.

    When you do print(np.dot(matrix, testvec)/testvec) you are assuming none of the entries of testvec are 0 (or close). If you try this code:

    np.isclose(np.dot(matrix, testvec), testval*testvec)
    

    You will see that they are indeed the eigenvalues and eigenvectors.