vectores propios de numpy.eig no ortogonales

Mi problema es el siguiente: al usar scipy.linalg.eig para obtener vectores propios y valores propios, veo que todos mis valores propios tienen multiplicidad 1, pero cuando ejecuto el código siguiente no confirma que los vectores propios sean ortogonales como deberían ser en este caso. . ¿Alguna razón por la que esto sería? ¿O como arreglarlo?

import scipy as SP import numpy as NP from scipy import linalg from numpy import linspace,asscalar,argsort import cmath import time matA=SP.array([[-0.0001, 0., 0., 0.00001, 0., 0., 0.00002, 0.],[0., -0.0002, 0., 0., 0., 0., 0., 0.],[0., 0., -0.00015, 0., 0., -9.*10**-6, 0., -0.00005],[0.00001, 0., 0., -0.0001, 0., 0.00001, 1.*10**-6, 0.],[0., 0., 0., -5.*10**-6, -0.0001, 0., 0., 0.],[0., -9.*10**-6, 0., 0.00001, 0., -0.0002, 0., 0.00005],[0., 0., 0., 0.00002, 0., 0., -0.0001, 0.],[0., 0.00004, 0., 0., 0., 0.00005, 0., -0.00015]]) matB=SP.array([[0., 0., 0., 0., 0., 0., 0., 0.],[0., 0., 1.5*10**-10, 0., 0., 0., 0., 0.],[0., -1.5*10**-10, 0., 0., 0., 0., 0., 0.],[0., 0., 0., 0., 0., 0., 0., 0.],[0., 0., 0., 0., 0., 3.*10**-10, 0., 0.],[0., 0., 0., 0., -3.*10**-10, 0., 2.*10**-10, 0.],[0., 0., 0., 0., 0., -2.*10**-10, 0., 0.],[0., 0., 0., 0., 0., 0., 0., 0.]]) matdim=len(matB[0]) #coefficient matrix for original ODE def matM(x): return matA+(x**2)*matB #define sorted eigensystem function def eigsys(x): evs,EVS=linalg.eig(matM(x),check_finite=False) absevs=abs(evs) idx=argsort(absevs)[::-1] evs=evs[idx] EVS=EVS[:,idx] return (evs,EVS) #check for orthogonality eigvecs=SP.transpose(eigsys(60000)[1]) for j in range(8): for i in range(8): print SP.vdot(eigvecs[i],eigvecs[j]) #show eigenvalues all have multiplicity 1 print eigsys(60000)[0] 

¿Por qué deberían ser ortogonales? Tu matriz

 a=matM(60000) 

está lejos de ser simétrica,

 abs(aa.T).max() -> 2.16 

con

 abs(a).max() -> 1.08 

así que no necesariamente esperaría vectores propios ortogonales. ¿Es posible que la función matM o los datos matA o matB equivocados?