Computes the log(A) for any square matrix A with non-negative eigenvalues using the inverse scaling and squaring algorithm. When A is real this algorithm uses only real arithmetic. It is also possible to compute the Frechet derivative of log(A) in any direction E and cond(log, A) to give some idea of the accuracy.
This code can be called in the following ways:
X = logm_frechet(A)
L = logm_frechet(A,E)
[X, cond] = logm_frechet(A)
[X, L] = logm_frechet(A,E)
[X, L, cond] = logm_frechet(A,E)
where X is log(A), L is the Frechet derivative and cond is the condition number.
Function LOGM_FRECHET_TEST.M runs a simple test of the codes.
More detail on the algorithm can be found in:
A. H. Al-Mohy, N. J. Higham and S. D. Relton. Computing the Frechet Derivative of the Matrix Logarithm and Estimating the Condition Number, MIMS Eprint 2012.72, Manchester Institute for Mathematical Sciences, The University of Manchester, UK, July 2012.
Samuel Relton (2023). Matrix Logarithm with Frechet Derivatives and Condition Number (https://www.mathworks.com/matlabcentral/fileexchange/38894-matrix-logarithm-with-frechet-derivatives-and-condition-number), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform CompatibilityWindows macOS Linux
Inspired: Condition Numbers Comparison
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!