(1)利用左除运算符的直接解法
Ax=b x=A\b
注意,如果矩阵A是奇异的或接近奇异的,则MATLAB会给出警告信息。
MATLAB提供了一个左除运算符“\”用于求解线性方程组,它使用列主元消去法,
使用起来十分方便。对于线性方程组Ax=b,可以利用左除运算符反斜杠求解,b左
除以A可获得线性方程组的数值解x。
>> A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
>> b=[13,-9,6,0]';
>> x=A\b
x =
-66.5556
25.6667
-18.7778
26.5556
(2)利用矩阵分解求解线性方程组
LU分解
QR分解
Cholesky分解
[L,U]=lu(A):产生一个上三角阵U和一个变换形式的下三角阵L,使之满足
A=LU。注意,这里的矩阵A必须是方阵。
[L,U,P]=lu(A):产生一个上三角阵U和一个下三角阵L以及一个置换矩阵P,
使之满足PA=LU。同样,矩阵A必须是方阵。
②MATLAB的LU分解函数
当使用第一种格式时,矩阵L往往不是一个下三角阵,但可以通过行交换成为一
个下三角阵。
LU分解函数是根据列主元LU分解算法定义的,具有较好的数据稳定性。lu
函数有两种调用格式:
(2)利用矩阵分解求解线性方程组
矩阵分解是设计算法的重要技巧,是指将一个给定的矩阵分解成若干个特
殊类型矩阵的乘积,从而将一个一般的矩阵计算问题转化为几个易求的特
殊矩阵的计算问题。通过矩阵分解方法求解线性方程组的优点是运算速度
快,可以节省存储空间。
③用LU分解求解线性方程组
通过LU分解后可以大大提高运算速度。
Ax=b→LUx=b→x=U\(L\b)
或
Ax=b→ PAx=Pb→ LUx=Pb → x=U\(L\P*b)
A=[2,1,-5,1;1,-5,0,7;0,2,1,-1;1,6,-1,-4];
b=[13,-9,6,0]’;
[L,U]=lu(A);
x=U(L\b)
x =
-66.5556
25.6667
-18.7778
26.5556
或[L,U,P]=lu(A);
x=U(L\P*b)
迭代法
>> A=[4,-2,-1;-2,4,3;-1,-3,3];
>> b=[1,5,0]';
>> [x,n]=jacobi(A,b,[0,0,0]',1.0e-6)
x =
0.9706
0.8529
1.1765
n =
35
>> [x,n]=gauseidel(A,b,[0,0,0]',1.0e-6)
x =
0.9706
0.8529
1.1765
n =
16
本文介绍了线性方程组的多种求解方法,包括利用MATLAB的左除运算符直接求解,以及LU、QR和Cholesky等矩阵分解方法。还探讨了迭代法如雅可比迭代法和高斯-赛德尔迭代法的应用。
1万+

被折叠的 条评论
为什么被折叠?



