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?

 採用された回答

Stephan
Stephan 2018 年 8 月 25 日
編集済み: Stephan 2018 年 8 月 25 日

0 投票

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 件のコメント

SingHua Tsai
SingHua Tsai 2018 年 8 月 26 日
Thank you for your help!

サインインしてコメントする。

その他の回答 (1 件)

SingHua Tsai
SingHua Tsai 2018 年 8 月 25 日

0 投票

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 件のコメント

Stephan
Stephan 2018 年 8 月 25 日
編集済み: Stephan 2018 年 8 月 25 日
See my edited answer

サインインしてコメントする。

タグ

質問済み:

2018 年 8 月 25 日

コメント済み:

2018 年 8 月 26 日

Community Treasure Hunt

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

Start Hunting!

Translated by