首页 > 其他分享 >矩阵与线性方程组

矩阵与线性方程组

时间:2022-10-20 11:59:02浏览次数:54  
标签:AB 线性方程组 矩阵 vec pivot 我们 高斯消

高斯消元

当我们用线性方程组来理解矩阵时,我们有矩阵的高斯消元。高斯消元本质上是一系列的对矩阵的“变换”或者说“操作”,这种操作总共有三种:1)给某一整行乘上非零常数\(c\);2)将某一行加到另一行上;3)交换两行。这三种操作统称“初等行变换”。而我们也可以把这种变换看作是在原先的基础上乘上了一个“用来完成变换”的矩阵,称为初等矩阵。

高斯消元能成功的关键在于,以上三种操作中的任何一种都是不会改变方程组的解的情况的——对于每一步操作,我们可以对比操作前与操作后的方程组\(F\)和\(F'\),可以发现每一个\(F\)的解都是\(F'\)的解,而每一个\(F'\)的解都是\(F\)的解。我们通过这三种操作,最终能把矩阵消成一个“上三角”的形状。此时最底下的方程已经变成了一元一次方程,而通过回代,每一个方程都会变成一元一次方程。求解这样的“上三角”方程组是容易的,而我们又知道,这个“上三角”方程组的解恰好就是原方程组的解。所以我们成功解出了原来的方程组。

事实上,一个矩阵高斯消元得到的“上三角”矩阵可能不止一种的,因为通过不止一种方式实施以上的操作都可以解出线性方程组的解。但如果我们加上一些规定,比如在行交换的时候只找最上面的非零行等等,那么高斯消元的结果可以是唯一的。换句话说,高斯消元的过程可以写成一个确定的程序,而一个确定的程序对于确定的输入只会输出唯一的结果。

我们来研究高斯消元完成后得到的上三角矩阵。此时某一行如果不是全0的,就称这一行最左边的那个系数为一个pivot。高斯消元的过程告诉我们,每个pivot的正下方必定全为0。还告诉我们,从上往下不同行之间,pivot的位置一定严格从左向右递增。但是,并不一定每一行每一列都有pivot。比如,如果矩阵里有一模一样的两行,那么高斯消元后会得到一个全0行,这一行就是没有pivot的。

逆矩阵

首先我们研究方阵。假设有一个\(n \times n\)的矩阵\(A\)。假如\(A\)有\(n\)个pivot,这意味着被上三角矩阵的主对角线上都不为0。这使得我们可以从最后一行往上消,把所有非主对角线上的系数全部变成0,同时保证主对角线上的系数不变,全部非零。通过每行乘以系数,还可以把主对角线上的所有系数都变成1。这个过程称为高斯-约旦消元。我们发现,对于有\(n\)个pivot的\(A\),高斯-约旦消元一定能得到一个单位矩阵。并且我们提醒自己,以上的每一步操作都是那三个基本的行变换,因此实际上我们可以把它看作是乘以了一系列的矩阵从而将\(A\)变成了\(I\)。将所有这些乘在\(A\)上的矩阵整体看作一个\(C\),就得到了这样一个命题:“存在一个矩阵\(C\)使得\(CA=I\)”。(\(C\)也是\(n \times n\)的)。那么我们对于线性方程组\(A\vec{x}=\vec{b}\),其中\(\vec{x},\vec{b}\)是任意的\(n\)维向量,我们可以两边同时乘\(C\),就得到\(CA\vec{x}=C\vec{b}\),也即\(\vec{x}=C\vec{b}\)。这说明\(\vec{x}\)有唯一解。那么当我们依次令\(\vec{b}\)等于\((1,0,\cdots,0),(0,1,\cdots,0),\cdots,\)\((0,0,\cdots,1)\)时,也可以相应地得到\(n\)个\(\vec{x}\),将这\(n\)个\(\vec{x}\)凑成一个矩阵\(B\),恰好就有\(AB=I\)。也就是我们又得到了命题:“存在一个矩阵\(B\)使得\(AB=I\)”。由\((CA)B=C(AB)\)我们惊奇地发现\(B=C\)。也就是\(AB=BA=I\)。有没有可能有第二个矩阵满足这样的性质呢?假如有\(D\neq B\)使得\(AD=I\)且\(DA=I\),那么\(B(AD)=(BA)D\),就会得出\(B=D\),矛盾。也就是说,对于有\(n\)个pivot的\(A_{n \times n}\),满足\(AB=BA=I\)的矩阵\(B\)是独一无二的,我们定义这个\(B\)为\(A\)的逆矩阵,记为\(A^{-1}\)。

逆矩阵有这样的运算性质:\((AB)^{-1}=B^{-1}A^{-1}\)。因为它满足\((B^{-1}A^{-1})(AB)\)\(=B^{-1}(A^{-1}A)B=B^{-1}B=I,(AB)(B^{-1}A^{-1})=A(BB^{-1})A^{-1}=AA^{-1}=I\),而逆矩阵又是唯一的。归纳地,我们发现一连串矩阵相乘的逆等于这些矩阵各自的逆倒着相乘。

并不是每个方阵都是“可逆”的。以上讨论告诉我们,如果\(A\)有\(n\)个pivot,那么\(A\)可逆。对称地,我们现在想知道如果\(A\)可逆,\(A\)是否必须得有\(n\)个pivot。这里,我们考虑一个简单的事实,如果\(A\)没有\(n\)个pivot,那么上三角矩阵中一定会出现全0行。现在考虑让这个带有全0行的矩阵\(A\)乘上一个\(n\times n\)的矩阵\(B\),那么\(AB\)中也会出现一个全0行,这就说明了对于任意的\(B\)都不可能满足\(AB=I\),\(A\)必定不可逆。因此取逆否命题,就有“如果\(A\)可逆,\(A\)就必须有\(n\)个pivot。”我们甚至还可以加强这个命题:“只要存在方阵\(B\)满足\(AB=I\),则\(A\)必须有\(n\)个pivot。”

于是我们得到了:“\(A\)可逆”与“\(A\)有\(n\)个pivot”是等价的。而进一步,我们有了“存在方阵\(B\)满足\(AB=I\)则\(A\)有\(n\)个pivot”,而“\(A\)有\(n\)个pivot”等价于“\(A\)可逆”,而“\(A\)可逆”则有“存在方阵\(B\)满足\(AB=I\)”,因此得到:“\(A\)有\(n\)个pivot”与“存在方阵\(B\)满足\(AB=I\)”是等价的。再进一步,我们已经看到了“\(A\)有\(n\)个pivot”可以推出“存在方阵\(C\)满足\(CA=I\)”,而在刚才的证明过程中我们看到“存在方阵\(C\)满足\(CA=I\)”可以推出“存在方阵\(B\)满足\(AB=I\)”,而这等价于“\(A\)有\(n\)个pivot”,因此“\(A\)有\(n\)个pivot”与“存在方阵\(C\)满足\(CA=I\)”是等价的。也就是说,以下四个命题等价:

  1. \(n \times n\)的矩阵\(A\)有\(n\)个pivot。
  2. \(A\)可逆。
  3. 存在\(n \times n\)的矩阵\(B\)满足\(AB=I\)。
  4. 存在\(n \times n\)的矩阵\(C\)满足\(CA=I\)。

高斯消元过程中用来操作的“初等矩阵”都是可逆的,我们可以从效果上来理解:将操作的效果“倒放”的矩阵一定是存在且唯一的。

怎样求出\(A\)的逆矩阵呢?我们知道,将\(A\)消作\(I\)的过程乘上的所有初等矩阵的乘积就是\(A\)的逆矩阵,因此我们只要把这些矩阵乘起来就可以得到逆矩阵了。而在求解过程中为了简便,我们可以采取这样一种更简单的方法:考虑一个分块矩阵\([A \ \ I]\),给它依次左乘上所有的初等矩阵,最后一定能得到\([I \ \ A^{-1}]\),而“乘初等矩阵”等价于“进行行变换操作”,那么我们只要在给\(A\)进行高斯-约旦消元的过程中,“顺便”把行操作“作用”在\(I\)上,就能得到\(A^{-1}\)。

矩阵的秩

现在来讨论一般情形。即\(A\)可能没有\(n\)个pivot,甚至\(A\)可能不是一个方阵。

对于一般的一个\(m \times n\)的矩阵\(A\),我们也可以进行高斯消元的操作。但是,消元过程中可能消出一个全0行,如果全0行对应的右侧是0,那么方程会有无穷多组解;如果全0行对应的右侧不是0,那么方程组无解。当矩阵满足什么条件时会消出全0行,这是难以直接通过高斯消元的过程看清楚的。我们所作的,只不过是就“会不会出现全0行”进行分类讨论。我们还是可以用相同的方式来定义pivot,并且获得一个pivot的个数:这是对结果的讨论。一般地,高斯消元结束后可能并不能得到一个上三角矩阵,而只能得到“行阶梯形矩阵”——pivot并不一定整齐地排列在对角线上,但从上往下列坐标一定严格向右递增,形成一个倒过来的“阶梯”的形状。同样地,高斯-约旦消元也不一定能得到一个单位矩阵,而只能得到“简化行阶梯形矩阵”——它也是一个“阶梯”的形状,同时满足pivot所在的列除了pivot处为1以外其他都是0。至于为什么这样的“阶梯形”是一定成立的,这是由高斯消元的特点形成的。

我们后面将会看到,无论采取怎样的消元方式,一个矩阵的pivot数量都是唯一的。现在,我们假定一个\(m \times n\)的矩阵\(A\)有\(r\)个pivot,那么称矩阵\(A\)的秩为\(r\),记作\(\text{rank}(A)=r\)。意思是这个矩阵通过“某一种”消元方式得到了\(r\)个pivot。我们知道,行秩和列秩分别是矩阵的列空间和行空间的维数,它们是通过线性空间定义的。而现在,矩阵的秩是通过高斯消元来定义的。我们下面要说明,矩阵的行秩、列秩和秩全都相等。

我们观察到,矩阵\(A\)的简化行阶梯形矩阵\(R\)必定与\(A\)有相同的秩。即\(\text{rank}(A)=\text{rank}(R)\)恒成立。这是显然的,因为\(A\)的秩是定义在行阶梯形上的,而从\(A\)到\(R\)的过程不会创造也不会消灭pivot。

我们又观察到,\(R\)的秩必定等于\(R\)的行秩,也等于\(R\)的列秩。因为\(R\)的pivot所在的那些列都是单位向量,线性独立。底下的\(m-r\)行都是全0行不必理会,因此这些向量一定张成了整个列空间,因此这些向量就是列空间的一组基,这组基的向量个数等于pivot的个数,这就是说\(R\)的秩等于\(R\)的列秩。又因为,\(R\)的底下\(m-r\)行都是全0行,不会对张成行空间有贡献,因此这\(r\)个pivot所在行一定能张成整个行空间。而pivot所在的列除了pivot以外全是0,因此想让pivot所在的这些行线性组合出一个全0行,只能让每一行都乘上0来得到,这正是线性独立的定义,因此这些行是线性独立的,也就是说这些pivot行是行空间的一组基。这组基中向量的个数等于pivot的个数,所以说\(R\)的秩等于\(R\)的行秩。

所以我们有:“\(R\)的行秩等于列秩。”从这个结论出发,如果我们能够说明高斯消元的每一步都不会改变一个矩阵的行秩和列秩,我们就可以得到对于任意矩阵\(A\)都有“行秩等于列秩”的结论。

由于高斯消元进行的是行变换,我们可以证明变换前后行空间是不变的,因此也必然有行秩不变:只需要说明变换前的任意一个行向量的线性组合一定可以被变换后的某个线性组合表示,对称地变换后的也一定可以被变换前的表示。

列秩的情形要复杂一些。行变换可能事实上改变了列空间,但我们会看到列空间的维数是不变的:对变换前的矩阵,我们考虑任意选出一个列向量的子列做线性组合,并在做线性组合时给每个系数一个特定的值。对变换后的矩阵也相应地做这样的一个线性组合。我们发现,前一个线性组合等于零向量“当且仅当”后一个线性组合等于零向量——因为对于这样的行操作,这个“等于零”可以互相从一边推到另一边。因此,前一个子列线性独立当且仅当后二个子列线性独立。我们能由此进一步说明,前后能选出的“最长”的线性独立子列的“长度”也是相等的,这就是极大线性无关组了,所以列秩相等。

综上,我们得到:\(R\)的秩 = \(R\)的行秩 = \(R\)的列秩 = \(A\)的秩 = \(A\)的行秩 = \(A\)的列秩。

我们还没有解决最后一个遗留的问题:在高斯消元将任意矩阵变为行阶梯形的过程中,是否有可能由于消元顺序的不同而导致不同的pivot数量。对此,我们先来研究零空间。

零空间: \(Ax=0\)

方程组\(Ax=0\)的所有解\(x\)形成的向量空间称为\(A\)的零空间(Nullspace),记为\(N(A)\)。设\(A\)是\(m \times n\)的,显然\(N(A) \subseteq\mathbb{R}^n\)。而由于\(\forall x_1,x_2 \in N(A)\),有\(Ax_1=0\),\(Ax_2=0\),因此也有\(A(c_1x_1+c_2x_2)=0\),因此\(N(A)\)一定是\(\mathbb{R}^n\)的一个子空间。

从简化行阶梯形矩阵的角度来考察,矩阵的每一列对应着方程的某个变量。对于所有没有pivot的列,变量是可以任取的——这些变量称为自由元。而当自由元取定之后,主元也就取定了。简化行阶梯形矩阵本质上在告诉我们这样一件事情:每一个主元都由所有的自由元来决定,自由元的系数决定了主元的取值,这种决定必须是“唯一”的,因为一旦自由元确定,主元的值也就确定了。因此,简化行阶梯形矩阵也必定是唯一的。假如存在\(r\)个pivot,那么就有\(n-r\)个自由元。对所有这\(n-r\)自由元以\((1,0,\cdots,0),(0,1,\cdots,0)\)\(,\cdots,(0,0,\cdots,1)\)的方式来取值,我们就可以得到\(n-r\)组满足条件的向量\(x\)。这\(n-r\)个向量是线性独立的,并且他们的线性组合恰好能使得所有自由元取得任意值,因此恰好张成了整个零空间。由此我们可以发现\(\dim(N(A))=n-r\)。

现在可以解决那个问题了:我们已经知道高斯消元的每一步,即初等行变换,是不会改变方程组的解空间的,因此也不会改变矩阵的零空间。而假若pivot数量\(r\)发生了变换,这也就意味着零空间的维数发生了变化,这就意味着高斯消元改变了解的情况,矛盾。

现在我们终于得到\(A\)的秩 = \(R\)的秩是对任意矩阵成立的了。对于任意的矩阵\(A\),都有\(A\)的秩 = \(A\)的行秩 = \(A\)的列秩。这是线性代数中最重要的一个定理。

标签:AB,线性方程组,矩阵,vec,pivot,我们,高斯消
From: https://www.cnblogs.com/qixingzhi/p/16809313.html

相关文章

  • Sam's Numbers 矩阵快速幂优化dp
    ​​https://www.hackerrank.com/contests/hourrank-21/challenges/sams-numbers​​设dp[s][i]表示产生的总和是s的时候,结尾符是i的所有合法方案数。那么dp[s][i]可以由dp[......
  • 796. 子矩阵的和
    输入一个n行m列的整数矩阵,再输入q个询问,每个询问包含四个整数x1,y1,x2,y2,表示一个子矩阵的左上角坐标和右下角坐标。对于每个询问输出子矩阵中所有数的和。输入格式......
  • 矩阵还原——————数据结构作业
    /*给定一个一维数组,将其转化为对称矩阵(关于主对角线对称)*/#include<stdio.h>#include<string.h>constintMAXN=1e3;intmat[MAXN][MAXN];inta[MAXN];in......
  • FZU 1061 矩阵连乘
     Problem1061矩阵连乘Accept:445    Submit:1699TimeLimit:1000mSec    MemoryLimit:32768KB ProblemDescription给定n个矩阵{A1,A2,...,An},考察这n......
  • 矩阵快速幂小结
       矩阵快速幂大概是用来解决这样一类问题,当你知道了一个递推式比如a[n]=a[n-1]+a[n-2]题目要求你求出a[n]。如果n大于1亿怎么办?不可能用for。解决办法就是根据递推......
  • MATLAB如何对矩阵进行求和?sum(A,1) sum(A,2)
    sum(A,1)对列中的连续元素进行操作,并返回每列总和的行向量。sum(A,2)对行中的连续元素进行操作,并返回每行总和的列向量。......
  • 【LeetCode】1351. 统计有序矩阵中的负数(C++)
    1351.统计有序矩阵中的负数(C++)​​1题目描述​​​​2示例描述​​​​2.1示例1​​​​2.2示例2​​​​2.3示例3​​​​2.4示例4​​​​3解题提示​​​​4......
  • leetcode-240. 搜索二维矩阵 II --z字搜索
    240.搜索二维矩阵IIZ字搜索法,持续缩小target可能在的范围,从右上角进入矩阵开始搜索,左下角也是一样的,但是不能从左上角或右下角开始范围:x再大也不能超过矩阵宽度,y......
  • 【luogu CF645E】Intellectual Inquiry(DP)(结论)(矩阵乘法)
    IntellectualInquiry题目链接:luoguCF645E题目大意给你一个序列,值域在1~k,然后要你在后面再加上m个数,也要满足值域,然后使得本质不同的子序列个数最多,输出这个数量。......
  • 初二矩阵快速幂定时突袭——总结
    矩阵加速入门2思路:基础的矩阵快速幂题,稍微卡常。原始矩阵:\(\begin{bmatrix}f_2&f_1\end{bmatrix}\)加速矩阵:\(\begin{bmatrix}1&1\\1&0\end{bmatrix}\)代码......