如何用matlab解方程组?

我已经把方程组的形式改写成了Ax=b的形式。

A矩阵是个很大的矩阵,由别的程序得出。
我本身用A求逆乘以b解的,结果速度太慢,数值试验只做到20计算机就不行了,请问有什么快速一些的方法么?比如用matlab里的某些函数,直接导入A和b就可以得到答案?

急啊,谢谢谢谢谢。。。积分请囊相送
都很慢的说,因为我程序里构造的矩阵都好几百维,有什么快方法能解出系数矩阵这么大的方程?

我知道的Matlab解矩阵方法有:
A=[1 6 9;6 5 2;8 3 4]
b=[2;4;7]
1)x=inv(A)*b 【就是你用的方法】
2)x=A\b
3)x=A^(-1)*b
4)C=[A,b]
rref(C)
试试吧,也许好使。
还有一个网址,下载一些经典程序,如:
gmres_m.rar-gmres算法的一个特殊形式,用来求解大型稀疏矩阵方程,matlab
GMres.rar-数值算法中另一个经典算法gmres算法,用来求解大型矩阵方程问题。,matlab
arnoldi.rar-数值分析中经典的arnoldi算法,用来求解大型矩阵方程组的求解,matlab
http://www.programsalon.com/sitemap/sitemap153_1450.htm

补充:
2.利用矩阵的LU、QR和cholesky分解求方程组的解
(1)LU分解:
LU分解又称Gauss消去分解,可把任意方阵分解为下三角矩阵的基本变换形式(行交换)和上三角矩阵的乘积。即A=LU,L为下三角阵,U为上三角阵。
则:A*X=b 变成L*U*X=b
所以X=U\(L\b) 这样可以大大提高运算速度。
命令 [L,U]=lu (A)
例1-78 求方程组 的一个特解。
解:

>>A=[4 2 -1;3 -1 2;11 3 0];
>>B=[2 10 8]';
>>D=det(A)
>>[L,U]=lu(A)
>>X=U\(L\B)
显示结果如下:
D =
0
L =
0.3636 -0.5000 1.0000
0.2727 1.0000 0
1.0000 0 0
U =
11.0000 3.0000 0
0 -1.8182 2.0000
0 0 0.0000
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate. RCOND = 2.018587e-017.
> In D:\Matlab\pujun\lx0720.m at line 4
X =
1.0e+016 *
-0.4053
1.4862
1.3511
说明 结果中的警告是由于系数行列式为零产生的。可以通过A*X验证其正确性。
(2)Cholesky分解
若A为对称正定矩阵,则Cholesky分解可将矩阵A分解成上三角矩阵和其转置的乘积,即: 其中R为上三角阵。
方程 A*X=b 变成
所以
(3)QR分解
对于任何长方矩阵A,都可以进行QR分解,其中Q为正交矩阵,R为上三角矩阵的初等变换形式,即:A=QR
方程 A*X=b 变形成 QRX=b
所以 X=R\(Q\b)
上例中 [Q, R]=qr(A)
X=R\(Q\B)
说明 这三种分解,在求解大型方程组时很有用。其优点是运算速度快、可以节省磁盘空间、节省内存。

也许这个能帮你点儿忙。

参考资料:《matlab6.0数学手册》

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-02-28
我也想知道这个,我的A矩阵是46*46的,都不知道用什么解
相似回答