Why would chol fail?

3 visualizaciones (últimos 30 días)
SingHua Tsai
SingHua Tsai el 25 de Ag. de 2018
Comentada: SingHua Tsai el 26 de Ag. de 2018
I have a positive definite sparse array Ainv. When I do the chol like
L=chol(Ainv);
M = L*L';
isequal(M,Ainv)
I find that M is not equal to Ainv. How can I use chol to get a right answer?

Respuesta aceptada

Stephan
Stephan el 25 de Ag. de 2018
Editada: Stephan el 25 de Ag. de 2018
Hi,
L*L'
is not the same as
L'*L
The way you do use chol will fulfill the second equation.
You can test with this little example:
A = [7 3; 3 7]
ev = eig(A)
Ch = chol(A)
B1 = Ch'*Ch
B2 = Ch * Ch'
EDIT:
Is Ainv symmetric? If it is, consider that we are dealing with double precision numbers and the operations you perform have rounding errors. See this example:
A = [7 3; 3 7]
Ch = chol(A)
B1 = Ch' * Ch
same = isequal(A,B1)
diff = A-B1
B2 = round(Ch' * Ch)
same2 = isequal(A,B2)
diff2 = A-B2
So there is not a problem with chol, since this is a normal behavior.
Best regards
Stephan
  1 comentario
SingHua Tsai
SingHua Tsai el 26 de Ag. de 2018
Thank you for your help!

Iniciar sesión para comentar.

Más respuestas (1)

SingHua Tsai
SingHua Tsai el 25 de Ag. de 2018
Hi,Stephan, thank you for your help and advice. I already revise it as follow
L=chol(Ainv);
M = L'*L;
isequal(M,Ainv)
But M is still not equal to Ainv. I have no idea how to modify it.
Thank for your time.
  1 comentario
Stephan
Stephan el 25 de Ag. de 2018
Editada: Stephan el 25 de Ag. de 2018
See my edited answer

Iniciar sesión para comentar.

Etiquetas

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by