path( path, 'ABLEpack/src/' ); path( path, 'ABLEpack/testing/testsrc/' ); path( path, 'ABLEpack/testing/testmat/' );
Name | Type | Description |
problem | integer | 1: standard eigenvalue problem A x = lambda x 2: generalized eigenvalue problem A x = lambda B x |
matbal | integer | Only meaningful if problem == 1. 0: do not perform matrix balance pre-processing 1: perform matrix balance pre-processing |
A | sparse matrix | matrix A |
B | sparse matrix | matrix B, only meaningful if problem != 1 should be set to the identity matrix if problem == 1 |
neig | integer | minimum number of eigenvalues desired |
Name | Type | Default Value | Description |
fulldual | integer | 1 | if == 1, rebiorthogonalization at every step |
semidual | integer | 0 | if == 1, rebiorthogonalize only at selected steps |
group | integer | 0 | if == 1, adapt blocksize |
treatbd | integer | 0 | if == 1, treat breakdown |
nb | integer | 1 | number of blocks, if > 1, block Lanczos used |
maxit | integer | n | maximum number of iterations |
precond | integer | 0 | 0: no preconditioning 1: LU factorization, shift-and-invert others described in file matvec.m, but not tuned for problem type 2, precond is ALWAYS 1, regardless of user input |
alpha | double | 0.0 | shift value, meaningless if precond == 0 do NOT use a shift value of zero with singular matrices |
L | matrix | 0 | L factor of LU decomposition of (A - alpha * B) if both L and U are zero, they will be computed |
U | matrix | 0 | U factor of LU decomposition of (A - alpha * B) if both L and U are zero, they will be computed |
level fulldual semidual group treatbd 1 0 0 0 0 (eigenvalues only) 2 1 0 0 0 3 0 1 0 0 4 1 1 1 1 (only one of fulldual or semidual is required)
[ neig, ritz, eigvecl, eigvecr, resl, resr, condnum ]... = ppp( problem, matbal, A, B, neig );Here, all the input is provided.
[ neig, ritz, eigvecl, eigvecr, resl, resr, condnum ]... = ppp( problem, matbal, A, B, neig, ... fulldual, semidual, group, treatbd, ... nb, maxit, precond, alpha, L, U );In the current version, you must either provide all of the optional input parameters, or none of them, you can't provide some but not others.
Name | Type | Description |
neig | integer | number of converged Ritz values |
ritz | double array | Ritz values (approximate eigenvalues) |
eigvecl | double array | left eigenvectors |
eigvecr | double array | right eigenvectors |
resl | double array | left residual norms of all Ritz pairs |
resr | double array | right residual norms of all Ritz pairs |
condnum | double array | condition number of converged Ritz values only returned if level >= 2 |
ritzvalue | double array | eigenvalues of matrix T |
szoft | integer | size of T, reduced (block) tridiagonal matrix |
duality | double array | estimated duality (biorthogonality) of Lanczos vectors |
exdual | double array | exact duality |
omega | double array | k'th element of omega is the smallest singular value of P_k^T*Q_k, where P_k and Q_k are the k'th blocks of the left and right eigenvectors. |
resl_e | double array | exact left residuals |
resr_e | double array | exact right residuals |
tolconv | double | stopping criterion for convergence test |
numlsteps | integer | number of Lanczos steps |