MATLAB与线性代数--逆矩阵与伪逆矩阵

求逆矩阵与伪逆矩阵

矩阵A的逆矩阵用
在这里插入图片描述
表示,并且满足下面的关系:
在这里插入图片描述
看下面的矩阵方程:
在这里插入图片描述

如果A的逆矩阵存在,那么解可以写成:
在这里插入图片描述
MATLAB输入下面的命令就可以计算矩阵A的逆矩阵
在这里插入图片描述
但是逆矩阵并不一定存在,所以我们可以用矩阵的行列式来判断逆矩阵是否存在,如果
在这里插入图片描述
那么逆矩阵不存在,这时我们说此矩阵是一个奇异矩阵。
下面是一个2x2矩阵的例子
MATLAB与线性代数--逆矩阵与伪逆矩阵_第1张图片
首先检查矩阵的行列式:

>> A = [2 3; 4 5];
>> det(A)
ans =
    -2

由于行列式不等于0,此矩阵的逆矩阵存在,下面进行逆矩阵的求解:

>> inv(A)
ans =
   -2.5000    1.5000
    2.0000   -1.0000

又如:

>> S = [1 0 -1 2; 4 -2 -3 1;0 2 -1 1;0 0 9 8];
>> det(S)
ans =

  -108

行列式不等于0,逆矩阵T存在:

>> T = inv(S)

T =
   -0.9259    0.4815    0.4815    0.1111
   -0.6296    0.1574    0.6574    0.0556
   -0.5926    0.1481    0.1481    0.1111
    0.6667   -0.1667   -0.1667         0

检验一下:

>> S * T
ans =
    1.0000         0         0         0
    0.0000    1.0000   -0.0000         0
    0.0000   -0.0000    1.0000         0
         0         0         0    1.0000

在这里插入图片描述
来自于四舍五入误差,用另一种方式检查可以避免错误:

>> T * S
ans =
    1.0000         0         0         0
         0    1.0000         0    0.0000
         0         0    1.0000         0
         0         0    0.0000    1.0000

用逆矩阵求解方程

考虑方程:
MATLAB与线性代数--逆矩阵与伪逆矩阵_第2张图片
系数矩阵是:

>> A =[3 -2; 6 -2]
A =
     3    -2
     6    -2

Ax= b中的向量b是:

>> b = [5;2]
b =
     5
     2

我们来检查A的行列式来确保A的逆矩阵存在:

>> det(A)
ans =
     6

解为:

>> x = inv(A) * b
x =
   -1.0000
   -4.0000

解的特殊情况

如果方程组的个数比未知数的个数少,此时方程组称为欠定。
这意味着方程组有无数解,因此此时方程组只有一些未知数能能够确定下来,不能确定的可以赋予任意值,因此可以得到无限组解。

我们举个简单例子
MATLAB与线性代数--逆矩阵与伪逆矩阵_第3张图片
稍微处理可以得到:

MATLAB与线性代数--逆矩阵与伪逆矩阵_第4张图片
在这个方程组中,我们可以为两个变量找到值(xz),第三个变量y是不确定的。我们可以为y选择自己喜欢的值,此时方程组就有解了。
另一种方程组存在无限解的情况是当det(A) = 0时,此时我们引入伪逆矩阵(属于广义矩阵)的概念
解的办法是为未知数给出最小范数实数解,即是说,解向量x具有最小范数且元素都为实数,我们拿一个线性方程组来举例:

MATLAB与线性代数--逆矩阵与伪逆矩阵_第5张图片
很明显,这个方程具有无限解,我们输入数据:

>> A = [3 2 -1;0 4 1];
>> b = [7;2];
>> C = [A b];

现在计算秩:

>> rank(A)
ans =
     2
>> rank(C)
ans =
     2

由于这些秩相等,解存在,可以使用左除产生一组解:

>> x = A\b
x =
    2.0000
    0.5000
         0

MATLAB通过把其中一个变量设为0来产生一组解。
此时的矩阵A不是一个方阵,不能算行列式,所以可以使用伪逆矩阵来解这个方程组。输入以下内容:

>> x = pinv(A) * b
x =
    1.6667
    0.6667
   -0.6667

MATLAB使用穆尔-彭罗斯法计算pinv

你可能感兴趣的:(笔记)