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:
- 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.