PDF
\(\newcommand{\footnotename}{footnote}\) \(\def \LWRfootnote {1}\) \(\newcommand {\footnote }[2][\LWRfootnote ]{{}^{\mathrm {#1}}}\) \(\newcommand {\footnotemark }[1][\LWRfootnote ]{{}^{\mathrm {#1}}}\) \(\let \LWRorighspace \hspace \) \(\renewcommand {\hspace }{\ifstar \LWRorighspace \LWRorighspace }\) \(\newcommand {\mathnormal }[1]{{#1}}\) \(\newcommand \ensuremath [1]{#1}\) \(\newcommand {\LWRframebox }[2][]{\fbox {#2}} \newcommand {\framebox }[1][]{\LWRframebox } \) \(\newcommand {\setlength }[2]{}\) \(\newcommand {\addtolength }[2]{}\) \(\newcommand {\setcounter }[2]{}\) \(\newcommand {\addtocounter }[2]{}\) \(\newcommand {\arabic }[1]{}\) \(\newcommand {\number }[1]{}\) \(\newcommand {\noalign }[1]{\text {#1}\notag \\}\) \(\newcommand {\cline }[1]{}\) \(\newcommand {\directlua }[1]{\text {(directlua)}}\) \(\newcommand {\luatexdirectlua }[1]{\text {(directlua)}}\) \(\newcommand {\protect }{}\) \(\def \LWRabsorbnumber #1 {}\) \(\def \LWRabsorbquotenumber "#1 {}\) \(\newcommand {\LWRabsorboption }[1][]{}\) \(\newcommand {\LWRabsorbtwooptions }[1][]{\LWRabsorboption }\) \(\def \mathchar {\ifnextchar "\LWRabsorbquotenumber \LWRabsorbnumber }\) \(\def \mathcode #1={\mathchar }\) \(\let \delcode \mathcode \) \(\let \delimiter \mathchar \) \(\def \oe {\unicode {x0153}}\) \(\def \OE {\unicode {x0152}}\) \(\def \ae {\unicode {x00E6}}\) \(\def \AE {\unicode {x00C6}}\) \(\def \aa {\unicode {x00E5}}\) \(\def \AA {\unicode {x00C5}}\) \(\def \o {\unicode {x00F8}}\) \(\def \O {\unicode {x00D8}}\) \(\def \l {\unicode {x0142}}\) \(\def \L {\unicode {x0141}}\) \(\def \ss {\unicode {x00DF}}\) \(\def \SS {\unicode {x1E9E}}\) \(\def \dag {\unicode {x2020}}\) \(\def \ddag {\unicode {x2021}}\) \(\def \P {\unicode {x00B6}}\) \(\def \copyright {\unicode {x00A9}}\) \(\def \pounds {\unicode {x00A3}}\) \(\let \LWRref \ref \) \(\renewcommand {\ref }{\ifstar \LWRref \LWRref }\) \( \newcommand {\multicolumn }[3]{#3}\) \(\require {textcomp}\) \(\newcommand {\intertext }[1]{\text {#1}\notag \\}\) \(\let \Hat \hat \) \(\let \Check \check \) \(\let \Tilde \tilde \) \(\let \Acute \acute \) \(\let \Grave \grave \) \(\let \Dot \dot \) \(\let \Ddot \ddot \) \(\let \Breve \breve \) \(\let \Bar \bar \) \(\let \Vec \vec \) \(\require {mathtools}\) \(\newenvironment {crampedsubarray}[1]{}{}\) \(\newcommand {\smashoperator }[2][]{#2\limits }\) \(\newcommand {\SwapAboveDisplaySkip }{}\) \(\newcommand {\LaTeXunderbrace }[1]{\underbrace {#1}}\) \(\newcommand {\LaTeXoverbrace }[1]{\overbrace {#1}}\) \(\newcommand {\LWRmultlined }[1][]{\begin {multline*}}\) \(\newenvironment {multlined}[1][]{\LWRmultlined }{\end {multline*}}\) \(\let \LWRorigshoveleft \shoveleft \) \(\renewcommand {\shoveleft }[1][]{\LWRorigshoveleft }\) \(\let \LWRorigshoveright \shoveright \) \(\renewcommand {\shoveright }[1][]{\LWRorigshoveright }\) \(\newcommand {\shortintertext }[1]{\text {#1}\notag \\}\) \(\newcommand {\vcentcolon }{\mathrel {\unicode {x2236}}}\)

Matrix-less spectral approximation for large structured matrices

Giovanni Barbarino, Melker Claesson, Sven-Erik Ekström,
Carlo Garoni, David Meadon, and Hendrik Speleers

Abstract

Sequences of structured matrices of increasing size arise in many scientific applications and especially in the numerical discretization of linear differential problems; for example by using Finite Differences (FD), Finite Elements (FE), Finite Volumes (FV), Discontinuous Galerkin (DG), Isogreometric Analysis (IgA). The eigenvalues \(\lambda _j(A_n)\) of matrices \(A_n\), belonging to such a sequence \(\{A_n\}_n\), can often be approximated by a regular expansion:

\begin{align} \label {eq:expansion} \lambda _j(A_n)= \sum _{k=0}^\alpha c_k(\theta _{j,n})h^k+E_{j,n,\alpha }, \qquad j=1,\ldots ,n\qquad \theta _{j,n}=\frac {j\pi }{n+1}, \end{align} where \(c_k: [-\pi ,\pi ]\to \mathbb {C}\) (\(c_0\) is called the spectral symbol and \(c_k, k>0\) are called higher order symbols) and the errors \(E_{j,n,\alpha }=\mathcal {O}(h^{\alpha +1})\).

Hence, if we know these functions \(c_k(\theta )\), or approximate them since they are often not known analytically, we can accurately (and very fast) approximate some (or all) of the eigenvalues of any matrix \(A_n\) simply by evaluating (1).

It was previously shown (under appropriate assumptions, [4, 5]) [1, 7, 8, 9, 10] that for Hermitian sequences \(\{A_n\}_n\), where \(c_0\) is known, that we can approximate \(c_k(\theta _{j,n_0}), k=1,\ldots ,\alpha \) at specified grid points \(\theta _{j,n_0}\) using so-called matrix-less methods. The name is derived from the fact that the spectrum for any matrix \(A_n\) in the sequence \(\{A_n\}_n\) can be approximated by (1) without ever constructing the matrix; only the spectrum of a few small matrices have to be computed. That is, we have equality in (1), up to machine precision, for some chosen \(n=n_0\) and \(\alpha \). These approximations \(c_k(\theta _{j,n_0})\) can then be used for interpolation-extrapolation to any grid \(\theta _{j,n}\) (for any \(n\)) to approximate \(\lambda _j(A_n)\).

In the current presentation, mainly inspired by [3], but also [6, 11], we extend the previous algorithms with two important features:

We here briefly present these two new features.

1. No knowledge of \(c_0\) necessary.

We begin by presenting two simple but representative pure Toeplitz matrix sequences; one Hermitian \(\{T_n(f_1)\}_n\) and one non-Hermitian \(\{T_n(f_2)\}_n\).

\begin{align*} &\scriptstyle \hspace {1em}f_1(\theta )=6-8\cos (\theta )+2\cos (2\theta )&&\scriptstyle \hspace {3em}f_2(\theta )=-e^{\mathbf {i}\theta }+3-3e^{-\mathbf {i}\theta }+e^{-2\mathbf {i}\theta }\\ \scriptstyle T_n(f_1)&=\scriptstyle \left [\def \arraystretch {0.5} \begin{array}{rrrrrrrrr} \scriptstyle 6&\scriptstyle -4&\scriptstyle 1\\ \scriptstyle -4&\scriptstyle 6&\scriptstyle -4&\scriptstyle 1\\ \scriptstyle 1&\scriptstyle -4&\scriptstyle 6&\scriptstyle -4&\scriptstyle 1\\ &\scriptstyle \ddots &\scriptstyle \ddots &\scriptstyle \ddots &\scriptstyle \ddots &\scriptstyle \ddots \\ &&\scriptstyle 1&\scriptstyle -4&\scriptstyle 6&\scriptstyle -4&\scriptstyle 1\\ &&&\scriptstyle 1&\scriptstyle -4&\scriptstyle 6&\scriptstyle -4\\ &&&&\scriptstyle 1&\scriptstyle -4&\scriptstyle 6\\ \end {array} \right ] &&\scriptstyle T_n(f_2)=\scriptstyle \left [\def \arraystretch {0.5} \begin{array}{rrrrrrrrr} \scriptstyle 3&\scriptstyle -3&\scriptstyle 1\\ \scriptstyle -1&\scriptstyle 3&\scriptstyle -3&\scriptstyle 1\\ &\scriptstyle -1&\scriptstyle 3&\scriptstyle -3&\scriptstyle 1\\ &&\scriptstyle \ddots &\scriptstyle \ddots &\scriptstyle \ddots &\scriptstyle \ddots \\ &&&\scriptstyle -1&\scriptstyle 3&\scriptstyle -3&\scriptstyle 1\\ &&&&\scriptstyle -1&\scriptstyle 3&\scriptstyle -3\\ &&&&&\scriptstyle -1&\scriptstyle 3\\ \end {array} \right ] \end{align*} For matrices in the Hermitian sequence \(\{T_n(f_1)\}_n\), we have that the eigenvalues can be approximated by \(\lambda _j(T_n(f_1))\approx c_0(\theta _{j,n})=f_1(\theta _{j,n})\) where \(\theta _{j,n}=j\pi /(n+1)\); the spectral symbol \(c_0\) is known and equal to \(f_1\).

For matrices in the non-Hermitian sequence \(\{T_n(f_2)\}_n\), we have that \(\lambda _j(T_n(f_1))\not \approx f_1(\theta _{j,n})\), we only know that the eigenvalues lie in the convex hull of the complex valued function \(f_2\); the spectral symbol \(c_0\) is not equal to \(f_2\). For most non-Hermitian matrix sequences the \(c_0\) is not known analytically, and the new matrix-less method presented in [3, 11] does not require it to be know. However, the matrix-less method is more efficient and accurate if it is provided.

  • Remark 1 In the specific case of a non-Hermitian sequence \(\{T_n(f_2)\}_n\) presented above we do know that the spectrum is real and the are many viable \(c_0\), e.g. \(c_0(\theta )=\sin ^3(\theta )/(\sin (\theta /3)\sin ^2(2\theta /3))\); see [13] for details.

For clarity we show a Julia implementation below on how to compute a matrix \(C=[c_k(\theta _{j,n_0})]_{k,j=1}^{\alpha +1,n_0}\); the inputs are \(n_0\) (\(\approx 100\)), \(\alpha \) (\(\approx 3\)) and eigfun (a function that returns an ordered set of eigenvalues \(\lambda _j(A_n)\) for a matrix \(A_n\) in \(\{A_n\}_n\)).

function compute_C(\(n_0\), \(\alpha \), eigfun)

hs = zeros(\(\alpha \)+1)

E = zeros(\(\alpha \)+1,\(n_0\))

for kk = 1:\(\alpha \)+1

nk = 2^(kk-1)*(\(n_0\)+1)-1

jk = 2^(kk-1)*(1:\(n_0\))

hs[kk] = 1/(nk+1)

E[kk,:] = eigfun(nk)[jk]

end

V=[hs[ii]^(jj-1) for ii=1:\(\alpha \)+1, jj=1:\(\alpha \)+1]

return C=V\E

end

As is seen above, the algorithm relies on the computed spectrum for \(\alpha +1\) small matrices (of sizes \(n_k=2^{k-1}(n_0+1)-1\), for \(k=1,\ldots ,\alpha +1\)) to compute the elements of \(C\). Subesequenly \(c_k(\theta _{j,n})\) is approximated, using interpolation-extrapolation, for arbitrary \(n\), and used in (1) to approximate \(\lambda _j(A_n)\).

  • Remark 2 If the spectral symbol is non-monotone (e.g., the stiffness matrix for IgA or \(f(\theta )=6-8\cos (\theta )+4\cos (2\theta )\)), the matrix-less method does typically not work in the non-monotone region, since we usually do not know how to order the eigenvalues correctly.

2. Variable coefficients.

The spectral symbol \(f\) of the 2nd order FD discretization of \((a(x)u'(x))'\) is two-dimensional, namely \(f(x,\theta )=a(x)(2-2\cos (\theta ))\), where \(f: [0,1]\times [-\pi ,\pi ]\to \mathbb {C}\); e.g., see [12].

In [3] we show that we can use the rearranged symbol [2] to compute an expansion (1) for discretizations of variable coefficient problems; i.e., we map the function \(f: [0,1]\times [-\pi ,\pi ]\to \mathbb {R}\) to a rearranged symbol \(g: [0,1]\to \mathbb {R}\). In the new matrix-less method we have \(c_0=g\).

  • Remark 3 We emphasize that the class of problems and matrices where this approach can be applied is extensive, e.g.,

    • multi-dimensional problems (size of matrices are then \(d_\mathbf {n}(\mathbf {n})\) and not \(n\));

    • block matrices (e.g., FE/FV/DG);

    • boundary conditions (\(c_0\) is the same, \(c_k, k>0\) changes);

    • \(h\)-dependence, space-time, sums/inverses/products;

    • eigenvectors, singular values, generalized eigenvaklue problems;

    and the approach could also be used to construct preconditioners and other solver techniques.

Apart from the two main points mentioned above, we will also discuss the current framework in detail, possible extension and current developments, and possible applications.

References