matlab 解大型稀疏线性方程组请问在matlab中怎样求Ax=b这个线性方程组比较快?A是大于30000*30000的稀疏方阵.我用A\b直接算的时候要花半分钟.试用gmres(A,b),bicgstab(A,b)的时候时间短了一半,但是算出
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 00:11:24
matlab 解大型稀疏线性方程组请问在matlab中怎样求Ax=b这个线性方程组比较快?A是大于30000*30000的稀疏方阵.我用A\b直接算的时候要花半分钟.试用gmres(A,b),bicgstab(A,b)的时候时间短了一半,但是算出
matlab 解大型稀疏线性方程组
请问在matlab中怎样求Ax=b这个线性方程组比较快?A是大于30000*30000的稀疏方阵.我用A\b直接算的时候要花半分钟.试用gmres(A,b),bicgstab(A,b)的时候时间短了一半,但是算出来的结果是错的.有没有更快的方法?自己写的函数也可以
matlab 解大型稀疏线性方程组请问在matlab中怎样求Ax=b这个线性方程组比较快?A是大于30000*30000的稀疏方阵.我用A\b直接算的时候要花半分钟.试用gmres(A,b),bicgstab(A,b)的时候时间短了一半,但是算出
这个问题不好直接回答,因为N=30000和稀疏性其实基本上不携带任何有价值的信息.
根据需求应该先搞清楚几件事,然后才能选择算法
1.是否具有对称性,如果有的话是否还有正定性
2.需要解一次还是解很多次(相同的A不同的b),或是矩阵还会变(不同的A)
3.对A的条件数或是部分特征值是否有已知信息或廉价的近似估计
4.A的非零元的分布特征
第1条通常决定了是否有相对廉价且高效的算法,2,3也是比较重要的参考信息,4则决定了稀疏直接法或者预条件的难度.
A\b采用的是稀疏直接法,是否可接受取决于第2条.
gmres和bicgstab都是针对非对称矩阵的Krylov子空间方法,默认参数可能不足以收敛,要用复杂的调用方式,自己指定参数,并且还要检查输出信息.这个你自己help一下用法.
一般来讲Krylov子空间迭代法需要预条件作为辅助,如果没有太多信息可以考虑用luinc来产生预条件.
楼上列的那篇paper不用看,基本没用.