Solving nonlinear eigenvalue problems
Mario Berljafa and Stefan GüttelDownload PDF or m-file
Contents
Introduction
We consider the problem of finding eigenvalues and nonzero eigenvectors
of a nonlinear eigenvalue problem (NLEP)
Here is a compact target set in the complex plane and
is a family of
matrices depending analytically on
. A popular approach for solving such problems is to approximate
by a polynomial or rational eigenvalue problem of the form
where the are
matrices, and the
are polynomials or rational functions in
. Provided that the
can be generated by a linear recursion, the problem
can be "linearised" into a linear pencil
of size
, which in practice can be rather large depending on
and
.
The NLEIGS linearisation
The NLEIGS linearisation [3] is based on rational interpolation, with the chosen as rational basis functions of the form
Here, the are interpolation nodes on the boundary of
, and the
are poles which can be chosen freely, for example all at infinity (which leads to a polynomial interpolant) or on a singularity set
of
. The advantage of employing an interpolation-based approximation
is that the matrices
can be obtained solely by sampling
, provided that the nodes
are distinct. For more details we refer to [3, Section 2.1].
The numbers are scaling factors which, as suggested in [3], are chosen so that
This scaling has the advantage that the norms
give an indication of the approximation accuracy of
for
; see [3, Section 4] for more details.
Leja-Bagby sampling
To obtain a computationally efficient method it is desirable that is a good approximation for all
with a small degree parameter
. This suggests to use an (asymptotically) optimal rational interpolation procedure and we propose to choose the
as Leja-Bagby points on
[1, 9].
More precisely, choosing arbitrarily, we define the nodes
and poles
so that the following conditions are satisfied:
with the nodal functions defined as
The Gun problem
We now demonstrate the above with an example taken from the problem collection [2]. We use the so-called gun problem, which is a model of a radio-frequency gun cavity [5]. The corresponding NLEP is
where are sparse
matrices. Let us define a function handle to the NLEP.
if exist('nlevp') ~= 2 disp('Function nlevp.m not found. Can be downloaded from:') disp(['http://www.maths.manchester.ac.uk/our-research/research-groups' ... '/numerical-analysis-and-scientific-computing/numerical-analysis/' ... 'software/nlevp/']) return end [coeffs, fun] = nlevp('gun'); n = size(coeffs{1}, 1); A = @(lam) 1*coeffs{1} - lam*coeffs{2} + ... 1i*sqrt(lam)*coeffs{3} + ... 1i*sqrt(lam-108.8774^2)*coeffs{4};
The target set for this problem is an upper-half disk with center
and radius
. Note that the definition of
involves two branch cuts
and
caused by the square roots, and the union of these two is a good choice for the singularity set
.
We can now use the utility function util_nleigs to sample the NLEP on the target set using poles from the singularity set
. The function requires as inputs a function handle to
, the vertices of
and
represented by polygons, a tolerance for the sampling procedure, and the maximal number of terms.
Nmax = 50; Sigma = 62500 + 50000*exp(1i*pi*[1, linspace(0, 1)]); Xi = [-inf, 108.8774^2]; tol = 1e-15; QN = util_nleigs(A, Sigma, Xi, tol, Nmax); disp(QN)
RKFUNM object of size 9956-by-9956 and type (32, 31). Complex sparse coefficient matrices of size 9956-by-9956. Complex-valued Hessenberg pencil (H, K) of size 33-by-32.
As we can see, the output of util_nleigs is an RKFUNM object QN representing , a rational matrix-valued function which interpolates
at the nodes
(i.e.,
for all
). We can evaluate
at any point
in the complex plane by typing QN(z). The linearize function can be used to convert
into an equivalent linear matrix pencil structure
with the same eigenvalues as
. Via
we can also access the norms
of the matrices
in the expansion of
. Apparently, a degree of
was sufficient to represent
to accuracy
:
LN = linearize(QN); figure(1), semilogy(0:LN.N, LN.nrmD/LN.nrmD(1), 'r-'), grid on legend('relative Frobenius norm of D_j'); xlabel('j') axis([0, LN.N, 1e-16, 1])

Luckily this is quite small due to the Leja-Bagby sampling strategy employed by util_nleigs. However, the full linearisation matrices
are of size
and hence quite large. Here is a spy plot of
.
[AN,BN] = LN.get_matrices(); figure(2) subplot(1,2,1), spy(AN), title('A_N') subplot(1,2,2), spy(BN), title('B_N')

The LN structure provides two function handles multiply and solve, which can be used by the rat_krylov function to compute a rational Krylov basis for without forming these matrices explicitly [7, 8]. For the rational Arnoldi algorithm we choose, rather arbitrarily,
cyclically repeated shifts in the interior of
.
shifts = [9.6e+4, 7.9e+4+1.7e+4i, 6.3e+4, 4.6e+4+1.7e+4i, 2.9e+4];
Let us first plot the target set, the sampling points , the poles
, and the shifts of the rational Krylov space:
figure(3) fill(real(sqrt(Sigma)), imag(sqrt(Sigma)), [1 1 .6]) hold on plot(sqrt(LN.sigma), 'gx', 'Color', [0 .5 0]) plot(sqrt(LN.xi(LN.xi>0))+1i*eps, 'r.', 'MarkerSize', 14) plot(sqrt(shifts), 'mo') xlabel('Re sqrt(lambda)'), ylabel('Im sqrt(lambda)') legend('target set \Sigma', 'interpolation nodes \sigma_j', ... 'poles \xi_j', 'RK shifts', 'Location', 'NorthWest') axis([0,350,-10,110])

The computation of the rational Arnoldi decomposition is conveniently performed by providing the pencil structure LN as the first input argument to the rat_krylov function. Here,
and the starting vector is chosen at random.
Note: The shifts in this example are cyclically repeated and the solve function provided in the LN structure attempts to reuse LU factors of matrices whenever possible. The five LU factors required for this example are stored automatically as persistent variables within the solve function.
v = randn(LN.N*n, 1);
shifts = repmat(shifts, 1, 14);
[V, K, H] = rat_krylov(LN, v, shifts, struct('waitbar', 1));
From the rational Arnoldi decomposition we can easily compute the Ritz pairs for the linearisation . In the following we extract the Ritz values in the interior of
and find, consistently with [3], that there are 21 Ritz values. The leading
elements of the corresponding Ritz vectors (normalised to unit norm) are then approximations to the eigenvectors
of
.
[X, D] = eig(H(1:end-1, :), K(1:end-1, :));
ritzval = diag(D);
ind = inpolygon(real(ritzval), imag(ritzval), ...
real(Sigma), imag(Sigma));
ritzval = ritzval(ind);
ritzvec = V(1:n, 1:end)*(H*X(:, ind));
ritzvec = ritzvec/diag(sqrt(sum(abs(ritzvec).^2)));
disp(length(ritzval))
21
Let us compute the nonlinear residual norm for all 21 Ritz pairs
:
res = arrayfun(@(j) norm(A(ritzval(j))*ritzvec(:, j), 'fro'), ... 1:length(ritzval)); figure(4) semilogy(res, 'b-o'), xlim([1, length(res)]) legend('residual norm of Ritz pairs') xlabel('index of Ritz pair'), hold on

We find that all but Ritz pairs are good approximations to the eigenpairs of the nonlinear problem. Let us run five more rational Arnoldi iterations by using as shift the mean of the four nonconverged Ritz values. This can be done by simply extending the existing rational Arnoldi decomposition.
% Use mean of Ritz values. shifts = repmat(mean(ritzval(res>1e-8)), 1, 5); % Extend the decomposition. [V, K, H] = rat_krylov(LN, V, K, H, shifts, struct('waitbar',1));
Now let us compute the improved Ritz pairs and the corresponding nonlinear residuals exactly as above:
[X, D] = eig(H(1:end-1, :), K(1:end-1, :)); ritzval = diag(D); ind = inpolygon(real(ritzval), imag(ritzval), ... real(Sigma), imag(Sigma)); ritzval = ritzval(ind); ritzvec = V(1:n, 1:end)*(H*X(:, ind)); ritzvec = ritzvec/diag(sqrt(sum(abs(ritzvec).^2))); res = arrayfun(@(j) norm(A(ritzval(j))*ritzvec(:, j), 'fro'), ... 1:length(ritzval)); figure(4) semilogy(res, 'r-o') legend('residual norm of Ritz pairs','residual norm (extended)')

All wanted Ritz pair are now of sufficiently high accuracy and we are done. Finally, here is a plot of the Ritz values, which coincides with [3, Figure 4(a)]:
figure(3) plot(sqrt(ritzval), 'b+') legend('target set \Sigma', 'interpolation nodes \sigma_j', ... 'poles \xi_j', 'RK shifts', '21 Ritz values', ... 'Location', 'NorthWest')

Variants and extensions
The linearisation computed by util_linearise_nlep is referred to as the "static variant of NLEIGS" in [3]. The NLEIGS algorithm, which is also available online, supports the dynamic expansion of the linearisation as the rational Arnoldi iteration progresses. This dynamic expansion is inspired by the "infinite Arnoldi algorithm" presented in [4]. The CORK algorithm in [8] is a memory-efficient variant of NLEIGS which exploits the special structure of the Krylov basis vectors
associated with
.
References
[1] T. Bagby. On interpolation by rational functions, Duke Math. J., 36:95--104, 1969.
[2] T. Betcke, N. J. Higham, V. Mehrmann, C. Schröder, and F. Tisseur. NLEVP: A collection of nonlinear eigenvalue problems, ACM Trans. Math. Software, 39(2):7:1--7:28, 2013.
[3] S. Güttel, R. Van Beeumen, K. Meerbergen, and W. Michiels. NLEIGS: A class of fully rational Krylov methods for nonlinear eigenvalue problems, SIAM J. Sci. Comput., 36(6):A2842--A2864, 2014.
[4] E. Jarlebring, W. Michiels, and Karl Meerbergen. A linear eigenvalue algorithm for the nonlinear eigenvalue problem, Numer. Math., 122(1):169--195, 2012.
[5] B.-S. Liao. Subspace Projection Methods for Model Order Reduction and Nonlinear Eigenvalue Computation, PhD thesis, Dept. of Mathematics, University of California at Davis, 2007.
[6] A. Ruhe. Rational Krylov algorithms for nonsymmetric eigenvalue problems, Recent Advances in Iterative Methods. Springer New York, pp. 149--164, 1994.
[7] A. Ruhe. Rational Krylov: A practical algorithm for large sparse nonsymmetric matrix pencils, SIAM J. Sci. Comput., 19(5):1535--1551, 1998.
[8] R. Van Beeumen, K. Meerbergen, W. Michiels. Compact rational Krylov methods for nonlinear eigenvalue problems, SIAM J. Matrix Anal. Appl., 36(2):820--838, 2015.
[9] J. Walsh. On interpolation and approximation by rational functions with preassigned poles, Transactions of the American Mathematical Society, 34:22--74, 1932.