Skip to main content
16-Pearl
February 17, 2023
Solved

Cholesky decomposition & the LDL decomposition. finding D?

  • February 17, 2023
  • 2 replies
  • 4608 views

to all,

A question regarding the Cholesky LDL decomposition.

given a matrix A one can have A=LDL* where L* is the transpose of L

using the mathcad 15 cholesky(A), how does one code mathcad to get D?

L = cholesky(A)

 

Thanks in advance

Josh

Best answer by Werner_E

The LDL decomposition is not Cholesky, rather a slight modification of it with the benefit of not having to take the roots.

But its very easy to get the LDL once you already have  the Cholesky decomposition:

Werner_E_0-1676746340483.png

You may now define a custom LDL function which does exactly these few steps

Werner_E_2-1676746031321.png

2 replies

13-Aquamarine
February 18, 2023

Capture.JPG

What D

Cheers

Terry

13-Aquamarine
February 18, 2023

LDL Decomposition is not available it would be necessary to program it.

 

•Cholesky—Cholesky square root of a matrix
•LU—LU factorization into lower and upper triangular matrices
•QR—QR factorization into an orthonormal and upper triangular matrix
•svd—Singular values decomposition

Solve a linear system of n equations in n unknowns using the lsolve function

 

Werner_E25-Diamond IAnswer
25-Diamond I
February 18, 2023

The LDL decomposition is not Cholesky, rather a slight modification of it with the benefit of not having to take the roots.

But its very easy to get the LDL once you already have  the Cholesky decomposition:

Werner_E_0-1676746340483.png

You may now define a custom LDL function which does exactly these few steps

Werner_E_2-1676746031321.png

16-Pearl
February 19, 2023

Thanks a lot for that @Werner_E .

I was looking at pre & post multiplication ! Something like L^-1 A (L*)^-1. but you ends up with a "diagonal" matrix with unit value 

 

 

25-Diamond I
February 19, 2023

@JBlackhole wrote:

Thanks a lot for that @Werner_E .

I was looking at pre & post multiplication ! Something like L^-1 A (L*)^-1. but you ends up with a "diagonal" matrix with unit value 

 


If you mean by L the result of the cholesky function, this should  not be surprising. When the decomposition is S=L*L^T, then the only matrix you could squeeze in between using the very same L matrix is the identity matrix I -> S=L*I*L^T.

 

An additional advantage of the LDL* decomposition over Cholesky is, that it can also be used for indefinite matrices. But the approach I showed will of course not work ib that case because I am using the built-in cholesky() which will only work for positive definite matrices.
A more general LDL() function would have to be implemented in a different way without using cholesky().