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 analyzed in
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.
To use FUNM_QUAD extract the zip-archive on your computer and change to the directory 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.
- this version: 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.zip: 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.zip: first version