线性代数笔记(一)

到底意难平

基于麻省理工公开课的线性代数

这是一门关于矩阵理论和线性代数的基础课程。重点是在其他学科中有用的主题,包括方程组,向量空间,行列式,特征值,相似度,正定矩阵。

线性代数的概念对于理解机器学习背后的原理非常重要,尤其是在深度学习领域中。所以为了以后在工业大数据的方向里少一些疑惑,特地先预习一遍线性代数作为一个打基础的过程。

以下的每一章内容就按公开课的每一课时的内容来划分。


方程组的几何解释

基本概念

一、 行图像、 列图像

用以下方程式为例子

写成矩阵的形式就是

而等号右侧的向量记为b,线性方程组记为Ax=b

Row picture行图像

行图像遵从解析几何的描述,每个方程在平面上的图像为一条之间,找到符合方程的两个数组,确定出x-y平面上的两个点,连接两点可以画出该方程所代表的直线,两直线交点即为方程组的解,x=1,y=2.

Column picture列图像
在列图像中,我们将系数矩阵写成列向量的形式,则求解的原方程变为寻找列向量的线性组合(linear combination)来构成向量b.

当任意取x,y,那么所有的线性组合是什么?那么两个向量的组合会布满整个坐标平面。


三元方程

先写方程式

无论是行图像法也行,列图像法也行,但是列图像是更重要的知识点

这是三元方程组的简洁形式

Row picture行图像

方程的行图像比较复杂,只要知道行图像是由三个平面构成的,每一个方程都是三维空间内的一个平面,方程组的解为三个平面的交点。

Column picture列图像

画图如下

通过列图像来计算出解,但是有时候这个方法也不一定好用,因此后面会学习消元法。

将第五个公式稍微修改右侧的向量,变为第一列和第二列的和

然后得出的值就是x=1,y=1,z=0
这样修改后的列图像基本没变化,三个向量还是一样,只是需要寻找一个新的组合。但是对于行图像来说,三个平面都会改变了。

思考:是不是对于所有b,方程Ax=b都有解。
列的线性组合是否能覆盖整个三维空间。

通过反例证明:若三个向量在同一个平面内,那么只有当b也在这个平面内,才有解。若b不在该平面内,则三个列向量无论怎么组合也得不到平面外的b,此时矩阵A为奇异阵或者不可逆矩阵。在矩阵A不可逆的条件下,不是所有的b都能令方程Ax=b有解。

想象:九维的向量矩阵,九个方程九个变量。
如果有一各列向量与另外的某一列相同,那么就会没有意义,这样就没办法求出所有的b的解,该九维的向量只能在八维中求解。

矩阵与向量的乘法

首先构造一个矩阵Ax=b

有两种方法

  • 取1个第一列,2个第二列,然后相加

  • 通过矩阵A的行向量和X向量进行点积计算:

矩阵消元

Elimination with matrices

消元法Method of Elimination

消元法是计算机软件求解线性方程组所用的最常见的方法,任何情况下,只要矩阵A可逆,均可以通过消元法求得Ax=b的解。

矩阵为

高斯消元法,通过对方程组的某两个方程进行适当的乘和加减,使某一未知数系数变为0,从而消减未知数个数的目的。

我们将矩阵(10)左上角的1称之为“主元”(the first pivot)
第一步要通过消元将第一列中除了主元之外的数字均变为0.
操作方法就是用之后的每一行减去第一行的适当倍数
该例子中第二行应该减去第一行的3倍,之后第三行也做类似的操作,但因为该例子第三行为0,所以不用进行操作。

但是在MATLAB中,还是会继续进行第三行的运行即使第三行的第一列的系数为0,还是会继续运算一遍。而且MATLAB是先算左边矩阵,再算右边的。

注意的是,主元不能为0,如果刚好0出现在主元的位置上,那么要和下面的其他行进行“行交换”,使得非零数字出现在主元位置上,如果找不到合适的行进行交换的话,那么消元终止,证明该矩阵为不可逆矩阵,切线性方程组没有唯一解。

比如下面这个就没有解

回代 Back-Substitution

这时候需要把右侧向量b代入,插入矩阵A之后形成最后一列,在消元过程中带着b一起操作,这种叫做“增广矩阵”。

而MATLAB,算完系数矩阵再处理b,把向量b当做新的一列加入进去。

通过回代,我们可以得出新的方程组

从最后一行得到z=-2,依次回代可以得到y=1,x=2

上面的内容都是比较基础简单的内容。

消元矩阵 Elimination Matrices

核心内容就是对行或者列进行独立操作

矩阵乘以一列得到一列,矩阵的每一列和列向量进行线性组合
大概就是右边行向量分别变成了矩阵的每一列的系数,乘以每一列后再每一列合并为一列。

一行乘以矩阵得到一行,矩阵的每一行和行向量进行线性组合
大概就是左边行向量分别变成了矩阵的每一行的系数,乘以每一行后再每一行合并为一行。

我们把这种简单的叫初等矩阵E,然后 $E_{21}$就是指第二行第一列的位置的变换

3×3矩阵的消元本来分三步完成,最后得到的是$E_{32}(E_{31}(E_{21}A))$。但是本例中$E_{31}=I$,所以结果为$E_{32}(E_{21}A)=U$,因为矩阵运算符合结合律,也可以写成$(E_{32}E_{21})A=U$.记作$EA=U$。我们可以理解为将所有的初等矩阵$E_{**}$乘在一起,再乘以A,让A变成U。注意的是矩阵的顺序不能改变,但是括号可以变。AB≠BA

方程$Ax=b$的解也满足方程$Ux=EAx=Eb=c$,因此将问题转化为$Ux=c$。

置换矩阵Permutation

如果要对矩阵进行行变换,那么置换矩阵要放在左边。
如果是进行列变换,那么置换矩阵要放在右边。

对于三阶矩阵:

构造$P$矩阵是对$I$矩阵进行‘行交换’来实现的。
左右乘的效果不同也展示了矩阵运算不符合交换律的性质。

我们关注的不是关于A怎么变换成U,而是U如何变回A。这就需要用到逆矩阵的知识。往下学习.


矩阵乘法和逆矩阵

矩阵乘法Matrix multiplication

让矩阵A和B相乘得到C。其中A为m×n(m行n列)矩阵,B为n×p矩阵,则C为m×p矩阵。记$C_{ij}$为矩阵C中第i行第j列的元素。
以下讨论四种方法

标准方法(行乘以列)

矩阵乘法的标准计算方法是通过矩阵A的第i行和矩阵B的第j列的列向量点积得到$C_{ij}$。这里左边矩阵的列必须等于右边矩阵的行。

举例

以下补充矩阵的加法和数乘规则:

本质上矩阵的代数运算就是线性方程组的运算

而矩阵乘法可以视为给线性方程组做变量置换

将左侧$y_1$ 至 $y_m$的表达式代入右侧的方程,则有

C=DA为k×n矩阵,从上式得到$C_{ij}$的公式
即矩阵的乘法运算规则,可以看到这是变量代换的结果,所以矩阵乘法中两矩阵形状可以不同,但是左侧矩阵的列数要等于右侧的行数。
即w=Dy中的y的分量个数要等于y=Ax中y的分量数,不然线性方程变量代换无法进行。

矩阵乘法符合结合律、分配律,但是不遵守交换律
可以通过定义加以证明:

  1. 即将等号两侧矩阵的元素乘开,比较的对应元素,从而得出相等或者不等的结论。
  2. 我们也可以从变量替换的角度思考一下矩阵乘法运算定律。
    比如
    • 结合律,若方程组有如下关系u=Ew,w=Dy,y=Ax,则做变量替换可由u=Ew=EDy=EDAx.结合律为(ED)A=E(DA),它表达的意思就是替换环节无论是先把u表示成EDy,再表示成x的表达式,又或者先把w表示成DAx,再把公式代入u=Ew都是等效的。
    • 分配律也是一样。先做加法再进行变量替换,或者先做变量替换再相加也是等效的。
    • 但是交换律就不行了,别说矩阵的尺寸可能导致交换顺序后不能进行乘法运算。即使能进行乘法,变量替换的关系也完全不对了。

列操作

列操作是指矩阵C的第j列是通过矩阵A乘以矩阵B第j列的列向量得到的,这表明矩阵C的列向量是矩阵A列向量的线性组合,组合的“权”就是矩阵B第j列的各个分量。

上式中$b_i ,Ab_i$均为列向量,其中

行操作

行操作是指矩阵C的第i行是通过矩阵A的第i行乘以矩阵B得到的,这表明矩阵C的行向量是矩阵B行向量的线性组合。

此处的$a_i和a_iB$为行向量

行乘以列

矩阵A的第K列是一个m×1的向量,而矩阵B第k行是一个1×p的向量,两向量相乘会得到一个矩阵$C_k$将所有的n个矩阵相加得到C。

举例:
           col of A   ×  row of B
            m×1    1×p

可以从矩阵乘法对加法的分配律推导出来。

分块乘法

将矩阵分块,然后进行乘法

假设矩阵A和矩阵B是方阵,且大小相等(其实不需要相等,只需要匹配)。分成四份。

其中$C_1=A_1B_1+A_2B_3$,与标准算法中矩阵里的元素的计算一样。


逆矩阵Inverse

不是所有的矩阵都有逆,可能有也有可能没有。

上面的例子的逆矩阵在左边,所以是左逆,在右边也可能存在逆矩阵。
方阵中,左逆矩阵是于右逆矩阵的。如果是非方阵,左逆是不等于右逆的。

一般我们叫可逆矩阵(invertible)或者非奇异矩阵(nonsingular)。
反之,如果A为奇异(singular),那么就没有逆矩阵。它的行列式为0。或者另一个说法是,A为奇异矩阵,则方程Ax=0存在非零解x,例如:

在这个不可逆矩阵的例子中,左边的两个列向量是在同一方向上。列向量对生成的线性组合没有贡献。等价的说法:不可逆矩阵的列向量可以通过线性组合得到0。
换言之,如果矩阵A存在逆矩阵,则方程Ax=0只有零解,证明:反设其存在非零解x向量,则有$x=(A^{-1}A)x=A^{-1}(Ax)=A^{-1}0=0$,有矛盾。

对于可逆矩阵,求逆是一个重要的问题。

从“列操作”角度来看,求逆矩阵过程和求Ax=b相同,只是这里x为矩阵$A^{-1}$的第j列,而b为单位阵I的第j列。

高斯-若尔当消元法 Gauss-Jordan Elimination

对于上面的可逆矩阵,求逆相当于求两组方程

Gauss-Jordan消元法可以同时处理两个方程:

在用高斯消元法得到上三角矩阵之后,按照若尔当的做法继续消元,使原矩阵变成单位阵,这样右侧的矩阵就变成了逆矩阵。

A的LU分解

矩阵乘积的逆矩阵Inverse of product

矩阵乘积的转置Transpose of a product

矩阵乘积的转置是两个矩阵调换顺序后再分别转置

通过上面的例子可以观察得到

转置的基础知识介绍:

矩阵A的转置矩阵记为$A^T$,对矩阵进行转置就是将A矩阵的行变为$A^T$的列,A的列变成$A^T$的行,看起来就像是沿着对角线进行翻转。

$其数学表达式为(A^T)_{ij}=A_{ji},即A^T的第i行第j列的元素为原矩阵A中第j行i列的元素$

矩阵的LU分解

LU分解是理解矩阵性质A的重要方法,可以将矩阵的分解类比为多项式的因式分解,分解后的结果可以让我们更容易看清“解”的状态。

在没有行变换的情况下,矩阵A通过左乘一系列消元矩阵$E_{ij}$可以转化为U,在二阶矩阵中,进行一次消元操作就可以达到这一效果。

在等式两侧左乘,得到$E_{21}^{-1}E_{21}A=E_{21}^{-1}U。即A=E_{21}^{-1}U$。就得到了矩阵A的LU分解的结果,$E_{21}^{-1}是E_{21}的逆向操作\\
即左乘E_{21}中使得矩阵A第二行[8,7]减去第一行的4倍得到新的第二行[0,3]\\
那么再左乘E_{21}^{-1}可以使得新的第二行[0,3]加上第一行的4倍又变回原来第二行的数值[8,7]$

其中U为上三角阵,主元依次排列于它的对角线上。$E_{21}^{-1}$即L为下三角阵。有时候我们也能通过分解得到对角阵D(diagonal matrix),例如

对于三阶矩阵,在没有换行的情况下:

左乘逆矩阵可得:

举例,设定一组消元矩阵,其中$E_{31}$为单位阵I,其他两个消元矩阵如下:

矩阵的乘法运算就是等式左边的矩阵的第i行乘以右边矩阵等于等式 右边矩阵的第i行。

现在反过来用逆矩阵来运算:$L=E^{-1}=E_{21}^{-1}E_{32}^{-1}$

如果在没有行交换的操作,则消元矩阵的因子可以直接写入矩阵L,没有多余的交叉项出现是LU分解优于EA=U这种形式的原因之一。

消元法所需的运算量

在一些应用中需要处理超大型矩阵,即使用计算机来处理这个问题,也需要评估所需的计算量。
如果把“先乘后减”大致记为一个运算,那么对于一个n×n的矩阵,对于一行进行消元要进行n次运算,由于有n行,所以进行了$n^2$次运算,结果得到了第一列除第一主元外都消成0的矩阵。随后开始对除第一行第一列之外的剩余部分进行消元,这相当于一个(n-1)×(n-1)的矩阵,利用积分公式可以估算其数值

等号右侧向量b的行变换大致需要$n^2$次运算

行转换Row exchanges

当主元的位置出现了0,那么就需要进行“行交换”。可以通过左乘一个置换矩阵来实现该操作。例如

可以实现3×3矩阵的第一行与第二行的交换。所有的3×3的置换矩阵包括:

对于n×n矩阵存在着n!个置换矩阵。置换矩阵每一行或者每一列只有一个元素是1,其他都是0,从第一行选一个位置设定为1有n个选择,第二行则只剩下n-1个选择,以此类推,最后有n!种可能。

对于某阶的置换矩阵集合而言,置换矩阵的两两乘积仍在这个集合中,置换矩阵的逆矩阵也在此集合中。置换矩阵的逆矩阵即为它的转置$P^{-1}=P^T$。

转置、置换和空间

现在才算进入了线性代数的大门,本节引入向量空间(vector spaces)和子空间(subspaces)的概念。

置换 Permutations

当应用消元法求解方程组的时候,我们需要通过行交换将0从主元位置移走,左乘一个置换阵可以实现行交换的操作。

MATLAB在运行时,有时候为了满足数值计算的要求,会对接近于0的非零主元做行交换。

因此我们的LU分解由A=LU变为PA=LU,其中的P就是对A的行向量进行重新排序的置换矩阵。

置换矩阵P是通过对单位阵进行“行交换”得到的,对于n×n矩阵存在着n!个置换矩阵。置换矩阵具有特殊性质

转置 Transposes

矩阵A的转置记为$A^T$,对矩阵进行转置就是将A矩阵的行变为$A^T$的列,则完成后A的列也就称为了$A^T$的行,看起来矩阵如同沿着对角线进行了翻转。

表达式为

就是$A^T$的第i行j列的元素为原矩阵A中第j行i列的元素。

若A是对称矩阵则有$A^T=A$。

矩阵乘积的转置$(AB)^T=B^TA^T$

给定一个矩阵R,R可以不是方阵,则乘积$R^TR$一定是对称阵。

举例

向量空间

  • 什么是向量空间?
  • 什么是子空间?
  • 向量有什么运算?

我们可以对向量进行所谓“线性运算”,即通过加和(V+W)与数乘运算(3v)得到向量的线性组合。向量空间对线性运算封闭,即空间内向量进行线性运算得到的向量仍在空间之内。

$R^2$即为向量空间,它是具有两个实数分量的所有分量(二维实向量)的集合。

例如$\begin{bmatrix}
3\\
2
\end{bmatrix},
\begin{bmatrix}
0\\
0
\end{bmatrix},
\begin{bmatrix}
\pi\\
e
\end{bmatrix}…$

向量$\begin{bmatrix}
a\\
b
\end{bmatrix}$的图像是从原点触发到点(a,b)的箭头,其中第一分量a为横轴坐标,第二分量b为纵轴坐标,空间$R^2$的图像为整个x-y平面。

所有的向量空间必然包含零向量,因为任何向量数乘0或者加上反向量都会得到零向量,而因为向量空间对线性运算封闭,所以零向量必属于向量空间。

$R^3$是向量空间,它是具有三个实数分量的所有向量的集合。
$R^n$是向量空间,具有n个实数分量的所有向量的集合。

反例:$R^2$的第一象限则不是一个向量空间。

子空间

包含于向量空间之内的一个向量空间称为原向量空间的一个子空间。

例如用实数c数乘$R^2$空间中向量v所得到的向量集合就是$R^2$空间的一个子空间,其图像为二维平面上穿过原点的一条直线,它对于线性运算封闭。

反例:$R^2$中不穿过原点的直线就不是向量空间。子空间必须包含零向量,原因就是数乘0得到的零向量必须处于子空间中。

$R^2$的子空间包含:

  • $R^2$空间本身
  • 过原点的一条直线(这是$R^2$空间中的一条只是,与$R^1$空间有区别)
  • 原点,仅包含0向量Z

$R^3$的子空间包含:

  • $R^3$空间本身3维
  • 过原点的一个平面2维
  • 过原点的一条直线1维
  • 原点,仅包含0向量Z

列空间Colunmn spaces

给定矩阵A,其列向量属于$R^3$空间,这些列向量和它们的线性组合长成了$R^3$空间中的一个子空间,即矩阵A的列空间C(A)。

如果$A=\begin{bmatrix}1&3\\2&3\\4&1\end{bmatrix}$,则A的列空间是$R^3$中包含向量$\begin{bmatrix}1\\2\\4\end{bmatrix}$和$\begin{bmatrix}3\\3\\1\end{bmatrix}$并穿过远点的平面,空间内包含两向量的所有线性组合。

在之后的课程里在列空间和子空间的基础上理解Ax=b.


列空间和零空间

回顾:所谓“向量空间”是对于线性运算封闭的向量集合。对于空间中的任意向量v和w,其和v+w和数乘cv必属于该空间,也就是说,线性组合cv+dw必属于该空间。

$R^1R^2,R^3…….$都是重要的向量空间,$R^n$代表的空间包含了所具有的n个分量的向量,其中字母R表名分量均为实数(real)。

子空间为包含于向量空间内的一个向量空间。它是原向量空间的一个子集,而且本身也满足向量空间的要求。但是“子空间”和“子集”的概念有区别,所有的元素都在原空间之内就可称为子集。但是要满足对线性运算封闭的子集才能成为子空间。

比如:
过原点的平面P是$R^3$的一个子空间
通过原点的直线L也是$R^3$的子空间
P并L(union)通常并不是$R^3$的子空间
P交L(intersection)是$R^3$子空间的特例——0空间,只有零向量。

任意子空间S和T的交集都是子空间,可以通过S和T本身对线性组合封闭来证明。

列空间 Column space

矩阵A的列空间C(A)是其列向量的所有线性组合所构成的空间。
求解Ax=b的 问题,对于给定的矩阵 A,对于任意的b都能得到解么?

并不是所有b都能保证Ax=b有解,因为有四个线性方程而只有3个未知数,矩阵A列向量的线性组合无法充满$R^4$,因此如果b不能被表示为A列向量的线性组合时,方程是无解的,只有当b在矩阵 A列空间C(A)里时,x才有解。

对于给定的矩阵A,由于列向量不是线性无关的,第三个列向量为前两个列向量之和,所以尽管有3个列向量,但是只有2个对向量空间有贡献。矩阵A的列空间为$R^4$内的一个二维子空间。

零空间(或化零空间)Nullspace

矩阵 A的零空间N(A)是指满足Ax=0的所有解的集合。对于给定这个矩阵A,其列向量含有4个分量,因此列空间是空间$R^4$的子空间,x为含有3个分量的向量,故矩阵 A的零空间是$R^3$的子空间。对于m×n的矩阵,列空间为$R^m$的子空间,零空间为$R^n$的子空间。

本例中矩阵A的零空间N(A)为包含$\begin{bmatrix} 1\\1\\-1 \end{bmatrix}$的任何倍数的集合。因为很容易看到第一列向量(1)和第二列向量(1)相加减去第三列向量(-1)为零。此零空间为$R^3$中的一条直线。

为了验证Ax=0的解集是一个向量空间,我们可以检验它是否对线性运算封闭,若v和w为解集中的元素,则有:

因此得证N(A)确实是$R^n$空间的一个子空间。

b值的影响 Other values of b

若方程变为

则其解集不能构成一个子空间,零向量并不在这个集合内。解集是空间$R^3$内过$\begin{bmatrix}1\\0\\0\end{bmatrix}$和$\begin{bmatrix}0\\-1\\1\end{bmatrix}$的一个平面,但是并不穿过原点$\begin{bmatrix}0\\0\\0\end{bmatrix}$.

这一讲主要关于矩阵的两种子空间,同时给出两种构造子空间的方法,对于列空间,她是又列向量线性 组合张成的空间;而零件空间是从方程组触发,通过让x满足特定条件而得到的子空间。


求解Ax=b:可解性和解的结构

计算零空间

矩阵A的零空间即满足Ax=0的所有x构成的向量空间。

对矩阵A进行“行操作”,并不会改变Ax=b的解,因此也不会改变零空间。(但是会改变列空间),此处不需要应用增广矩阵,因此等号右侧的向量b=0.

第一步消元得到:

第二列没有主元,因此主元二是第二行第三列的2.

矩阵U为提醒矩阵,其第三行变为零,是因为第三行的行向量本身就是第一行和第二行的行向量和线性组合。

矩阵的秩(rank)就是矩阵的主元的个数,上面的矩阵A和U的秩均为2,矩阵中包含主元的列为主元列(pivot column),不包含主元的列称为自由列(free column)。

特解 special solutions

当将系数矩阵变换为上三角阵U时,就可以用回代的方式求得方程Ux=0的解。本例中,包含主元的矩阵第1列和第3列为主元列,而不包含主元的第2列和第4列为自由列,对自由变量(free variable)$x_2$ 和 $x_4$我们可以进行赋值,例如令 $x_2=1$而$x_4=0$。则有

因此可得一解x=$\begin{bmatrix}-2\\1\\0\\0\end{bmatrix}$,其任意倍数均在矩阵的零空间之内。

取自由变量中$x_2$ =0 而$x_4$=1,则可得到另一解x=$\begin{bmatrix}2\\0\\-2\\1\end{bmatrix}$

矩阵A的零空间就是这些“特解”向量的线性组合所构成的向量空间。

矩阵的秩r等于其主元列的数目,因此自由列的数目等于n-r,即列的数目减去主元列的数目,这个数值等于特解的数目和零空间的堆数。

主元列和自由列的一个重要区别就是,自由列可以表示为其左侧所有主元列的线性组合,而主元列不可以。

例如,我们得到一个消元完成后的梯形矩阵U,其包含了四个主元列,观察它的第五列,这是自由列,其左侧有两个主元列,这两个主元列显然线性无关,第五列也显然可以写成前两个主元列的线性组合。

这里求的是Ux=0的解,如果令对应第二列,第四列,第六列这三个自由列以及第五列右侧的两个主元列x分量都为0,而对应第五列的自由变量$x_5$=1,则方程变为:

相当于求第五列如何用前两个主元列进行线性组合,所的解$\mathbf { x } ^ { T } = \left[ \mathrm { x } _ { 1 } , 0 , \mathrm { x } _ { 3 } , 0,1,0,0,0 \right]$即为原方程的特解之一。对所有的自由列都进行此操作,就得上文求解过程中对自由变量赋值过程。在本例中,四个自由变量分别取1会得到零空间的四个特解。如果把自由变量都赋值为0会怎样?答案是求得的解为0向量。

行最简解题矩阵 Reduce row echelon form(rref)

通过继续消元我们可以将矩阵U变成行最简阶梯矩阵形式R,其中主元为1,而主元列除主元外皆为0.在MATLAB中用命令rref(A)实现这一过程。

在矩阵中主元行和主元列的交汇处存在一个单位阵。通过“列交换”,可以将矩阵R中的主元列几种在左侧,从而在左上角形成这个单位阵,而将自由列几种在矩阵的右侧。如果矩阵A中的某些行是线性相关的,则在矩阵R的下半部分就会出现一些完全为0的行向量。

这里的I是一个r×r的方阵,F即自由列消元后组成的部分。

原方程Ax=0变为求解R的主元行乘以x,$\left[ \begin{array} { l l } { I } & { F } \end{array} \right] \left[ \begin{array} { l } { x _ { p i v ot } } \ { x _ { f r e e } } \end{array} \right]$=0.我们将Ax=0的特解作为列向量写成一个矩阵N,即零空间矩阵。则其形式为N=$\left[ \begin{array} { l } { } \ { I } \end{array} \right]$。这里的I为一个(n-r)×(n-r)的矩阵,就是对n-r个自由变量分别赋值1所构造出来的,零空间矩阵满足RN=0,0矩阵是一个m×(n-r)的矩阵。则从矩阵分块乘法运算可知零空间矩阵上半部分为-F,即N最终形式为

对于矩阵R而言,求零空间特解就变得非常简单,只需要将消元得到的F部分拼接上单位阵就可以得到所有的通解。注意如果在变换出R左上角的单位阵的过程中用了列交换,则最后的解要完成逆变换。


post18

Just for fun!
------------- 文章已经到尾 -------------