Decomposing a positive semi-definite matrix

  • Thread starter Thread starter xponential
  • Start date Start date
  • Tags Tags
    Matrix Positive
Click For Summary

Homework Help Overview

The discussion revolves around decomposing a positive semi-definite matrix M, specifically in the context of finding a matrix L of reduced dimensions that satisfies the equation M = L' * L. The original poster seeks to determine L given M and a specified number of rows, r, with a particular example involving an 800x800 matrix and a desired 30x800 matrix for L.

Discussion Character

  • Exploratory, Assumption checking, Problem interpretation

Approaches and Questions Raised

  • Participants discuss the use of Cholesky factorization for positive semi-definite matrices and question how to adapt this method to obtain a matrix L of specific dimensions. The original poster expresses a need for a MATLAB function that can achieve this, while others suggest considering the implications of zero rows in the resulting matrix.

Discussion Status

The conversation is ongoing, with some participants providing insights into the Cholesky factorization process and its applicability to positive semi-definite matrices. There is an acknowledgment of the original poster's requirements, and questions about the course materials and methods are raised, indicating a search for clarification and potential solutions.

Contextual Notes

Participants note that the original poster's requirement for a specific matrix dimension (30x800) may not align with standard outcomes from Cholesky factorization, which typically yields a full matrix. There is also mention of the potential for zero rows in the resulting matrix, which may affect the decomposition process.

xponential
Messages
9
Reaction score
0

Homework Statement



if M is dxd positive semi-definite matrix, then:

M = L'(or L transpose) * L

where L is a matrix of dimensions rxd

How can I get L given M and the number of rows, r?

for example,

if M is 800x800 p.s.d, I want L such that it is a 30x800 matrix and so
M (800x800) = L' (800x30) * L (30x800)

If you know a MATLAB function that can do just that, it would be perfect!
 
Physics news on Phys.org
xponential said:

Homework Statement



if M is dxd positive semi-definite matrix, then:

M = L'(or L transpose) * L

where L is a matrix of dimensions rxd

How can I get L given M and the number of rows, r?

for example,

if M is 800x800 p.s.d, I want L such that it is a 30x800 matrix and so
M (800x800) = L' (800x30) * L (30x800)

If you know a MATLAB function that can do just that, it would be perfect!

If M is an nxn positive semi-definite matrix, then one can show that there exist an upper-triangular matrix U such that M = UT U. One obtains U by the algorithm for Cholesky factorization. Although many discussions of that algorithm assume M is positive-definite, if one is careful to put the argument in the correct form one can prove that it also applies to the positive-semidefnite case, with very slight modifications. I don't have access to Matlab, but the latest versions of Maple can do Cholesky factorization for positive-semidefinite matrices. Basically, the algorithm for a psd matrix M = (mij) is:
(1) If m11 = 0, all elements in row 1 and column 1 must also be zero (otherwise, M could not be psd). If that holds, ignore row and column 1 and start again. Therefore, we may as well assume m11 > 0. Set
[tex]u_{11}= \sqrt{m_{11}} \text{ and } u_{1j} = \frac{m_{1j}}{u_{11}},\; j=2,\ldots, n[/tex]
(2) For i ≥ 2: let
[tex]u_{ii}^2 = m_{ii} - \sum_{p=1}^{i-1} u_{pi}^2.[/tex] If ##u_{ii}^2 = 0## we must have ##m_{ij} - \sum_{p=1}^{i-1} u_{pi} u_{pj} = 0 \; \forall j > i.## In that case, set uij = 0 for all j ≥ i. Otherwise, set
[tex]u_{ii} = \sqrt{u_{ii}^2}, \; u_{ij} = \frac{m_{ij} - <br /> \sum_{p=1}^{i-1} u_{pi} u_{pj}}{u_{ii}} \; \forall j > i.[/tex]

So, in the psd case some rows of U will be all zeros (unlike in the pd case); we can omit the zero rows of U to get a new matrix V which is no longer upper-triangular, but still gives
M = VT V.

This algorithm is so simple that I used to have it programmed into an HP hand-held calculator; it could decompose matrices up to about 10x10.

RGV
 
Last edited:
Thanks Ray .. I actually know about using Cholesky's in MATLAB .. however .. as in the example I provided .. I am required to find L such that it is (30x800) matrix instead of (800x800).
 
Have you TRIED cholesky? Perhaps U has 770 zero rows, which can be dropped. (I don't know if this is true; you would need to try it to see.)

Anyway, does your course notes or textbook say nothing about this?

RGV
 

Similar threads

Replies
4
Views
2K
  • · Replies 3 ·
Replies
3
Views
2K
  • · Replies 11 ·
Replies
11
Views
2K
Replies
2
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 5 ·
Replies
5
Views
3K
  • · Replies 1 ·
Replies
1
Views
3K
  • · Replies 3 ·
Replies
3
Views
3K
Replies
5
Views
2K