python-scipy-eigs:在最大迭代次数后返回特征向量,无论收敛公差如何

2024-06-24 13:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到一个稀疏对称矩阵的特征向量,在给定的时间内具有最好的精度。
当前,我将以下内容与scipy.sparse.eigsh一起使用:

evals, evecs = eigsh(MyMatrix, 2,which='LM' ,tol=1.e-15, maxiter=1000000)

如果它没有通过maxiter迭代收敛到tol精度,则会产生ArpackNoConvergence错误,该错误包含已收敛的特征向量/值,但不包含未收敛的特征向量/值。但是,我更喜欢使用精度为1.e-14的向量,而不是{}而不是没有向量。有没有一种方法可以强制返回尚未收敛的特征向量(可能与另一个库一起)?
就像在Matlab中一样,eigs函数无论如何都会返回特征向量,如果没有达到所需的精度,则只会发出额外的警告。在

谢谢!在


Tags: which错误时间精度矩阵scipy向量sparse
1条回答
网友
1楼 · 发布于 2024-06-24 13:32:35

^{}异常具有包含部分结果的.eigenvalues和{}属性:

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)

印刷品:

^{pr2}$

相关问题 更多 >