# Tag Info

## Hot answers tagged arpack

8

The matrix B (M in the documentation) needs to positive definite according to the documentation: "If sigma is None, M is positive definite", this is in addition to the first requirement "M must represent a real, symmetric matrix if A is real" which your B follows. The eigenvalues of your current matrix B are -1, 1 and 6. So matrix B is ...

6

No, there is no specialized ARPACK routine for complex Hermitian matrices. The ARPACK authors recommend using the znaupd routine for both Hermitian and non-Hermitian problems: https://www.caam.rice.edu/software/ARPACK/UG/node43.html#SECTION00790000000000000000 Reasoning (direct quote from the ARPACK manual): Occasionally, when using znaupd on a complex ...

4

Looks like everything is working relatively OK? Your matrix is of order 1e10, so residuals of 1e-4 are actually close to machine precision. The convergence criterion is indeed violated, but not by much; not sure what's going on there, are you sure Arpack really guarantees it or is it a best effort kind of thing? It surprises me that you get different results ...

4

The eigen-distribution is governing the convergence of the Lanczos algorithm. When the eigenvalues are "well-separated", the Lanczos algorithm should be fairly fast. When some eigenvalues are clustered or multiples, computing the clustered (or multiple) eigenvalues slows down the convergence. The spread of the eigenvalues also matters (i.e. the ratio between ...

3

I've summarized the comments thread of your original question into an answer. Here are a few things that you can try: Increase the number of your Arnoldi vectors (NCV) generated at each iteration. Here's what the ARPACK documentation for DSAUPD says about this: At present there is no a-priori analysis to guide the selection of NCV relative to NEV (the ...

3

Since no one else has responded to this, I'll take a shot at it. I'm doubtful you will find an option like you are looking for in Arpack. Here is why I think that. The algorithms in Arpack are based on constructing a vector subspace called a Krylov sequence as follows $$K = \{x, Ax, A^2x, A^3x... A^nx\}$$ where $x$ is the single vector you are allowed ...

3

If there are no algorithms specifically for sparse Hermitian matrices, a practical alternative is to convert the problem into double-sized real matrices. Write the complex matrix-vector products in your problem, for example $Ax$, in real an imaginary parts $(A_r + i A_i)(x_r + i x_i)$, and then convert to real symmetric matrix products like \begin{bmatrix}...

1

OK, so with new version in edit: it's not your fault, it's https://github.com/JuliaLinearAlgebra/Arpack.jl/issues/87. You can either call Arpack manually yourself, or even better use a pure-julia solver (KrylovKit.jl and IterativeSolvers.jl are good choices)

1

Generally, taking advantage of $A$'s structure (sparsity/bandedness) has no bearing on convergence rates but it will always improve the time to apply a matvec via the "reverse communication API" of ARPACK. Actually, it is not very clear what you might be doing, as $10^5$ is too big to store as an explicit dense matrix, you must be exploiting some kind of ...

Only top voted, non community-wiki answers of a minimum length are eligible