# 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