Deflated TPQEP

This program is a structure-preserving solver for finding the eigenpairs with the eigenvalues closest to a given shift of the deflated T-Palindromic Quadratic Eigenvalue Problem

DP(lambda) x = (lambda^2 * A.' - lambda * Q + A) x = 0,

which move the eigenvalues defl_ew and 1./defl_ew of the original T-Palindromic Quadratic Eigenvalue Problem

P(lambda) x = (lambda^2 * mtx_A.' - lambda * mtx_Q + mtx_A) x = 0

into infinity.

The program is applied Generalized T-skew-Hamiltonian Arnoldi algorithm to compute the target eigenpairs with the eigenvalues closest to a given shift.


Syntax:

[ ew_new, ev_new, outer_it ] = Deflated_TQEP_GTSHIRA( nn, mtx_A, mtx_Q, solve_LS_PQEP, shift, eigenwanted, defl_ew, ev_inUC, ev_outUC, opts)

Input:

  • nn : the matrix dimension of the coefficient matrices mtx_A and mtx_Q.
  • mtx_A : the function handle of matrix-matrix multiplications mtx_A*U and mtx_A.'*U.

Syntax: X = mtx_A( U, transp_flag)

if transp_flag = 'transp', then the function handle computes

X = mtx_A.' * U

else (transp_flag = 'notransp') it computes

X = mtx_A * U

end

  • mtx_Q : coefficient matrix or the function handle of matrix-matrix multiplication mtx_Q*V.
  • solve_LS_PQEP : the function handle for solving the linear systems with multi right-hand vectors.

Syntax: X = solve_LS_PQEP( B, transp_flag)

if transp_flag = 'transp', then the function handle solves

(shift^2 * mtx_A.' - shift * mtx_Q + mtx_A).' X = B

else (transp_flag = 'notransp') it solves

(shift^2 * mtx_A.' - shift * mtx_Q + mtx_A) X = B

end

  • shift : shift value
  • eigswanted : the number of the wanted largest magnitude eigenvalues
  • defl_ew : |defl_ew| <= 1, eigenvalues of P(lambda) which are to be deflated
  • ev_inUC : eigenvectors of P(lambda) corresponding to eigenvalues defl_ew
  • ev_outUC : eigenvectors of P(lambda) corresponding to eigenvalues 1./defl_ew
  • opts : specify options
  • opts.tol : tolerance of the convergence (default is eps)
  • opts.p : number of Arnoldi vectors to restart, eigswanted+1<p<=N (default is 3*eigswanted)
  • opts.maxit : maximum number of iterations (default is 300)
  • opts.v0 : initial starting vector (default is random vector)


Output:

  • ew_new : one dimensional array (convergence eigenvalues)

ew_new(1:2:end) save the eigenvalues lambda with abs(lambda) <= 1

ew_new(2:2:end) save the eigenvalues lambda with abs(lambda) >= 1

ew_new(2*i-1) * ew_new(2*i) = 1

  • ev_new : two-dimensional array (convergence right eigenvectors)

ev_new(:,1:2:end) save the eigenvectors corresponding to ew_new(1:2:end)

ev_new(:,2:2:end) save the eigenvectors corresponding to ew_new(2:2:end)

  • outer_it : number of the iterations of Arnoldi method


  • Download (GTSHIRA.zip)
  • License: Copyright (c) 2019 by Tsung-Ming Huang and Wen-Wei Lin
  • Reference:
  1. Tsung-Ming Huang, Wen-Wei Lin, Heng Tian and Guan-Hua Chen, Computing the Full Spectrum of Large Sparse Palindromic Quadratic Eigenvalue Problems arising from Surface Green's Function calculations, Journal of Computational Physics, Vol. 356, 340-355, 2018.