Created
June 15, 2018 20:31
-
-
Save ExpHP/3faeedfaa3b75236eb8036f48dbc2d56 to your computer and use it in GitHub Desktop.
shift invert bad results
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| $ python3 | |
| Python 3.6.5 (default, May 11 2018, 04:00:52) | |
| [GCC 8.1.0] on linux | |
| Type "help", "copyright", "credits" or "license" for more information. | |
| >>> d=json.load(open('gamma-dynmat.json')) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| FileNotFoundError: [Errno 2] No such file or directory: 'gamma-dynmat.json' | |
| >>> d=json.load(open('whyyyyyyy-091-a/gamma-dynmat.json')) | |
| >>> list(d) | |
| ['dim', 'complex-blocks', 'col', 'row-ptr'] | |
| >>> np.array(d['complex-blocks'].shape) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| AttributeError: 'list' object has no attribute 'shape' | |
| >>> np.array(d['complex-blocks']).shape | |
| (73164, 2, 3, 3) | |
| >>> np.array(d['complex-blocks'])[:,0] | |
| array([[[ 5.69604874e+00, -7.39489409e-17, 6.56296758e-16], | |
| [-7.39489409e-17, 5.69604874e+00, 1.47897861e-16], | |
| [ 6.56296758e-16, 1.47897861e-16, 1.22197388e+00]], | |
| [[-1.24077979e-01, -7.19405585e-02, 7.43219379e-04], | |
| [ 1.98967136e-01, -6.72204767e-02, 4.66179154e-04], | |
| [-6.14371767e-04, 8.43503480e-04, 8.52878657e-02]], | |
| [[-1.36438974e-01, -1.91830512e-01, 3.21133001e-05], | |
| [ 7.90771824e-02, -5.48594815e-02, -8.76736440e-04], | |
| [ 1.03768133e-03, 1.10309818e-04, 8.52878657e-02]], | |
| ..., | |
| [[-2.64307305e-02, -1.28317223e-01, -4.23309558e-04], | |
| [ 1.42590471e-01, -1.64867725e-01, 9.53813297e-04], | |
| [-7.75332679e-04, -4.10557286e-04, 8.52878657e-02]], | |
| [[-1.35262114e-01, -7.87987349e-02, 7.89456533e-04], | |
| [ 1.86885598e-01, -5.68633855e-02, 1.58756604e-03], | |
| [-2.02130834e-03, 1.74118001e-03, 8.50622129e-02]], | |
| [[ 5.71467463e+00, -1.78455127e-02, 8.48146847e-03], | |
| [-1.78455127e-02, 5.72758720e+00, -1.04347145e-02], | |
| [ 8.48146847e-03, -1.04347145e-02, 1.21963394e+00]]]) | |
| >>> np.array(d['complex-blocks'])[:,1] | |
| array([[[ 0., 0., -0.], | |
| [-0., 0., -0.], | |
| [ 0., 0., 0.]], | |
| [[ 0., 0., 0.], | |
| [ 0., 0., 0.], | |
| [ 0., 0., 0.]], | |
| [[ 0., 0., 0.], | |
| [ 0., 0., 0.], | |
| [ 0., 0., 0.]], | |
| ..., | |
| [[ 0., 0., 0.], | |
| [ 0., 0., 0.], | |
| [ 0., 0., 0.]], | |
| [[ 0., 0., 0.], | |
| [ 0., 0., 0.], | |
| [ 0., 0., 0.]], | |
| [[ 0., 0., 0.], | |
| [ 0., 0., 0.], | |
| [ 0., 0., 0.]]]) | |
| >>> np.array(d['complex-blocks'])[:,0] | |
| array([[[ 5.69604874e+00, -7.39489409e-17, 6.56296758e-16], | |
| [-7.39489409e-17, 5.69604874e+00, 1.47897861e-16], | |
| [ 6.56296758e-16, 1.47897861e-16, 1.22197388e+00]], | |
| [[-1.24077979e-01, -7.19405585e-02, 7.43219379e-04], | |
| [ 1.98967136e-01, -6.72204767e-02, 4.66179154e-04], | |
| [-6.14371767e-04, 8.43503480e-04, 8.52878657e-02]], | |
| [[-1.36438974e-01, -1.91830512e-01, 3.21133001e-05], | |
| [ 7.90771824e-02, -5.48594815e-02, -8.76736440e-04], | |
| [ 1.03768133e-03, 1.10309818e-04, 8.52878657e-02]], | |
| ..., | |
| [[-2.64307305e-02, -1.28317223e-01, -4.23309558e-04], | |
| [ 1.42590471e-01, -1.64867725e-01, 9.53813297e-04], | |
| [-7.75332679e-04, -4.10557286e-04, 8.52878657e-02]], | |
| [[-1.35262114e-01, -7.87987349e-02, 7.89456533e-04], | |
| [ 1.86885598e-01, -5.68633855e-02, 1.58756604e-03], | |
| [-2.02130834e-03, 1.74118001e-03, 8.50622129e-02]], | |
| [[ 5.71467463e+00, -1.78455127e-02, 8.48146847e-03], | |
| [-1.78455127e-02, 5.72758720e+00, -1.04347145e-02], | |
| [ 8.48146847e-03, -1.04347145e-02, 1.21963394e+00]]]) | |
| >>> from scipy.sparse import bsr_matrix | |
| >>> bsr_matrix((np.array(d['complex-blocks'])[:,0], d['col'], d['row-ptr']) | |
| ... | |
| KeyboardInterrupt | |
| >>> m=bsr_matrix((np.array(d['complex-blocks'])[:,0], d['col'], d['row-ptr']), d['dim']) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/bsr.py", line 213, in __init__ | |
| self.check_format(full_check=False) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/bsr.py", line 249, in check_format | |
| (len(self.indptr), M//R + 1)) | |
| ValueError: index pointer size (365) should be (122) | |
| >>> d['dim'] | |
| [364, 364] | |
| >>> max(d['row-ptr']) | |
| 73164 | |
| >>> max(d['col']) | |
| 363 | |
| >>> m=bsr_matrix((np.array(d['complex-blocks'])[:,0], d['col'], d['row-ptr']), tuple(3*x for x in d['dim'])) | |
| >>> m | |
| <1092x1092 sparse matrix of type '<class 'numpy.float64'>' | |
| with 658476 stored elements (blocksize = 3x3) in Block Sparse Row format> | |
| >>> import scipy.sparse.linalg as spla | |
| >>> spla.eigsh(m, k=4, sigma=0, which='LA') | |
| /home/lampam/asd/clone/scipy/scipy/sparse/linalg/dsolve/linsolve.py:295: SparseEfficiencyWarning: splu requires CSC matrix format | |
| warn('splu requires CSC matrix format', SparseEfficiencyWarning) | |
| 2 iterations | |
| (array([3.10594774e-06, 3.10599138e-06, 1.51204583e-04, 2.19732931e-03]), array([[ 4.61343009e-02, -2.15809055e-02, -2.35679865e-02, | |
| -1.13120587e-04], | |
| [ 2.15800151e-02, 4.61470767e-02, -1.64663663e-03, | |
| -7.92368811e-06], | |
| [ 2.76583549e-05, -7.59958518e-09, 5.09959618e-02, | |
| -6.41123842e-02], | |
| ..., | |
| [-4.65772367e-02, 2.25835198e-02, 1.97544783e-02, | |
| 1.02979021e-04], | |
| [-2.18463087e-02, -4.52288143e-02, 4.38217677e-02, | |
| 1.35183692e-04], | |
| [-2.17377649e-03, 7.09817990e-04, 2.80205556e-02, | |
| -5.73705949e-02]])) | |
| >>> spla.eigsh(m, k=4, sigma=0, which='SA') | |
| ^CTraceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 537, in iterate | |
| self.ipntr, self.workd, self.workl, self.info) | |
| KeyboardInterrupt | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25 which='SA') | |
| File "<stdin>", line 1 | |
| (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25 which='SA') | |
| ^ | |
| SyntaxError: invalid syntax | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 3/4 eigenvectors converged) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 1 iterations | |
| >>> evals | |
| array([-1.41933476e-04, -7.42441034e-10, -7.42440603e-10, -2.56385420e-15]) | |
| >>> 15.6333043006705 * 33.3564095198152 * abs(-1.41933476e-04) ** 0.5 | |
| 6.212587206416409 | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 3/4 eigenvectors converged) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 3/4 eigenvectors converged) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 1 iterations | |
| >>> evals | |
| array([-3.37356231e-04, -7.42441038e-10, -7.42440584e-10, -2.56385420e-15]) | |
| >>> 15.6333043006705 * 33.3564095198152 * abs(-3.37356231e-04) ** 0.5 | |
| 9.577991483650955 | |
| >>> m @ evec[0,:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| NameError: name 'evec' is not defined | |
| >>> m @ evecs[0,:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 497, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> m @ evecs[0,None,:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> m @ evecs[[0],:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> m @ evecs[0,:][None,:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> evecs[0,:] | |
| array([ 3.74039029e-02, 5.20195025e-02, -6.40403185e-03, -6.26245188e-10]) | |
| >>> m @ evecs[:,0] | |
| array([ 0.33432849, -0.09322168, -0.00890129, ..., 0.105405 , | |
| -0.29197974, -0.02978163]) | |
| >>> m @ evecs[:,0] / evecs[:,0] | |
| array([ 8.93833177, 1.96571957, -2.34015557, ..., -16.79534333, | |
| 18.50840858, -34.77026623]) | |
| >>> m @ evecs[:,1] / evecs[:,1] | |
| array([ 2.77632351e-07, 6.29843779e-07, 8.55354915e-01, ..., | |
| 8.68956469e-08, 2.17002838e-06, -4.21830302e-04]) | |
| >>> (m @ evecs[:,1]) / evecs[:,1] | |
| array([ 2.77632351e-07, 6.29843779e-07, 8.55354915e-01, ..., | |
| 8.68956469e-08, 2.17002838e-06, -4.21830302e-04]) | |
| >>> (m @ evecs[:,2]) / evecs[:,2] | |
| array([ 6.69492082e-06, -2.30612609e-07, -5.34772656e+00, ..., | |
| 2.32376482e-06, -7.19652543e-07, 2.98043380e-04]) | |
| >>> (m @ evecs[:,2][None,:]) / evecs[:,2] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> (m @ evecs[:,2][None,:]) / evecs[:,2][None,:] | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> (m @ evecs[:,2][None,:]) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 559, in __matmul__ | |
| return self.__mul__(other) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/base.py", line 515, in __mul__ | |
| raise ValueError('dimension mismatch') | |
| ValueError: dimension mismatch | |
| >>> evecs[:,2][None,:] | |
| array([[-6.40403185e-03, -5.20194951e-02, -2.13441421e-10, ..., | |
| -5.81539061e-03, -5.20886800e-02, 1.28150719e-05]]) | |
| >>> (m @ evecs[:,2][:,None]) | |
| array([[-4.28744861e-08], | |
| [ 1.19963515e-08], | |
| [ 1.14142636e-09], | |
| ..., | |
| [-1.35136001e-08], | |
| [ 3.74857510e-08], | |
| [ 3.81944734e-09]]) | |
| >>> (m @ evecs[:,2][:,None]) / evecs[:,2][:,None] | |
| array([[ 6.69492082e-06], | |
| [-2.30612609e-07], | |
| [-5.34772656e+00], | |
| ..., | |
| [ 2.32376482e-06], | |
| [-7.19652543e-07], | |
| [ 2.98043380e-04]]) | |
| >>> (m @ evecs[:,3][:,None]) / evecs[:,3][:,None] | |
| array([[-2.19304152e-01], | |
| [ 1.81887449e-01], | |
| [ 6.97473644e-11], | |
| ..., | |
| [-4.72068201e-02], | |
| [-1.92302654e+00], | |
| [ 2.33396466e-10]]) | |
| >>> (m @ evecs[:,3][:,None] - evals[3] * evecs[:,3][:,None]) | |
| array([[ 1.37338170e-10], | |
| [-3.82995035e-11], | |
| [-3.65588819e-12], | |
| ..., | |
| [ 4.32965505e-11], | |
| [-1.19939656e-10], | |
| [-1.22334321e-11]]) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='LA') | |
| ^C^[[A^[[D^[[D^[[D^[[D^[[D^[[D^C^C^C^C^C^C^C^CTraceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1613, in eigsh | |
| symmetric=True, tol=tol) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1049, in get_OPinv_matvec | |
| return get_inv_matvec(A, symmetric=symmetric, tol=tol) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1042, in get_inv_matvec | |
| return SpLuInv(M).matvec | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 915, in __init__ | |
| self.M_lu = splu(M) | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/dsolve/linsolve.py", line 309, in splu | |
| ilu=False, options=_options) | |
| KeyboardInterrupt | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, maxiter=30, ncv=25, which='LA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 0/4 eigenvectors converged) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, ncv=25, which='LA') | |
| 30 iterations | |
| >>> evals | |
| array([10.85983542, 10.85984277, 10.86362013, 10.86362886]) | |
| >>> (m @ evecs[:,2][:,None]) / evecs[:,2][:,None] | |
| array([[10.8625413 ], | |
| [10.85813506], | |
| [10.86362013], | |
| ..., | |
| [10.86362013], | |
| [10.86362013], | |
| [10.86362013]]) | |
| >>> (m @ evecs[:,3][:,None]) / evecs[:,3][:,None] | |
| array([[10.83867541], | |
| [10.86291009], | |
| [10.86362886], | |
| ..., | |
| [10.86362886], | |
| [10.86362886], | |
| [10.86362886]]) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 3/4 eigenvectors converged) | |
| >>> (evals,evecs) = spla.eigsh(m, k=4, sigma=0, maxiter=30, ncv=25, which='SA') | |
| 1 iterations | |
| >>> evals | |
| array([-6.54957529e-04, -7.42441065e-10, -7.42440575e-10, -2.56385420e-15]) | |
| >>> (m @ evecs[:,0][:,None]) / evecs[:,0][:,None] | |
| array([[ 0.04059912], | |
| [ 8.18640569], | |
| [ 1.16094026], | |
| ..., | |
| [ -1.99874594], | |
| [ 8.70126585], | |
| [-12.22762544]]) | |
| >>> (evalsL,evecsL) = spla.eigsh(m, k=4, ncv=25, which='LA') | |
| 92 iterations | |
| >>> def normalize(a): return a / np.norm(a) | |
| ... | |
| >>> normalize([1,2,3]) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "<stdin>", line 1, in normalize | |
| AttributeError: module 'numpy' has no attribute 'norm' | |
| >>> def normalize(a): return a / a.norm() | |
| ... | |
| >>> normalize(np.array([1,2,3])) | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "<stdin>", line 1, in normalize | |
| AttributeError: 'numpy.ndarray' object has no attribute 'norm' | |
| >>> def normalize(a): return a / np.sqrt(np.sum(np.square(a))) | |
| ... | |
| >>> normalize([1,2,3]) | |
| array([0.26726124, 0.53452248, 0.80178373]) | |
| >>> np.vdot(normalize(m @ evecsL[:,0][:,None]), normalize(evecsL[:,0][:,None])) | |
| 0.9999999999999998 | |
| >>> np.vdot(normalize(m @ evecsL[:,1][:,None]), normalize(evecsL[:,1][:,None])) | |
| 1.0 | |
| >>> np.vdot(normalize(m @ evecsL[:,2][:,None]), normalize(evecsL[:,2][:,None])) | |
| 1.0 | |
| >>> np.vdot(normalize(m @ evecsL[:,2][:,None]), normalize(evecs[:,2][:,None])) | |
| -2.419081482096336e-09 | |
| >>> np.vdot(normalize(m @ evecs[:,2][:,None]), normalize(evecs[:,2][:,None])) | |
| -0.0017878162688716906 | |
| >>> (evalsSA,evecsSA) = spla.eigsh(m, k=3, maxiter=30, ncv=25, which='SA') | |
| 31 iterations | |
| Traceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 570, in iterate | |
| self._raise_no_convergence() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 375, in _raise_no_convergence | |
| raise ArpackNoConvergence(msg % (num_iter, k_ok, self.k), ev, vec) | |
| scipy.sparse.linalg.eigen.arpack.arpack.ArpackNoConvergence: ARPACK error -1: No convergence (31 iterations, 0/3 eigenvectors converged) | |
| >>> (evalsSA,evecsSA) = spla.eigsh(m, k=3, maxiter=30, ncv=25, which='SA') | |
| ^CTraceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 537, in iterate | |
| self.ipntr, self.workd, self.workl, self.info) | |
| KeyboardInterrupt | |
| >>> (evalsSA,evecsSA) = spla.eigsh(m, k=3, ncv=25, which='SA') | |
| ^CTraceback (most recent call last): | |
| File "<stdin>", line 1, in <module> | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 1658, in eigsh | |
| params.iterate() | |
| File "/home/lampam/asd/clone/scipy/scipy/sparse/linalg/eigen/arpack/arpack.py", line 537, in iterate | |
| self.ipntr, self.workd, self.workl, self.info) | |
| KeyboardInterrupt | |
| >>> (evalsSA,evecsSA) = spla.eigsh(m, k=3, ncv=250, which='SA') | |
| 10 iterations | |
| >>> evalsSA | |
| array([-7.42451197e-10, -7.42437037e-10, -3.93353846e-15]) | |
| >>> np.vdot(normalize(m @ evecsSA[:,2][:,None]), normalize(evecsSA[:,2][:,None])) | |
| -0.12631758730141507 | |
| >>> np.vdot(normalize(m @ evecsSA[:,1][:,None]), normalize(evecsSA[:,1][:,None])) | |
| -0.9999999994851148 | |
| >>> np.vdot(normalize(m @ evecsSA[:,1]), normalize(evecsSA[:,1])) | |
| -0.9999999994851148 | |
| >>> np.vdot(normalize(m @ evecsSA[:,0]), normalize(evecsSA[:,0])) | |
| -0.9999999995626186 | |
| >>> (evalsSA,evecsSA) = spla.eigsh(m, k=8, ncv=250, which='SA') | |
| 7 iterations | |
| >>> evalsSA | |
| array([-7.42451042e-10, -7.42442909e-10, -1.04697980e-14, 3.10599130e-06, | |
| 3.10599130e-06, 2.19728078e-03, 2.23392624e-03, 2.23392624e-03]) | |
| >>> 15.6333043006705 * 33.3564095198152 * abs(3.10599130e-06) ** 0.5 | |
| 0.919031074275525 | |
| >>> np.vdot(normalize(m @ evecsSA[:,3]), normalize(evecsSA[:,3])) | |
| 1.0000000000000002 | |
| >>> np.vdot(normalize(m @ evecsSA[:,4]), normalize(evecsSA[:,4])) | |
| 1.0 | |
| >>> np.vdot(normalize(m @ evecsSA[:,5]), normalize(evecsSA[:,5])) | |
| 1.0000000000000002 | |
| >>> np.vdot(normalize(m @ evecsSA[:,6]), normalize(evecsSA[:,6])) | |
| 1.0 | |
| >>> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment