LDL does not support complex symmetric matrices

9 ビュー (過去 30 日間)
Nathan Zhao
Nathan Zhao 2022 年 1 月 6 日
コメント済み: Yaroslav Urzhumov 2023 年 1 月 19 日
Given that you cannot factorize a complex symmetric matrix with LDL in MatLab, I was wondering if there was a particular reason? Is there some package which can perform this factorization?

採用された回答

Christine Tobler
Christine Tobler 2022 年 1 月 7 日
Largely the reason LDL doesn't support this is that it's less commonly requested for complex symmetric matrices than for complex Hermitian ones, so LDL only supports the more common variant. We would also need some option to indicate which of the two modes is meant to be used.
There is a LAPACK function ZSYTRF that you can call from a mex-file to get the complex symmetric LDL decomposition.
  2 件のコメント
Nathan Zhao
Nathan Zhao 2022 年 1 月 7 日
thanks! Just to follow-up, LAPACK is meant for dense matrices so this answer is not applicable for sparse matrices, correct?
Christine Tobler
Christine Tobler 2022 年 1 月 10 日
Yes, LDL for sparse matrices doesn't support complex at all, neither the Hermitian nor the complex symmetric case. This is again not based on mathematics, just on practical considerations of resources and commonality of the use case.

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

その他の回答 (1 件)

David Goodmanson
David Goodmanson 2022 年 1 月 6 日
編集済み: David Goodmanson 2022 年 1 月 7 日
Hi Nathan,
the LDL decomposition works for hermitian matrices. In LDL the D matrix is hermitian, so
if A = L*D*L', then A' = L*D' *L' = L*D*L' = A, and A has to be hermitian.
But a symmetric complex matrix is not hermitian, so LDL won't work.
  2 件のコメント
Nathan Zhao
Nathan Zhao 2022 年 1 月 24 日
Hi David Goodmanson,
thanks for your response! For complex symmetric matrices, I'm aware a naive LDL implementation does not work, but if you use a bunch-kauffman factorization (which uses 2x2 pivoting and makes D block-diagonal rather than diagonal, but the blocks are either 1x1 or 2x2), then the factorization should work?
Best,
Nathan
Yaroslav Urzhumov
Yaroslav Urzhumov 2023 年 1 月 19 日
David,
LDL for a symmetric matrix implies A=L*D*L.', where .' is the usual (rather than complex conjugate) transpose. You can easily see that this decomposition is a symmetric matrix - even if D is complex-valued. It's a different kind of decomposition.

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

カテゴリ

Help Center および File ExchangeLinear Algebra についてさらに検索

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by