MATLAB 2020 从入门到精通
上QQ阅读APP看书,第一时间看更新

3.1 矩阵的逆

逆矩阵是矩阵计算中经常遇到的一个概念,逆矩阵概念的引入是用来实现矩阵的除法。MATLAB矩阵的除法运算较为特殊。

对矩阵X而言,若有矩阵AB,使得XA=B,那么矩阵X可以直接借用逆矩阵,实现矩阵的除法。

XA∗(A的逆矩阵)=B∗(A的逆矩阵),由于A∗(A的逆矩阵)=1,可以得到X=B∗(A的逆矩阵)。

3.1.1 矩阵的逆和转置

对于n阶方阵A,如果有n阶方阵B满足AB=BA=I,则称矩阵A为可逆的,称方阵BA的逆矩阵,记为A-1

1.逆矩阵的性质

1)若A可逆,则A-1是唯一的。

2)若A可逆,则A-1也可逆,并且(A-1-1=A

3)若n阶方阵AB都可逆,则AB也可逆,且(AB-1=B-1A-1

4)若A可逆,则AT(转置矩阵)也可逆,且(AT-1=(A-1T

5)若A可逆,则978-7-111-67080-3-Chapter03-1.jpgA∗是伴随矩阵)。

把满足|A|≠0的方阵A称为非奇异的,否则就称为奇异的。

在MATLAB中,inv函数用于求解矩阵的逆,它的使用格式见表3-1。

表3-1 inv命令的使用格式

例3-1:矩阵求逆示例。

解:MATLAB程序如下。

提示 逆矩阵必须使用方阵,如2×2、3×3,即n×n格式的矩阵,否则弹出警告信息。

2.矩阵的转置

对于矩阵A,如果有矩阵B满足B=aji),即bij)=a(ji),指B的第i行第j列元素是A的第j行第i列元素,简单来说就是,将矩阵A的行元素变成矩阵B的列元素,矩阵A的列元素变成矩阵B的行元素。则称AT=B,矩阵B是矩阵A的转置矩阵。

矩阵的转置满足下述运算规律

1)(ATT=A

2)(A+BT=AT+BT

3)(λAT=λAT

4)(ABT=BTAT

矩阵的转置运算可以通过符号“'”或函数transpose来实现,该命令的调用格式如下表3-2。

表3-2 函数类型

例3-2:求矩阵978-7-111-67080-3-Chapter03-9.jpg的二次转置。

解:MATLAB程序如下。

例3-3:求矩阵978-7-111-67080-3-Chapter03-12.jpg的逆矩阵与转置矩阵。

解:MATLAB程序如下。

3.1.2 矩阵逆运算

在编写算法或处理工程、优化等问题时,经常会碰到一些矩阵更新的情况,这时读者必须弄清楚矩阵的更新步骤,这样才能编写出相应的更新算法。

已知矩阵978-7-111-67080-3-Chapter03-15.jpg978-7-111-67080-3-Chapter03-16.jpg,求A-1,并在A-1的基础上求矩阵A的第2列被b替换后的逆矩阵。

解:首先来分析一下上述问题。设A=[a1a2apan],设其逆为A-1,则有A-1A=[A-1a1A-1a2A-1apA-1an]=I。设A的第pap被列向量b替换后的矩阵为978-7-111-67080-3-Chapter03-17.jpg,即978-7-111-67080-3-Chapter03-18.jpg。令d=A-1b,则有:

如果dp≠0,则可以通过初等行变换将上式的右端化为单位矩阵,然后将相应的变换作用到A-1,那么得到的矩阵即为A-1的更新。事实上行变换矩阵即为

1.编写矩阵更新函数

2.输入矩阵参数,调用函数

3.验证结果

经验证,求逆结果是一样的,newinvA函数编写正确。

3.1.3 利用矩阵的逆(伪逆)与除法求解线性方程组

对于线性方程组Ax=b,其中ARm×nbRm。若m=n,称之为恰定方程组;若m>n,称之为超定方程组;若m<n,称之为欠定方程组。若b=0,则相应的方程组称为齐次线性方程组,否则称为非齐次线性方程组。对于齐次线性方程组解的个数有下面的定理。

定理1:设方程组系数矩阵A的秩为r,则

1)若r=n,则齐次线性方程组有唯一解。

2)若r<n,则齐次线性方程组有无穷解。

对于非齐次线性方程组解的存在性有下面的定理。

定理2:设方程组系数矩阵A的秩为r,增广矩阵[Ab]的秩为s,则

1)若r=s=n,则非齐次线性方程组有唯一解。

2)若r=s<n,则非齐次线性方程组有无穷解。

3)若rs,则非齐次线性方程组无解。

关于齐次线性方程组与非齐次线性方程组之间的关系有下面的定理。

定理3:非齐次线性方程组的通解等于其一个特解与对应齐次方程组的通解之和。

若线性方程组有无穷多解,而希望找到一个基础解系η1η2,…,ηr,以此来表示相应齐次方程组的通解:k1η1+k2η2+…+krηrkrR)。对于这个基础解系,可以通过求矩阵A的核空间矩阵得到。

在MATLAB中,可以用null命令得到A的核空间矩阵。null命令的使用格式见表3-3。

表3-3 null命令的使用格式

例3-4:求方程组978-7-111-67080-3-Chapter03-28.jpg的通解。

解:MATLAB程序如下。

所以该方程组的通解为

对于线性方程组Ax=b,其中ARm×nbRm。若m=n,称之为恰定方程组;若m>n,称之为超定方程组;若m<n,称之为欠定方程组。若b=0,则相应的方程组称为齐次线性方程组,否则称为非齐次线性方程组。对于齐次线性方程组解的个数有下面的定理。

定理4:设方程组系数矩阵A的秩为r,则

1)若r=n,则齐次线性方程组有唯一解。

2)若r<n,则齐次线性方程组有无穷解。

对于非齐次线性方程组解的存在性有下面的定理。

定理5:设方程组系数矩阵A的秩为r,增广矩阵[Ab]的秩为s,则

1)若r=s=n,则非齐次线性方程组有唯一解。

2)若r=s<n,则非齐次线性方程组有无穷解。

3)若rs,则非齐次线性方程组无解。

关于齐次线性方程组与非齐次线性方程组之间的关系有下面的定理。

定理6:非齐次线性方程组的通解等于其一个特解与对应齐次方程组的通解之和。

若线性方程组有无穷多解,而希望找到一个基础解系η1η2,…,ηr,以此来表示相应齐次方程组的通解:k1η1+k2η2+…+krηrkrR)。

对于线性方程组Ax=b,若其为恰定方程组且A是非奇异的,则求x的最明显的方法便是利用矩阵的逆,即x=A-1b;若不是恰定方程组,则可利用伪逆来求其一个特解。

例3-5:求线性方程组 978-7-111-67080-3-Chapter03-32.jpg的通解。

解:MATLAB程序如下。

因此原方程组的通解为

若系数矩阵A为非奇异,还可以利用矩阵除法来求解方程组的解,即x=A\b,虽然这种方法与上面的方法都采用高斯(Gauss)消去法,但该方法不对矩阵A求逆,因此可以提高计算精度且能够节省计算时间。

例3-6:编写一个M文件,用来比较上面两种方法求解线性方程组在时间与精度上的区别。

解:编写compare.m文件如下。

该M文件的运行结果为:

由这个例子可以看出,利用除法来解线性方程组所用时间仅为求逆法的约1/3,其精度也要比求逆法高出一个数量级左右,因此在实际中应尽量不要使用求逆法。

小技巧 如果线性方程组Ax=b的系数矩阵A奇异且该方程组有解,那么有时可以利用伪逆来求其一个特解,即x=pinv(A)∗b