Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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
Exemplo n.º 3
0
    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