![](/img/trans.png)
[英]How to control the maximum number of iterations in scipy's solve_ivp?
[英]python scipy eigs : return eigenvector after maximum number of iterations whatever the convergence tolerance
我想得到一个稀疏对称矩阵的特征向量,在给定时间内具有最低的精度。
目前我在scipy.sparse.eigsh
使用以下scipy.sparse.eigsh
:
evals, evecs = eigsh(MyMatrix, 2,which='LM' ,tol=1.e-15, maxiter=1000000)
如果它没有通过maxiter
迭代收敛到tol
精度,它会引发一个ArpackNoConvergence
错误,其中包含已收敛的特征向量/值,但不包含那些未收敛的特征向量/值。 然而,我更倾向于使用精度为1.e-14
而不是1.e-15
向量,而不是根本没有向量。 有没有办法强制返回尚未收敛的特征向量(可能与另一个库)?
就像在Matlab中一样, eigs
函数无论如何都返回特征向量,如果没有达到所需的精度,只需要一个额外的警告。
谢谢 !
ArpackNoConvergence
异常具有包含部分结果的.eigenvalues
和.eigenvectors
属性:
import numpy as np
from scipy.sparse.linalg import eigsh, ArpackNoConvergence
M = np.random.RandomState(0).randn(100, 100)
try:
w, v = eigsh(M, 5, maxiter=20)
except ArpackNoConvergence as e:
print(e)
w = e.eigenvalues
v = e.eigenvectors
print(w.shape, v.shape)
打印:
ARPACK error -1: No convergence (21 iterations, 2/5 eigenvectors converged)
((2,), (100, 2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.