Softwares
FAME (Fast Algorithms for Maxwell's Equations)
Solve the shift linear system (A - sigma B) x = b
FFT for matrix-vector multiplication with matrix T
Solve FFT-based preconditioning linear system
Solve the generalized eigenvalue problem A x = lambda B x by Krylov method
Solve the linear system K x = b in the null-space free eigenvalue problem (NFSEP)
Solve NFSEP K u = lambda u by Lanczos method
Solve NFSEP K u = lambda u by SIRA
License: Copyright (c) 2022 by Tsung-Ming Huang and Wen-Wei Lin
Reference: Xing-Long Lyu, Tiexiang Li, Tsung-Ming Huang, Jia-Wei Lin, Wen-Wei Lin, and Sheng Wang, FAME: fast algorithms for Maxwell's equations for three-dimensional photonic crystals, ACM Trans. Math. Softw. 47, 3, Article 26 (June), 2021.
PQZ (Periodic QZ matlab software)
This program computes the periodic Schur decomposition (PSD) of the matrix product
Bp^{-1} * Ap * ... * B1^{-1} * A1, where p is the period.
In addition, we can also select to accumulate the orthogonal matices Q_i's or Z_i's. That is
Q_j * B_j * Z_j = Bj, Q_j * A_j * Z_{j-1} = Aj, Z_0 = Z_p, for j = 1: p,
where A1 is qusi-upper triangular and A2, ..., Ap, B1, ..., Bp are upper triangular matrices.
Download (PQZ.zip)
License: Copyright (c) 2016 by Hung-Yuan Fan, Tsung-Ming Huang and Wen-Wei Lin
Structure-preserving T-skew-Hamiltonian Arnoldi method
This program is a structure-preserving solver for finding the eigenpairs with the largest magnitude eigenvalues of the eigenproblem
B x = lambda x,
where B is T-skew-Hamiltonian. It is applied T-skew-Hamiltonian Arnoldi algorithm to compute the target eigenpairs with the largest magnitude eigenvalues.
Syntax:
[ev, ew, inv_u, hess_h, outer_it] = SHIRA_Gen(mtx_B, nn, eigswanted, opts)
Input:
mtx_B : coefficient matrix or the function handle instead of the explicitly matrix form with dim = 2*nn.
nn : 2*nn is the matrix dimension of the coefficient matrix.
eigswanted : the number of the wanted largest magnitude eigenvalues.
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:
ev : convergence right eigenvectors
ew : convergence eigenvalues
inv_u : T-symplectic matrix spanning the invariant subspace
hess_h : upper Hessenberg matrix for mtx_B * inv_u = inv_u * hess_h
outer_it : number of the iterations of Arnoldi method
II. Second type of T-skew-Hamiltonian B:
B = N1^{-1} K N2^{-1}
K = - tau L J L^T J^T,
N1 = ( M - tau L ),
N2 = J ( M^T - tau L^T ) J^T,
M = [ A1, 0; -A0, -I ],
L = [ 0, I; A1^T, 0],
J = [0, I; -I, 0].
Note that (M, L) is a T-sympletic pair.
Syntax:
[ev, ew, inv_u, hess_h, outer_it] = SHIRA_TSymplP(mtx_A0, mtx_A1, mtx_A1T, linear_solver_A1A0A1T, linear_solver_A1TA0A1, nn, tau, eigswanted, opts)
Input:
mtx_A0, mtx_A1 : coefficient matrices or the function handles of matrix-vector multiplications.
mtx_A1T : the transpose matrix of mtx_A1, i.e., mtx_A1T = mtx_A1.' or the function handles of matrix-vector with matrix mtx_A1.'
linear_solver_A1A0A1T : the function handle for solving the linear system
(tau^2 mtx_A1 + tau mtx_A0 + mtx_A1.') x = b.
Syntax: x = linear_solver_A1A0A1T( tau, b)
linear_solver_A1TA0A1 : the function handle for solving the linear system
(tau^2 mtx_A1.' + tau mtx_A0 + mtx_A1) x = b.
Syntax: x = linear_solver_A1TA0A1( tau, b)
nn : the matrix dimension of the coefficient matrices.
tau : shift value
eigswanted : the number of the wanted largest magnitude eigenvalues.
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:
ev : convergence right eigenvectors
ew : convergence eigenvalues
inv_u : T-symplectic matrix spanning the invariant subspace
hess_h : upper Hessenberg matrix for mtx_B * inv_u = inv_u * hess_h
outer_it : number of the iterations of Arnoldi method
Download (SHIRA.zip)
License: Copyright (c) 2018 by Tsung-Ming Huang and Wen-Wei Lin
Reference:
Tsung-Ming Huang, Wen-Wei Lin and Jiang Qian, Structure-preserving algorithms for palindromic quadratic eigenvalue problems arising from vibration on fast trains, SIAM J. Matrix Anal. Appl., Vol. 30, pp. 1566-1592, 2009.
Structure-preserving Generalized T-skew-Hamiltonian Arnoldi method
This program is a structure-preserving solver for finding the eigenpairs with the eigenvalues closest to a given shift of the eigenvalue problem
M * z = lambda * L * z,
where
M = [ mtx_A, 0; mtx_Q, -I ], L = [ 0, I; mtx_A.', 0 ], z = [ x; y ].
Note that (M, L) is a T-sympletic pair and (lambda, x) is an eigenpair of the T-Palindromic Quadratic Eigenvalue Problem
P(lambda) x = (lambda^2 * mtx_A.' - lambda * mtx_Q + mtx_A) x = 0.
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 ] = TSymplecticPair_GTSHIRA( n, mtx_A, mtx_Q, solve_LS_PQEP, shift, eigenwanted, restart_info, opts, R, H, Y, Z)
Input:
n : the matrix dimension of the coefficient matrices mtx_A and mtx_Q.
mtx_A : the function handle of matrix-vector 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-vector multiplication mtx_Q*v.
solve_LS_PQEP : the function handle for solving the linear system
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
restart_info : 'no' or 'yes'
'yes' : need to input Y, Z, H, R which satisfy the initial generalized T-isotropic Arnoldi factorization, i.e.,
mtx_K * Z = Y * H, mtx_N * Z = Y * R,
where (K,N) is T-skew-Hamiltonian.
'no' : using random initial vector as an initial vector of GTSHIRA
Y, Z : orthonormal matrices, Y and Z are T-bi-isotropic (option)
H : upper Hessenberg matrix (option)
R : upper triangular matrix (option)
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
Remark:
( ew_new, ev_new(1:n,:) ) are the eigenpairs of T-Palindromic Quadratic Eigenvalue Problem.
Tsung-Ming Huang, Wen-Wei Lin and Jiang Qian, Structure-preserving algorithms for palindromic quadratic eigenvalue problems arising from vibration on fast trains, SIAM J. Matrix Anal. Appl., Vol. 30, pp. 1566-1592, 2009.
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.
Matrix generator of SAW filter
We provide a generator of the coefficient matrices of the generalized eigenvalue problems that arise from modeling leaky surface wave propagation in an acoustic resonator with an infinite amount of periodically arranged interdigital transducers. The constitutive equations are discretized by finite element methods with mesh refinements along the electrode interfaces and corners.
Syntax:
[mtx_M1, mtx_M2, mtx_F, mtx_G] = mtx_SAW_filter(test_case, omega, mesh_size, refine_level)
Input variables:
test_case : benchmark problem ('LiNbO_3', or, 'LiTaO_3', or 'quartz')
omega : frequency
mesh_size : length of the mesh
refine_level : level of the refining (0: uniform mesh, 2: non-uniform mesh)
Download (mtx_SAW_filter.zip)
License: Copyright (c) 2018 by Tsung-Ming Huang, Wen-Wei Lin and Chin-Tien Wu
Reference:
Tsung-Ming Huang, Wen-Wei Lin and Chin-Tien Wu, Structure-preserving Arnoldi-type algorithm for solving eigenvalue problems in Leaky surface wave propagation, Applied Mathematics and Computation, Vol. 219, 9947-9958, 2013.
Tsung-Ming Huang, Tiexiang Li, Wen-Wei Lin and Chin-Tien Wu, Numerical studies on structure-preserving algorithms for surface acoustic wave simulations, Journal of Computational and Applied Mathematics, Vol. 244, pp. 140-154, 2013.
Structured eigen-solvers for SAW filter
SAW_filter_TSHIRA and SAW_filter_GTSHIRA are matlab functions which are used T-skew-Hamiltonian Arnoldi algorithm and Generalized T-skew-Hamiltonian Arnoldi algorithm, respectively, to compute the target eigenpairs of the generalized eigenvalue problem arising leaky surface wave propagation in an acoustic resonator with an infinite amount of periodically arranged interdigital transducers.
Syntax:
[EW, EV, res_norm, NRes, err_recip, outer_it] = SAW_filter_TSHIRA(mtx_G, mtx_F, mtx_M1, mtx_M2, tau, eigswanted, opts)
Input variables:
mtx_G . : complex matrix
mtx_F . : complex matrix
mtx_M1 . : complex symmetric matrix with dimension n
mtx_M2 . : complex symmetric matrix with dimension m where m < n
tau . : the shift value
eigswanted : number of wanted eigenvalues which are closest to tau
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 variables:
EW : Matrix with two columns. The entries in the first and second column of this matrix are the target eigenvalues which are located inside and outside, respectively, the unit circle.
EV : three dimensional array. The columns of EV(:,:,1) and EV(:,:,2) are the eigenvectors corresponding to eigenvalues EW(:,1) and EW(:,2), respectively.
res_nrom : two dimensional array. The first and second columns are represented the residuals of (EW(:,1),EV(:,:,1)) and (EW(:,2),EV(:,:,2)), respectively.
NRes . : two dimensional array. The first and second columns are represented the normalized residuals of (EW(:,1),EV(:,:,1)) and (EW(:,2),EV(:,:,2)), respectively.
err_recip : the reciprocal error of (EW(:,1), EW(:,2)).
outer_it . : number of outer iterations of TSHIRA.
Download (SAW_filter_TSHIRA.zip)
License: Copyright (c) 2018 by Tsung-Ming Huang and Wen-Wei Lin