如何用matlab求解Ax=b,其中A是一个大型非对称稀疏矩阵?
我使用的是如何用matlab求解Ax=b,其中A是一个大型非对称稀疏矩阵?,matlab,sparse-matrix,Matlab,Sparse Matrix,我使用的是Ax=b,其中A非常大(超过1m*1m大小),在matlab中是非对称稀疏矩阵。我以稀疏的方式构建A。但是,直接使用A\b太慢了。我尝试了gmres。然而,如果没有预处理,我就无法得到正确的答案,而使用预处理(ilu)也太慢了 我怎样才能有效地解决这个问题?Thx.很难给出一个明确的答案,因为它取决于您正在解决的系统的细节。不幸的是,这涉及到你方的大量尝试和错误,并且没有保证任何系统都能工作的方法。以下是一些需要考虑的事项: 系统有多稀疏,速度有多慢?1Mx1M是一个相当大的系统,但工
Ax=b
,其中A非常大(超过1m*1m大小),在matlab
中是非对称稀疏矩阵。我以稀疏的方式构建A
。但是,直接使用A\b
太慢了。我尝试了gmres
。然而,如果没有预处理,我就无法得到正确的答案,而使用预处理(ilu
)也太慢了
我怎样才能有效地解决这个问题?Thx.很难给出一个明确的答案,因为它取决于您正在解决的系统的细节。不幸的是,这涉及到你方的大量尝试和错误,并且没有保证任何系统都能工作的方法。以下是一些需要考虑的事项:
ilu(0)
,crout
,ilutp
李>
这取决于许多参数。你做了多少次这种计算?您是否总是使用相同的矩阵
A
并求解b
的不同值。我只计算一次。2.不。我每次运行程序时都会生成A
和b
。嗯,Matlab已经对线性代数问题进行了优化,这很正常,对于非常大的矩阵来说速度很慢。我看不出你的计算速度有多快。如果你的矩阵有特定的属性,我唯一的建议就是使用linsolve
。你看到了吗?也许我可以用C/C++。。。。。