def __call__(self, mtx_a, mtx_b=None, n_eigs=None, eigenvectors=None, status=None, conf=None): if n_eigs is None: mtx_a, mtx_b = self._to_array(mtx_a, mtx_b) out = sla.eig(mtx_a, mtx_b, right=eigenvectors) if eigenvectors: eigs = out[0] else: eigs = out ii = nm.argsort(eigs) if eigenvectors: mtx_ev = out[1][:,ii] out = (eigs[ii], mtx_ev) else: out = (eigs,) else: try: from scipy.splinalg import eigen_symmetric except ImportError: eigen_symmetric = None try: from scipy.sparse.linalg.eigen.arpack import eigen_symmetric except ImportError: eigen_symmetric = None if eigen_symmetric is None: raise ImportError('cannot import eigen_symmetric!') out = eigen_symmetric(mtx_a, k=n_eigs, M=mtx_b) return out
def __call__( self, mtx_a, mtx_b = None, n_eigs = None, eigenvectors = None, status = None, conf = None ): conf = get_default( conf, self.conf ) mtx_a = get_default( mtx_a, self.mtx_a ) mtx_b = get_default( mtx_b, self.mtx_b ) n_eigs = get_default( n_eigs, self.n_eigs ) eigenvectors = get_default( eigenvectors, self.eigenvectors ) status = get_default( status, self.status ) tt = time.clock() if n_eigs is None: mtx_a, mtx_b = self._to_array( mtx_a, mtx_b ) out = nla.eig( mtx_a, mtx_b, right = eigenvectors ) if eigenvectors: eigs = out[0] else: eigs = out ii = nm.argsort( eigs ) if eigenvectors: mtx_ev = out[1][:,ii] out = (eigs[ii], mtx_ev) else: out = (eigs,) else: try: from scipy.splinalg import eigen_symmetric except ImportError: eigen_symmetric = None try: from scipy.sparse.linalg.eigen.arpack import eigen_symmetric except ImportError: eigen_symmetric = None if eigen_symmetric is None: raise ImportError('cannot import eigen_symmetric!') out = eigen_symmetric( mtx_a, k = n_eigs, M = mtx_b ) if status is not None: status['time'] = time.clock() - tt return out