【发布时间】:2022-01-25 03:08:50
【问题描述】:
我正在使用大约 100000x100000 hermitian complex sparse-matrices,填充了大约 5% 的条目,并且想要计算特征值/特征向量。
到目前为止,我一直在使用 Arpack.jl eigs(A)。
但是,一旦我将大小调到高于 5000,这将无法正常工作。
对于基准测试,我一直在使用以下代码生成一些 TestMatrices:
using Arpack
using SparseArrays
using ProgressMeter
pop = 0.05
n = 3000 # for example
A = spzeros(Complex{Float64}, n, n)
@showprogress for _ in 1:round(Int,pop * (n^2))
A[rand(1:n), rand(1:n)] = rand(Complex{Float64})
end
# make A hermite
A = A + conj(A)
t = @elapsed eigs(A,maxiter=1500) # ends up being ~ 13 seconds
对于 n ~ 3000,eigs() 在我的机器上调用已经需要 13 秒,对于更大的 n,它不会在任何“合理”时间内完成或直接退出。
有专门的包/方法吗?
感谢任何帮助
【问题讨论】:
标签: julia sparse-matrix eigenvalue arpack