问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

MATLAB-线性方程组求解

创作时间:
作者:
@小白创作中心

MATLAB-线性方程组求解

引用
CSDN
1.
https://blog.csdn.net/weixin_56691527/article/details/128570230

线性方程组是线性代数中的重要内容之一,其理论发展的最为完善。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 =inv(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=magic(5)
A=T(:,2:5)
B=[0;0;1 ;0;0];
X=A\B

命令行窗口中的输出结果如下所示。

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

此时线性方程组的所有解为X=a×X1( :,1 )+b×X2 ,( :,2)+X2,其中a、b为任意实数。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号