gpt4 book ai didi

python scipy eigs : return eigenvector after maximum number of iterations whatever the convergence tolerance

转载 作者:太空宇宙 更新时间:2023-11-03 12:05:25 28 4
gpt4 key购买 nike

我想在给定时间内以可承受的最佳精度获得稀疏对称矩阵的特征向量。
目前我将以下内容与 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 exception 具有包含部分结果的 .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))

关于 python scipy eigs : return eigenvector after maximum number of iterations whatever the convergence tolerance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33452383/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com