> funm_quad
Efficient and stable Arnoldi restarts for
matrix functions based on quadrature
About
This Matlab code implements a quadrature-based restarted Krylov method FUNM_QUAD for
the efficient and stable approximation of
f(A)b, where
A is a square, large and sparse matrix,
f is a matrix function (such that
f(A) is defined) and
b is a vector.
The algorithm is described and analysed in
A. Frommer, S. Güttel, and M. Schweitzer:
Efficient and stable Arnoldi restarts for matrix functions based on quadrature,
SIAM Journal on Matrix Analysis and Applications, 35(2):661--683, 2014.
A. Frommer, S. Güttel, and M. Schweitzer:
Convergence of restarted Krylov subspace methods for Stieltjes functions of matrices,
SIAM Journal on Matrix Analysis and Applications, 35(4):1602--1624, 2014.
M. Schweitzer:
Restarting and error estimation in polynomial and extended Krylov subspace methods for the approximation of matrix functions,
Dissertation, Bergische Universität Wuppertal, Fakultät für Mathematik und Naturwissenschaften, 2016.
The basic calling sequence of FUNM_QUAD is
[f,out] = funm_quad(A,b,param)
This Matlab code is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. It is a research code and the authors are
grateful for any constructive comments. Please refer to the above paper when
using this code.
Download
Download the latest version of FUNM_QUAD here:
Download FUNM_QUAD with documentation and demos
(about 4 MB, version 2015-03)
To use FUNM_QUAD extract the zip-archive on your computer and change to
the directory
funm_quad_2015-03 in Matlab. This directory
also contains a PDF file with a short overview of FUNM_QUAD, and you
may also want to run the demo files to see how it works.
Version history
- funm_quad_2015-03: use of a relative stopping criterion in all restart cycles;
controlled breakdown of Arnoldi method and automated reduction of restart length for small matrices; fixed normalisation of vector b when non-standard inner product is provided;
added support for truncated (or incomplete) Arnoldi via param.truncation_length;
added a verbose parameter (0, 1, 2) to adjust level information to output on the command line; changed w = w - v*h to w = w - v*h(1) in Arnoldi
(considerable performance gain);
updated manual funm_quad.pdf and cleaned up demo files;
absorbed myintegral helper functions into a single file and removed myintegral subfolder
- funm_quad_2015-02: minor fix to prevent early breakdown in first restart cycle, relative stopping tolerance, drive_quad.m renamed to demo_quad.m
- funm_quad_2014-01: first version