线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。MATLAB中包含多种处理线性方程组的命令,下面进行详细介绍。
对于形如AX=B的方程组来说,假设其系数矩阵A是m×n的矩阵,根据其维数可以将方程组分以下3种情况。
1)若m=n,则为恰定方程组,即方程数等于未知量数。
2)若m>n,则为超定方程组,即方程数大于未知量数。
3)若m<n,则为欠定方程组,即方程数小于未知量数。
线性方程组解的类型也可以分为以下3种情况。
1)若rank(A)= rank( [ A | B])≥n,则方程组有唯一解。
2)若rank( A)= rank([A| B])<n,则方程组有无穷解。
3)若rank(A )≠rank([A|B]),则方程组无解。
不难看出,线性方程组解的类型是由对应齐次方程组的解、对应系数矩阵和增广矩阵间的关系共同决定的。
非齐次线性方程组AX=B解的形式可以描述如下。
1)使用null 函数求解对应非齐次线性方程组AX=B对应的齐次方程组AX=0的基础解系,也可以称为通解,则AX=B的解都可以通过通解的线性组合表示。
2)求解非齐次线性方程组AX=B的特解。
3)最后求得非齐次线性方程组AX=B解的形式为通解的线性组合加上特解。下面介绍 MATLAB中求解线形方程组的方法。
除法求解方法
若线性方程组AX=B的系数矩阵可逆,则A \B给出方程组的唯一解。
例1:使用除法求解系数矩阵可逆的恰定线性方程组。
在命令行窗口中输入如下语句。
>>A=pascal(4) %A为四阶可道矩阵
det_A =det(A) %计算矩阵A的行列式
B= rand(4,1) %随机生成4行1列的矩阵B
X1=A\B %求出方程唯一解
X2 =in(A) *B %A\B等价于inv(A)*B
命令行窗口中的输出结果如下。
A=
1 1 1 1
1 2 3 4
1 3 6 10
1 4 10 20
det_A=
1.000
B=
0.8147
0.9058
0.1270
0.9134
X1=
-2.5813
9.1360
-8.1751
2.4351
X2=
-2.5813
9.1360
-8.1751
2.4351
若线性方程组AX=B的系数矩阵不可逆,则方程组的解不存在或者不唯一。此时执行A\B,则 MATLAB会显示提示信息,表示该矩阵是奇异矩阵,无法得到精确的数值解。
例2:使用除法求解欠定线性方程组。
在命令行窗口中输入如下语句。
>>C= magic(4);
A=C(2;4,:)
B=[ 0;1;0];
X=A\B
命令行窗口中的输出结果如下所示。
A=
5 11 10 8
9 7 6 12
4 14 15 1
X=
0.2475
-0.0662
0
-0. 0637
例3:使用除法求解超定线性方程组。在命令行窗口中输入如下语句。
>>T=magie(5)
A=T(:,2:5)
B=[0;0;1 ;0;0];
X=AIB
命令行窗口中的输出结果如下所示。
T=
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
A=
24 1 8 15
5 7 14 16
6 13 20 22
12 19 21 3
18 25 2 9
X=
-0.0222
0. 0060
0.0034
0.0303
求逆求解方法
在例1中,已经介绍了通过求逆的方法求解线性方程组的解,这里着重介绍利用伪逆方法求解。对于方程组而言,其系数矩阵可能是方阵但不可逆,也可能不是方阵,无论上述两种情况的哪一种都将导致它的逆不存在或无意义,此时就需要引入伪逆的概念。
伪逆矩阵包含很多种形式(具体情况请参考矩阵的有关书籍),下面介绍最常用的基于
最小二乘的最优伪逆。MATLAB使用pinv函数来实现,即可以使用矩阵A的伪逆矩阵pinv(A)来得到方程的一个解,其对应的数值解为pinv( A) * B。
例4使用伪逆矩阵的方法求解奇异矩阵线性方程组的解。
在命令行窗口中输人如下语句。
>>A=[ 1 5 8;-135;174];
B=[3;6;9];
X= pinv(A)* B
C=A*X
命令行窗口中的输出结果如下所示。
X=
-2.6897
1. 9655
-0. 5172
C=
3.0000
6.0000
9. 0000
从例题中的输出结果可以看出,通过使用伪逆矩阵的方法可以求解得到数值解,同时该数值解可以精确地满足预期结果。
上面的例子都是介绍如何计算特解,下面介绍如何计算线性方程组的所有解。
例5使用求逆法计算线性方程组的所有解。
在命令行窗口中输入如下语句。
>>A=[1 3 5 7;2 4 6 8;9 10 11 12];
B=[1;2;3];
X1=null(A)
X2 = pinv(A)*B
命令行窗口中的输出结果如下所示。
X1=
0.5336 -0.1237
-0.6193 0.5626
-0.3622 -0.7542
0.4479 0.3153
X2=
0.0344
0.0579
0.0814
0.1049文章来源:https://www.toymoban.com/news/detail-415675.html
此时线性方程组的所有解为X=a×X1( :,1 )+b×X2 ,( :,2)+X2,其中a、b为任意实数。文章来源地址https://www.toymoban.com/news/detail-415675.html
到了这里,关于MATLAB-线性方程组求解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!