Registered Member
|
Hi,
I have a sparse linear system: Ax = b Where A is SPD of size 1e6 x 1e6, and each row contains 7 non-zeros on average. 1. SimplicialLLT compute() failed, while SimplicialLDLT was successful. Is there a reason for this? I can supply an example of A, in any format you like. 2. I am wondering how the solve() works. If I remember correctly it is some kind of symbolic solver, which holds the permutation of the columns, and does some kind of Gauss elimination. I was wondering how it would compete, in terms of performance, with a back substitution algorithm. I am assuming it's a question of sparsity (the decomposition isn't sparse) vs. parallelizability. Thanks |
Moderator
|
1. it's probably because your matrix is numerically not SPD, and a negative coefficient appear on the diagonal... If you could send me a zipped file of your matrix in Matrix Market format, we could check, and even use it in our accuracy/performance regression tests.
2. The matrix A is factorized as P' L D L' P by compute() where the permutation P is here to reduce the fill-in in L. Then solving Ax=b applies the permutation on b, and back-substitutions... : x = (P' (L-' (D^-1 (L^-1 (P b) ) ) ) ) |
Registered Member
|
1. I'm sure I double checked it, yet I check it again and now it's not positive definite. Sorry about that. Nevertheless SimplicialLDLT didn't complain.
2. Ho, I wasn't aware that it does back substitution. Thanks |
Registered users: Bing [Bot], Google [Bot], Yahoo [Bot]