Пример #1
0
 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))
Пример #2
0
 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))
Пример #3
0
    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