Non-square square root of a matrix

Discussion in 'Numerical Analysis' started by g.flemin, Jul 31, 2007.

1. g.fleminGuest

Hello,

I am trying to find S, a non-square square root of a matrix G, s.t. G
= S^T S

G is a n x n symmetric matrix; rank(G) = p with p < n.
S should be a p x n matrix.

It seems this problem has a solution but I cannot find it :-(

Btw, G should be positive definite but, due to some previous
computations, chol(G) fails..

Any ideas or references?

Guillaume Flemin

g.flemin, Jul 31, 2007

2. Helmut JarauschGuest

Take an svd or eigendecomposition like
G= X S X^T
where S = diag(s_1,s_2,....)
Assume |s_1| >= |s_2| >= ... >= |s_p| >= ... >= |s_n|
(that's the case for the SVD and can be arranged for the
eigendecomposition by permuting columns of X)
Since rank(G) = p, we have s_{p+1}=...=s_n=0
Therefore X ,1 )*diag(s_1,..,s_p)*X ,1 )^T
comes close to what you want, unless some of
s_1,..,s_p are negative. Then I doubt there is a real
solution of your problem. For positive definite G
this gives a solution.

--
Helmut Jarausch

Lehrstuhl fuer Numerische Mathematik
RWTH - Aachen University
D 52056 Aachen, Germany

Helmut Jarausch, Jul 31, 2007

3. Carl BarronGuest

Take the eigenvector decomposition
G = W^T D W [W^TW = WW^T = I]

select the eigenvalues that are not zero and the corresponding
eigenvectors then only these are needed.
replace the eigenvalues with their square roots. then
B = the_diag_matrix * saved_eigenvector_matrix is a solution.
B can be computed in the same place as the saved_eigenvector_matrix.

if U^TU = I and UB is a valid product the C = UB is another solution.

Carl Barron, Aug 1, 2007
4. g.fleminGuest

Thank you both for your answers, that works just fine! Guillaume Flemin

g.flemin, Aug 1, 2007