Non-square square root of a matrix

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

  1. g.flemin

    g.flemin Guest


    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?

    Thank you all in advance!

    Guillaume Flemin
    g.flemin, Jul 31, 2007
    1. Advertisements

  2. 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:p)*diag(s_1,..,s_p)*X:),1:p)^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
    1. Advertisements

  3. g.flemin

    Carl Barron Guest

    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.flemin

    g.flemin Guest

    Thank you both for your answers, that works just fine! :)

    Guillaume Flemin
    g.flemin, Aug 1, 2007
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.