Registered Member
|
I set solver.preconditioner.setFillfactor(100)
solver.compute(A); x = solver.solve(b); It shows during compiling: "Assertion failed: m_factroizationOK==true,......." What does this mean? |
Moderator
|
It means two things: first it seems that your matrix has a row which is completely empty and so ILUT nor BICG cannot work with it. Second, this assert seems to be produced during the compute step. That should not be the case. After the fix you will be able to check the compute step went well by checking that solver.info()==Eigen::Success. If that's not the case, you will get an assert during the solve step.
|
Registered Member
|
Yes, my matrix is singular, some rows are linear dependent, but there is no row which are completely empty. And it is sure this assert is during compute step.
My then question is: what is the solver suitable for solving system with singular matrix? What is the best size when setting solver.setFillfactor( ? ). |
Registered Member
|
|
Registered Member
|
Hi, Dee33,
Thanks!Is it true that BiCG with ILUT can't work with any singular matrix?(but why the author of post " the left hand side is not positive definite" can use BiCG with ILUT, but finally get SuperLU) Strange. Does GMERS works for this? |
Registered Member
|
BiCG (or GMRES) is not intended to be used with singular matrices. Now, depending on the "level" of the linear dependence, one can try to use those methods, but the results won't be really accurate. The best way is to use rank-revealing methods like SparseQR.
Hope it helps |
Registered users: Bing [Bot], Google [Bot], Sogou [Bot], Yahoo [Bot]