请问在matlab中怎样求Ax=b这个线性方程组比较快?A是大于30000*30000的稀疏方阵。我用A\b直接算的时候要花半分钟。试用gmres(A,b),bicgstab(A,b)的时候时间短了一半,但是算出来的结果是错的。有没有更快的方法?自己写的函数也可以
如果只解一次的话半分钟也算不了什么。已知条件只能用于估计A的非零元分布,没有过多信息。
GMRES的help看不懂说明你不知道GMRES的原理,如果经常要用的话最好先去学一下。
给你一个比较简单的例子
[L,U] = luinc(A,1e-3); %luinc(A,'0')也可以试一下,是一种完全不同的ILU
tol=1e-10; %残量的精度要求
restart=30; % 30-50之间吧,不要过小
maxit=100; %看情况,如果不收敛就适当调大
[x,flag]=gmres(A,b,restart,tol,maxit,L,U);
最后检查一下flag。