Why would chol fail?

2 vues (au cours des 30 derniers jours)
SingHua Tsai
SingHua Tsai le 25 Août 2018
Commenté : SingHua Tsai le 26 Août 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?

Réponse acceptée

Stephan
Stephan le 25 Août 2018
Modifié(e) : Stephan le 25 Août 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 commentaire
SingHua Tsai
SingHua Tsai le 26 Août 2018
Thank you for your help!

Connectez-vous pour commenter.

Plus de réponses (1)

SingHua Tsai
SingHua Tsai le 25 Août 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 commentaire
Stephan
Stephan le 25 Août 2018
Modifié(e) : Stephan le 25 Août 2018
See my edited answer

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by