RTRESGEV Eigensolver Package
. > rtresgev.m

rtresgev

PURPOSE ^

RTRESGEV Find a few eigenpairs of a generalized Hermitian definite eigenvalue problem using the Riemannian Trust-Region method.

SYNOPSIS ^

function varargout = rtresgev(varargin);

DESCRIPTION ^

 RTRESGEV   Find a few eigenpairs of a generalized Hermitian definite eigenvalue problem 
   using the Riemannian Trust-Region method.

   Find a few smallest generalized eigenvalues and eigenvectors of the matrices A and B.
   Uses an implentation of the Riemannian Trust-Region algorithm.

   D = RTRESGEV(A) returns a vector of A's 6 smallest signed eigenvalues.
   A must be Hermitian and should be large and sparse.

   [V,D] = RTRESGEV(A) returns a diagonal matrix D of A's 6 smallest signed
   eigenvalues and a matrix V whose columns are the corresponding eigenvectors.

   [V,D,OPS] = RTRESGEV(A) also returns a structure containing information
   on the performance of the algorithm.

   RTRESGEV(A,B) solves the generalized eigenvalue problem A*V == B*V*D.  
   B must be Hermitian positive definite and the same size as A.
   The positive definiteness of B is taken for granted, and will not
   be tested.
   RTRESGEV(A,[],...) indicates the standard eigenvalue problem A*V == V*D.

   RTRESGEV(A,K) and RTRESGEV(A,B,K) return the K smallest signed eigenvalues.

   RTRESGEV(A,K,OPTS) and RTRESGEV(A,B,K,OPTS) specify options:
     OPTS.verbosity: verbose printing at each outer step [0 | {1} | 2]
     OPTS.x0: basis for the initial iterate [{randomly generated}]
     OPTS.tol: outer convergence tolerance [scalar | {1e-6}]
     OPTS.outerstop: mechanism for outer convergence 
          'gradabs' absolute tolerance: quit when |grad_i| < tol
          'gradrel' relative tolerance: quit when |grad_i|/|grad_0| < tol  
          'resrel'  relative tolerance: quit when |res_i|/|lambda_i| < tol (default)

   RTRESGEV(AFUN,N,K,OPTS) and RTRESGEV(AFUN,N,BFUN,K,OPTS) accepts the
   functions AFUN and BFUN instead of the matrix A, where N is the size of A.
   The functions are called like:
      y = feval(AFUN,x);
   and
      y = feval(BFUN,x);

     ---------------------- ADVANCED OPTIONS -----------------------

     Note, any field in OPTS that is not listed below will be passed  
     out of RTRESGEV in OPS. For example,                             
       >> options.desc = 'my favorite test';                            
       >> [V,L,O] = RTRESGEV(...,options);                              
       >> O.desc
       ans = my favorite test

     OPTS.fout: file identifier for printing {1}
          All print statements are directed to fout.
          Typical choices are:
             1, standard output,
             2, standard error,
             or a file handle returned by fopen.
          RTRESGEV will not close the file handle.
     OPTS.debug: debugging checks and output [{0} | 1]
     OPTS.useSA: use 2-D subspace acceleration [false]
                 This is only in effect early in the algorithm.
     OPTS.p: block size for problem [integer | {k}]
          Must satisfy k <= OPTS.p <= n
     OPTS.paramtest: parameter test          [{0} | 1]
          Do not actually run the algorithm, but instead
          test the given parameters, set the defaults, and return them
          in a struct.
          Example: 
             defaultopts = rtresgev(A,B,k,opts);
     OPTS.Vtest: space against which to test at each step
          Canonical sines are computed w.r.t. the euclidean inner product and 
          are stored in OPS.sines. (See note in code header for methodology.)
     OPTS.Ltest: values against which to test at each step 
          Errors between the values in Ltest and the current eigenvalue 
          estimates are stored in OPS.verrors. OPTS.Ltest must contain
          p values, stored in a vector or a diagonal matrix.
     OPTS.maxinner: max number of inner iterations
          Default is the dimension of the tangent space:
             d = n*p - (p^2+p)/2
     OPTS.innerstop: available stopping criteria for the model minimization
          A bitmask of three bits, the default is 3=1+2=maxinner or RTR model grad-based
             bitand(innerstop,1): maxinner iterations reached
             bitand(innerstop,2): RTR model gradient-based stop is enabled (kappa/theta)
             bitand(innerstop,4): stop inner when outer stopping criteria is satisfied
          At least one of these bits must be set.
     OPTS.maxouter: max number of outer iterations  [integer | {100}]
     OPTS.minouter: min number of outer iterations  [integer]
          When OPTS.randomize == 1, default is 2
          Otherwise, default is 0.
          Useful when OPTS.randomize == 1, to allow the algorithm
          opportunity to escape a non-optimal critical point.
          Note, the algorithm always performs one outer step before
          checking the outer stopping criteria, as long as the gradient
          is non-zero.
     OPTS.randomize: randomize model minimization   [{0} | 1]
          This randomizes the initial solution to the model minimization.
          Otherwise, initial solution is the origin. See OPTS.min_outer.
          Randomization must be disabled if a preconditioner is used.
     OPTS.kappa: convergence: see paper   [scalar | {0.1}]
          kappa effects a linear reduction in the 
          residual before truncating the inner solver.
          Must satisfy 0 < kappa <= 1
     OPTS.theta: convergence: see paper   [scalar | {1.0}]
          theta effects a superlinear convergence rate
          by introducing a more strict stopping criteria on 
          the inner problem, as the algorithm nears solution.
          The algorithm seeks order theta+1 convergence.
          Must satisfy 0 <= theta <= 2 for a maximum cubic 
          rate of convergence
     OPTS.rho_prime: TR: acceptance ratio [scalar | {0.1}]
          The ratio between the reduction in the Rayleigh
          quotient and reduction in the quadratic model
          is used as an acceptance criteria for a new proposal.
          Should satisfy 0 < rho_prime < .25
     OPTS.Delta_bar: TR: max trust region size [scalar | {inf}]
     OPTS.Delta0: TR: initial trust region size [scalar | {p*sqrt(3)}]
          Must satisfy 0 <= Delta0 <= Delta_bar
     OPTS.Prec: preconditioner for the inner iteration.

     Regarding Preconditioning: A preconditioner for the inner iteration may be 
        specified via OPTS.Prec. The preconditioner will be invoked as follows:
           Peta = feval(OPTS.Prec,X,BX,eta);
        The input to the preconditioner will always be B-orthogonal.
        The preconditioner must return a matrix which is B-orthogonal to X.
        See, for example, 'precDLP'

    Examples:
       A = delsq(numgrid('C',15));
       B = speye(15);
       [V,D] = rtresgev(A,B,5);

 See also IRTRESGEV

CROSS-REFERENCE INFORMATION ^

This function calls:
This function is called by:

Generated on Wed 19-Mar-2008 18:10:47 by m2html © 2003