Why would chol fail?

2 ビュー (過去 30 日間)
SingHua Tsai
SingHua Tsai 2018 年 8 月 25 日
コメント済み: SingHua Tsai 2018 年 8 月 26 日
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 日
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 日
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

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

カテゴリ

Help Center および File ExchangeEigenvalue Problems についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by