Problems with LDL factorization

11 ビュー (過去 30 日間)
Kitic
Kitic 2014 年 6 月 7 日
コメント済み: Kitic 2014 年 6 月 7 日
Hello,
I have a very large scale, overdetermined linear system (10^7 variables), arising from the discretization of a time-dependent PDE. I need to compute least squares estimate (A'*Ax = A'b) several times with a different right hand side b. To do this on modest scale problem (10^4 to 10^5) I factorize the LDL decomosition of A'A and then the solution is fast enough. I do not use Cholesky to avoid potential rounding errors. However, when the dimensions increase, LDL does not prouduce accurate decomposition (even with threshold set to 0.5). The system is increasingly ill-conditioned, so this may be the source of the problem. Do you have any suggestions?
Best, Srdan

回答 (2 件)

John D'Errico
John D'Errico 2014 年 6 月 7 日
Yes, BUT if the problem is ill-conditioned, then computing A'*A is crazy, since that will make it significantly more so. If it cannot succeed because of the ill-conditioning, what does it matter if it is faster?
I would suggest trying an iterative scheme. Perhaps a version of PCCGLS (preconditioned conjugate gradient least squares) There are codes for it in MATLAB. This algorithm does not force you to form A'*A, although you will probably need a preconditioner.
  1 件のコメント
Kitic
Kitic 2014 年 6 月 7 日
Sure, but it did make sense for the smaller scale problem (which is not as badly conditioned). I have tried warm-started iterative solvers (only the stuff provided in Matlab), and this is one of the approaches I plan to use if factorization becomes impossible. The issue is that the initial point (taken as the estimate of the previous iteration) need not be close enough for the new problem - mainly due to conditioning. However I haven't tried PCCGLS (haven't heard of it), and except Jacobi preconditioner, everything else seems rather expensive.
Thanks all for the advices.

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


Bill Greene
Bill Greene 2014 年 6 月 7 日
Have you tried solving the over-determined system directly:
x = A\b;
Computing using the normal equations, A'*A, is almost certainly making your problem more ill-conditioned.
Bill
  3 件のコメント
Kitic
Kitic 2014 年 6 月 7 日
I didn't mean that solving A\b once is slower than LDL. As I said, it is a problem that needs to be solved once per (external) iteration, thus even though factorizing LDL costs more than A\b, the overall cost is less since in the subsequent iterations the problem is solved by forward-backward approach. Sparse QR is the only thing I haven't considered - so I will give it a try, thanks a lot.

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

Community Treasure Hunt

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

Start Hunting!

Translated by