     Next: Computational Modes for Real Up: General Use of ARPACK Previous: Computational Modes for Real

# Post-Processing for Eigenvectors Using dseupd

On the final return from dsaupd (indicated by ido = 99), the error flag info must be checked. If info = 0 then no fatal errors have occurred and it is time to post-process using dseupd  to get eigenvalues of the original problem and the corresponding eigenvectors if desired. In the case shown here (shift-invert and generalized), there are some subtleties to recovering eigenvectors when is ill-conditioned. This process is called eigenvector purification. It prevents eigenvectors from   being corrupted with noise due to the presence of eigenvectors corresponding to near infinite eigenvalues (See Chapter 4). These operations are completely transparent to the user. The general calling sequence for dseupd is shown in Figure 3.5.

  c c %-------------------------------------------% c | No fatal errors occurred. | c | Postprocess using DSEUPD. | c | | c | Computed eigenvalues may be extracted. | c | | c | Eigenvectors may also be computed now if | c | desired. (indicated by rvec = .true.) | c %-------------------------------------------% c rvec = .true. c call dseupd ( rvec, 'All', select, d, v, ldv, sigma, & bmat, n, which, nev, tol, resid, ncv, v, ldv, & iparam, ipntr, workd, workl, lworkl, ierr ) c 

The input parameters bmat, n, info are precisely the same parameters that appear in the calling sequence of dsaupd. It is extremely IMPORTANT that none of these parameters are altered between the final return from dsaupd and the subsequent call to dseupd.

There is negligible additional cost to obtain eigenvectors. An orthonormal (Lanczos) basis is always computed. In the above example, this basis is overwritten with the eigenvectors in the array v . Both basis sets may be obtained if desired but there is an additional storage cost of if both are requested (in this case a separate n by nev array z must be supplied).

The approximate eigenvalues of the original problem are returned in ascending algebraic order in the array d. If it is desirable to retain the Lanczos basis in v and storage is an issue, the user may elect to call this routine once for each desired eigenvector and store it peripherally. There is also the option of computing a selected set of these vectors with a single call.

The input parameters that must be specified are

• The logical variable rvec = .true. if eigenvectors are requested .false. if only eigenvalues are desired.
• The character*1 parameter howmny that specifies how many eigenvectors are desired. howmny = 'A': compute nev eigenvectors; howmny = 'S': compute some of the eigenvectors, specified by the logical array select.
• sigma should contain the value of the shift used if iparam(7) = 3,4,5. It is not referenced if iparam(7) = 1 or 2.
When requested, the eigenvectors returned by dseupd are normalized   to have unit length with respect to the semi-inner product that was used. Thus, if they will have unit length in the standard 2-norm. In general, a computed eigenvector will satisfy .     Next: Computational Modes for Real Up: General Use of ARPACK Previous: Computational Modes for Real
Chao Yang
11/7/1997