每个人。
我对线性代数方程求解器的经验很少。
但是现在,我需要解决大型稀疏块压缩线性方程。
即Ax=b
。
矩阵A
由大小为(nb,nb)
的子块组成。 A
的大小是(N,N)
个子块。
则矩阵A
的实际大小为(nb*N,nb*N)
。
仅存在几个子块。 A
是对角线主导。
我尝试过Eigen的内置固定器。即SimplicialLLT和BiCGSTAB,第一个速度很慢,而第二个速度无法收敛。
然后我使用Intel MKL尝试了Eigen的第三方求解器,即PardisoLLT,PardisoLDLT和PardisoLU。他们也很慢。
最后,我使用SuiteSparse(即CHOLMOD和SPQR)尝试了Eigen的第三方求解器。第一个很慢,而第二个给出了相同的输入值,似乎没有用。
我认为可能是因为我错误地使用了求解器,所以我没有利用“块压缩”功能,从而引发了许多无用的计算。
有人可以给我一些建议吗?
答案 0 :(得分:2)
只要矩阵大小不超过约5000行/列,使用稀疏求解器将不会带来任何合理的好处。对于此类矩阵,普通的密集解算器也将是很好的,因为它不包含与存储和操作稀疏结构(例如链表或邻接结构)有关的“开销”。另一方面,如果矩阵非常大(例如,大约一百万行/列),则迭代求解器仅适用。我建议您访问以下网页,其中包含与正在使用的内容非常相似的问题和解决方案的描述(包括具有块结构的稀疏矩阵系统的解决方案以及图像处理):http://members.ozemail.com.au/~comecau/CMA_LS_Sparse.htm < / p>