arpack、propack和lobpcg都是用于求解大规模稀疏矩阵特征值和特征向量的工具。它们之间的区别在于其算法、实现方式和适用范围等方面。下面是这三种工具的简要介绍和使用示例:
示例代码:
import numpy as np from scipy.sparse.linalg import arpack
n = 100 A = np.diag(2 * np.ones(n)) - np.diag(np.ones(n-1), -1) - np.diag(np.ones(n-1), 1) A[0,n-1] = -1 A[n-1,0] = -1 A_sparse = sps.csr_matrix(A)
k = 5 vals, vecs = arpack.eigs(A_sparse, k=k, which='LM', return_eigenvectors=True)
print('特征值:', vals) print('特征向量:', vecs)