diff mftoolbox/expm_cond.m @ 0:8f23314345f4 draft

Create local repository for matrix toolboxes. Step #0 done.
author Antonio Pino Robles <data.script93@gmail.com>
date Wed, 06 May 2015 14:56:53 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mftoolbox/expm_cond.m	Wed May 06 14:56:53 2015 +0200
@@ -0,0 +1,25 @@
+function [c,K] = expm_cond(A)
+%EXPM_COND  Relative condition number of matrix exponential.
+%   EXPM_COND(A) is the relative condition number in the Frobenius
+%   norm of the matrix exponential at the matrix A.
+%   [C,K] = EXPM_COND(A) returns the condition number C and the Kronecker
+%   matrix form K of the Frechet derivative.
+
+n = length(A);
+N = n^2;
+K = zeros(N);
+E = zeros(n);
+
+if nargout < 2 && ~isequal(A,triu(A))
+   % If returning K cannot use Schur form.
+   A = schur(A,'complex');
+end
+
+for j = 1:N
+    e = zeros(N,1); e(j) = 1;
+    E(:) = e;
+    X = expm_frechet_pade(A,E);
+    K(:,j) = X(:);
+end
+
+c = norm(K) * norm(A,'fro') / norm(expm(A),'fro');