2
我想獲得稀疏對稱矩陣的特徵向量,在給定時間內負擔得起的最佳精度。
目前我使用了與scipy.sparse.eigsh
如下:python scipy eigs:無論收斂容差最大迭代次數後返回eigenvector
evals, evecs = eigsh(MyMatrix, 2,which='LM' ,tol=1.e-15, maxiter=1000000)
如果它不maxiter
迭代收斂到tol
精度,它提出了一個ArpackNoConvergence
錯誤,包含收斂的特徵向量/值,但不是說做的那些不。然而,我更喜歡使用精度爲1.e-14
的矢量而不是1.e-15
而不是矢量。有沒有辦法強制返回尚未收斂的特徵向量(可能與另一個庫)?
像在Matlab中一樣,eigs
函數無論如何都會返回特徵向量,如果沒有達到所需的精度,只需要一個額外的警告。
謝謝!
謝謝!但我想要的是訪問正在計算並且沒有完全收斂的eingenvalue/vector。例外只包含那些已經收斂到所需精度的例外。我想在給定次數的迭代中獲得最佳精度。 –
我認爲一個快速的解決方法是迭代地減小容差,直到'eigs'不再在指定的迭代次數內收斂。除此之外,我認爲應該可以通過手動構建['scipy.sparse.linalg.arpack._SymmetricArpackParams'](https://github.com/scipy/scipy/blob)來獲得部分收斂的特徵值/矢量/master/scipy/sparse/linalg/eigen/arpack/arpack.py#L370-L585)對象,在其上調用'.iterate()',然後在迭代失敗時使用'.extract()'恢復特徵值/向量。 –
我會盡量在有空的時候更新我的答案。 –