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 |