comparison mftoolbox/sqrtm_triang_min_norm.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
comparison
equal deleted inserted replaced
-1:000000000000 0:8f23314345f4
1 function R = sqrtm_triang_min_norm(T)
2 %SQRTM_TRIANG_MIN_NORM Estimated min norm square root of triangular matrix.
3 % R = SQRTM_TRIANG_MIN_NORM(T) computes a primary square root of the
4 % upper triangular matrix T and attempts to minimize its 1-norm.
5
6 if ~isequal(T,triu(T)), error('T must be upper triangular'), end
7
8 n = length(T);
9 rp = zeros(n,1);
10 rm = zeros(n,1);
11
12 R = zeros(n);
13 for j=1:n
14 rp(j) = sqrt(T(j,j));
15 rm(j) = -sqrt(T(j,j));
16 for i=j-1:-1:1
17 rp(i) = (T(i,j) - R(i,i+1:j-1)*rp(i+1:j-1))/(R(i,i) + rp(j));
18 rm(i) = (T(i,j) - R(i,i+1:j-1)*rm(i+1:j-1))/(R(i,i) + rm(j));
19 end
20 if norm(rp(1:j),1) <= norm(rm(1:j),1)
21 R(1:j,j) = rp(1:j);
22 else
23 R(1:j,j) = rm(1:j);
24 end
25 end