def test_dsbev(self): """Compare dsbev eigenvalues and eigenvectors with the result of linalg.eig.""" w, evec, info = dsbev(self.bandmat_sym, compute_v=1) evec_ = evec[:, argsort(w)] assert_array_almost_equal(sort(w), self.w_sym_lin) assert_array_almost_equal(abs(evec_), abs(self.evec_sym_lin))
def test_dsbev(self): """Compare dsbev eigenvalues and eigenvectors with the result of linalg.eig.""" w, evec, info = dsbev(self.bandmat_sym, compute_v=1) evec_ = evec[:,argsort(w)] assert_array_almost_equal(sort(w), self.w_sym_lin) assert_array_almost_equal(abs(evec_), abs(self.evec_sym_lin))
def eig(self,vectors=True): """solve matrix eigenproblem vectors ...True = eigenvalues and eigenvectors, False = eigenvalues only """ if vectors: right_v=1 else: right_v=0 # note: compute_v=0 means now eigenvectors will be calculated if self.store is 'full': if self.symmetric(): w,v,info=lapack.dsyev(self.m,compute_v=right_v) else: sys.exit('no diagonalization defined for non-symmetric matrix') elif self.store is 'upper_banded': w,v,info=lapack.dsbev(self.m,compute_v=right_v) else: sys.exit('eigvals not defined for storage type: '+self.store) if info!=0: sys.exit('error in lapack eig') return w