小学毕业就可以学的线性代数知识:从线性方程组到行列式
长文预警,可以按需分次看完。
公式显示不完整的可以尝试划动公式。
另外:如果你真的是小学生,那我先向你致以崇高的敬意。但是我要提醒你,你可能会遇到一些还没学的概念,不过放心,这些概念都很基础,在网上搜索一下便可以了解这些概念,不会影响你的阅读(排列组合的知识可以看我的上一篇文章排列组合到底是什么)。
Part1n阶矩阵的引入
生活中总会遇到许许多多需要用数学来解决的问题,在解决这些问题的过程中我们得出了许多有用的数学工具,其中一种就是方程。从小到大我们遇到过各种各样的方程,不过这次我们要讨论的主要是n元一次方程组,也叫n元线性方程组。
首先我们通过一个例子来概括一下解方程组的一般方法
解这个方程组并不难,这里直接给出答案
为了方便,我们把它简写成
详细过程由读者自行补充。观察可知(1)到(2)的过程对方程组反复施行了三种变换
1 把一个方程的倍数加到另一个方程上
2 互换两个方程的位置
3 用一个非零数乘以某一个方程
这三种变换称为线性方程组的初等变换。
接下来考虑一般的方程组
对于方程组(3),它的系数全部由字母表示,为了保证初等变换的使用不被影响,我们需要引入数域的概念,这样就能保证加减乘除的随意使用了。
如果复数集的一个子集满足:
1 0,1
2 若,则
3 对于中的每个非零数,有
那么称是一个数域
方程组(3)的所有系数和常数项都要属于某个数域。
接下来我们要证明我们概括出来的初等变换可以帮助我们解方程组,即初等变换后的方程组与原方程同解。
先考虑原方程组有解的情况,设(3)的一个解是
对(3)式和(4)式使用初等变换1得到(3')和(4'),因为初等变换的过程只有系数和常数项有关,所以(3')和(4')只有和的区别,也就是说,对于(3')这个变换后的方程组,把
代入后依然得到了一组恒等式(4'),仔细想想,这不就是在告诉我们
是(3')的解。也就是说,
既是(3)也是(3')的解。即,初等变换后的方程组与原方程组同解。
再考虑原方程组没有解的情况,用反证法。如果不同解,那么变换后的方程组有解,把它代入后用初等变化反变回原方程组(比如原来×3,现在就÷3),很显然这依然经历了一组初等变换,根据刚才得到的初等变换前后的方程同解,原方程组也有解了,这与假设矛盾,所以变换后的方程组只能没有解。即,这种情况下初等变换后的方程组与原方程组同解。
刚才我们说到,解方程组的过程只对系数和常数做了运算,所以为了简单起见,我们把(3)的系数和常数项单拿出来写成一张表
称为线性方程组(3)的增广矩阵。
这样,线性方程组的初等变换就变成了矩阵的初等行变换。
1 把一行的倍数加到另一行上
2 互换两行的位置
3 用一个非零数乘以某一行
同样我们还能得到矩阵的初等列变换
1 把一列的倍数加到另一列上
2 互换两列的位置
3 用一个非零数乘以某一列
这样,我们要解方程组只需要对它的增广矩阵作初等行变换就可以了。
为了方便以后的研究,我们引入一些概念(简单浏览一下,有个印象就行)。
首先,我们把个数排成的行、列的一张表
称为一个矩阵,其中个数称为该矩阵的元素。
另外,矩阵的第行与第列交叉位置的元素称为的元,记作。
还有,元素全为0的矩阵称为零矩阵;行数和列数相等的矩阵叫做方阵。
最后,我们把行数,列数都相等,且对应位置的元素相等的矩阵看作是相同的。
接下来引入本文的重要角色,阶梯形矩阵。它满足:
(1)的零行(即元素全为零的行,如果有的话)在下方。
(2) 的每个非零行的第一个不为零的元素称为的主元,主元的列指标(即在第几列)随着行指标(即在第几行)的递增而严格增大。(主元呈阶梯形)
例如
但是它不是方程组的解的形式,所以我们还要引入一个更特殊的矩阵,满足:
(1) 是阶梯形矩阵
(2)的主元都是1
(3) 的每个主元所在的列的其余元素都是0
例如
这时称是简化行阶梯形矩阵。
别晕,概念虽然多,但都是为了简化解方程组的过程。现在,我们可以把之前复杂的解方程组的过程简化为努力利用初等行变换把方程组的增广矩阵化为简化行阶梯形矩阵的过程,这便是大名鼎鼎的高斯(Gauss)消元法。但是,我们还要发问,高斯消元法可以解所有方程组吗?换言之,任一矩阵都可以经过一系列初等行变换化成简化行阶梯形矩阵吗?(接下来的证明可以跳过,不影响接下来的阅读。)
首先证明任一矩阵都可以经过一系列初等行变换化成阶梯形矩阵。
首先,零矩阵符合阶梯形矩阵的定义,不需要变换。
下面考虑非零矩阵,对矩阵的行数用数学归纳法。
当时,该非零矩阵符合阶梯形矩阵的定义。
假设行的非零矩阵都能经过初等行变换化成阶梯形矩阵,现在来看行的情况。首先划掉所有元素全为零的列。然后通过初等行变换2使这第一列的第一行不为零,然后用初等行变换1使这列除了第一行的元素不为零以外全部为零。这样我们得到了如下矩阵
接着划去第一行和第一列,得到一个行的矩阵,根据归纳假设,这个行的矩阵一定可以化成阶梯形矩阵。再把刚才划掉的部分添回来,把所有元素全为零的列添到矩阵的最前端。得到一个行的阶梯形矩阵
(当然,这个矩阵最左面的三列表示的便是那些元素全为零的列,你在学习的时候可以选择性忽略,我加上它只是为了严谨)
据数学归纳法原理,对于一切的正整数,行的非零矩阵一定可以化成阶梯形矩阵。
接下来证明任一阶梯形矩阵都可以经过一系列初等行变换化成简化行阶梯形矩阵。
首先,零矩阵是简化行阶梯形矩阵。
下面对非零矩阵的行数作数学归纳法。
时,矩阵就是简化行阶梯形矩阵。
假设行的非零阶梯形矩阵可以经过一系列初等行变换化成简化行阶梯形矩阵。现在来看行的情况。首先用初等行变换3把阶梯形矩阵的主元变成1,然后用初等行变换1把除第一行的主元外所有主元所在列与第一行交叉位置的元素变成0.然后划去第一行和第一行主元所在列及之前的列,得到一个行的阶梯形矩阵,根据归纳假设,这个行阶梯形矩阵可化成简化行阶梯形矩阵。然后把之前划去的元素添回来。得到一个行简化行阶梯形矩阵。
根据数学归纳法原理,对于任意正整数,行的非零阶梯形矩阵都可以经过一系列初等行变换化成简化行阶梯形矩阵。
综上所述,任一矩阵都可以经过一系列初等行变换化成简化行阶梯形矩阵。即高斯消元法一定可以解所有方程。
Part2元线性方程组解的情况及其判定
二元线性方程组告诉我们,方程组不一定有解。接下来我们就来看看,到底什么情况下元线性方程组一定有解。
元线性方程组解的情况
这个问题比较大,我们一层一层的来解决它。
之前我们举了一个方程组有解的例子,那么,是不是所有方程组都一定有解呢?显然不是,随便举个例子,如果一个方程组里有这样一个方程,那么这个方程组一定是无解的,因为我们找不到一个满足上述方程的值。
把上述方程写成增广矩阵应该是一个除了最后一个元素不为零,其他元素都是零的矩阵。也就是说,如果方程组的增广矩阵化成的简化行阶梯形矩阵有
(其中)这样一行,那么方程组一定无解,因为我们找不到任何一组数满足这一行。
现在来看中没有
(其中)这样一行的情况。假设有个非零行,个未知元,根据增广矩阵的定义显然它有列(每个未知元一列,常数项一列)。现在来看方程组的第行,由于没有
若,那么有个主元,而且的第个主元不在第列,因此的个主元分别在第1,2,,列。从而必形如
所以,线性方程组有唯一解
若,可以写成如下形式
这个矩阵有点复杂,我先来解释一下。首先,这是一个简化行阶梯形矩阵,它的主元系数全为1,是它的非主元的未知元的系数。接下来我们来解释一下的下角标的含义,下角标分为三部分,第一部分代表所在的行数(其实最后一列的的下角标也是这个意思);第二部分代表它是处于哪个主元到下一个主元之间的非主元的未知元的系数;第三部分是第二部分的补充,为了区分同在某两个主元之间的非主元的未知元的系数。最后3行代表的是矩阵的所有零行。
当然,即使你没看懂上一段也无妨,你只需要知道这是一个简化行阶梯形矩阵,它的主元系数全为1,是它的非主元的未知元的系数,而下角标只是为了告诉你们它们不一定相等而已。
看懂了这个矩阵,我们来分析它的解的情况。注意到主元只在某一行出现,我们把矩阵变换回方程组,并把主元单独放在等号的一侧,就得到
为了方便交流,我引入两个名词,等号右边的叫做自由未知量,等号左边的叫做主变量,不难看出,自由未知量每取一组值,自变量都能对应一组值,把它们合到一起就是原方程组的一个解,综上,这种情况下的方程组有无穷多解。
综上,我们通过“二分法”讨论了所有情况的方程组,发现方程组的解的情况有且只有三种,当增广矩阵化为的简化行阶梯形矩阵出现
最后强调一点,讨论简化行阶梯形矩阵是因为一般的增广矩阵化为简化行阶梯形矩阵之后可能出现
知道了线性方程组解的情况,我们来考虑能否找到一个方法,不用解方程就可以判定它解的情况。
二阶行列式
古语有云,麻雀虽小,五脏俱全。我们首先来看二元线性方程组的情况。
考虑线性方程组
其中,不全为零
用Gauss消元法解方程。首先把原方程的增广矩阵化成
不难看出,时,方程组有唯一解;时,方程组无解或有无穷多解。
总之,或者说是否为0决定了方程组是否有唯一解。而且,这个式子是由方程组的系数决定的,那我们不妨仿照系数矩阵的写法,把这个表达式记为
称为方程组的行列式。
这样,我们只需要找到二阶行列式的展开方法,然后推广到阶,虽然说阶行列式是否为能符合我们的期待还有待证明,但是我们至少知道了一条道路,至于通不通我们再走走看。
先来看二阶行列式是怎么展开的。
首先,展开式有两项。再来看角标,第一项的角标是11,22;第二项是12,21。另外,第一项的符号为正,第二项为负。
整个二阶行列式的展开是被这三个条件限制的,所以我们只要找到阶行列式的这三个条件,就可以写出阶行列式的展开式了。
项数你可能会猜几阶行列式就有几项,可以,没什么问题。接下来看看角标,仔细观察会发现,每一项的角标的第一个数都是1、2,区别在第二个数,第一项是1、2,第二项是2、1,也就是排列顺序不一样。这样,我们发现了一个漏洞,就是我们对项数的猜想有问题,项数应该是角标的全排列的个数,即项。至于符号,我们发现,当角标第二项正着排时,符号为正;反着排时符号为负。所以我们猜想当一串数有奇数对反着排的数对时,符号为负,反之为正。
阶行列式
总结一下,我们从二阶行列式猜测出的阶行列式的展开的规则是
1 有项
2 每一项的行指标(角标的第一个数)呈自然序,列指标(角标的第二个数)是元排列(1~的全排列)中的一个。
3 元排列的逆序数(反着排的数对的个数,记作)是奇数时,符号为负(奇排列),反之为正(偶排列)。
写成数学表达式是
很复杂对吧,不过没关系,这个数学表达式意义不大,当你真的需要展开一个行列式时,你的思路应该是利用之前小方框里的方法,然后根据下角标找到对应的数参与运算便可以了。
为了引出下面的内容,我换一种说法描述小方框里的方法。首先确定是项数,项,对吧。这项每项都有个数相乘,那么这个数怎么找呢?首先你要保证每行只挑一个,然后还要保证每列只挑一个。这怎么办呢?我们先从第一行挑起,第一行自然可以随便挑,有种,然后我们挑第二行,这时我们只要小心不在第一行挑过那列挑就可以了,有种挑法,依次类推。按理说,挑到第行时应该只剩一个可供选择的位置了。而且这种挑法一共有种,正好是对应项。最后确定符号,把你挑的元素的列指标排成一列,是奇排列的加一个负号,反之加一个正号。
你可能已经注意到了,保证每行只挑一个,每列只挑一个,还可以从列挑起,就是从第一列开始,每列挑的元素在不同行就可以了。写成式子就是
其实还有一种既不按行也不按列的混排法,不太实用,这里就不讲了。
行列式的性质
从刚才的例子展开方式就可以看出,按列展开和按行展开有很大相似性。所以,如果我们对行列式进行如下操作(叫做转置)
如果我们对第一个行列式按行指标成自然序展开(按行挑),第二个行列式按列列指标成自然序展开(按列挑),结果是一样的,因为我们进行的操作就是把原来的行指标当成列指标。也就是说,行列式转置前后数值相等。这个性质可是非常重要,它意味这转置前后的行列式我们只需要研究一个就可以了。
如此看来,研究行列式的性质可以减少计算行列式的过程,那我们何不再找一些性质来进一步简化计算。
还记得我们研究行列式的性质的目的是什么吗?为了研究方程组解的情况。那么我们应该研究一下用来解方程的初等行变换作用到行列式上会发生什么。
先把行列式的第行乘一个常数
按定义展开(看不懂公式的跳转到文字叙述部分)
提出公因数,得
即
用非公式语言来说就是,由于行列式展开需要保证每一项中的个元素分别取自不同行,所以每一项有且仅有一个行的元素,即每一项都有且仅有一个因子,把它提出来就得到了乘原行列式。
如果我们把行列式的两行互换
这里直接文字叙述。首先,两个行列式展开都有项,且这些项是对应相等的,所以我们只需要看符号的变化就可以了。先来看原行列式展开式中的一项,我们从第一列挑起,一直挑到第列,我们假设,在挑到第列时我们挑的是第行的元素,在挑到第列时我们挑的是第行的元素。
接下来看变换后的行列式,我们需要找出与刚才那项相同的项。从第一列挑起,不过挑到第 列时,我们要找到元素变成了第行的元素;第列时同理。这样就导致了这项的行指标的排序和原来不同。那么是哪里不同呢?是和换了位置。
接下来我们探究一下,一串数中的两个互换位置会对逆序数产生什么影响。先看两个数相邻的情况
这种操作记为。这种情况下,不管前面的数还是后面的数,与和与构成的逆序都没有变,只一数对会由顺序变为逆序或逆序变为顺序,所以逆序数会加一或减一。
然后我们来看一般的情况
这个过程需要经过
共次相邻的对换,逆序数也会加上或减去一个奇数。
综上,对换会导致逆序数加上或减去一个奇数。带到行列式里,这样会导致这项符号改变。而行列式展开的所有项都会有这样的问题,合起来就是两行互换,行列式值变为原来的相反数。
那么我们很容易想到一种情形,如果行列式有两行相同,那么我们对换这两行。就会得到变换前和变换后的行列式互为相反数。另外,变换前后的行列式是相同的。也就是说,这个行列式的值等于它的相反数,这样的数只有0。总结一下,有两行相同的行列式的值等于0。
结合之前的性质,不难证明如果一个行列式有一行是另一行的常数倍,那么这个行列式等于0。
接下来看最后一种初等行变换,把一行的倍数加到另一行。
为了研究这种情况,我们首先要知道
等于什么。
先用公式证明(看不懂的去后面看文字叙述)
这里我假定在第行
接下来是文字叙述的证明。由于行列式展开时要保证每行取而且只取一个,所以每一项都会有一个第行的元素,根据乘法分配律,可以把每一项都展开,然后含的放一起,含的放一起,可以想象,这正是我们刚才用公式推导出的两个行列式。
现在我们来解决之前提出的问题
用我们之前证过的性质可以推出,行列式值不变。
对行列式应用初等行变换会发生什么你已经知道了,不过不要忘了最开始我们的性质,对我们得到的性质求转置,我们得到对行成立的性质对列也成立。
克拉默(Cramer)法则
准备工作做完了,我们来探究一下元线性方程组的解的情况是不是真的和阶行列式有关。
首先考虑数域上的元线性方程组
把它的增广矩阵记为,系数矩阵(增广矩阵去掉最后一列)记为,增广矩阵化为简化行阶梯形矩阵记为,对应的系数矩阵记为。它们对应的行列式就是在矩阵边上加两道小竖线。
我们之前讨论过线性方程组解的三种情况和对应的增广矩阵化为简化行阶梯形矩阵的情况,现在我们以此为基础进行讨论。
如果线性方程组有唯一解,那么
所以
展开这个行列式,首先在第一行取一个,因为只要有一个乘数为零积就为零,所以第一行只有取第一个数才能使这项不为零。同样的第二行只能取第二个数。最后第行只能取第个数。判断一下符号,为正,所以行列式值等于1。
根据行列式的性质,对行列式做初等行变换只会使行列式的值变成常数倍。所以如果一个线性方程组有唯一解,那么它系数矩阵的行列式不等于零。
考虑另外两种情形,方程组无解,那么有行,所以有行。那么我们在展开时,每一项都要取这一行的元素,所以行列式值等于0。
方程组有无穷多解,方程数少于未知元数。我们需要用不影响解的零行把系数矩阵填成方阵。这样行列式有零行,值等于0。
所以行列式值等于零,方程组无解或有无穷多解。
综上,方程组有唯一解当且仅当方程组的系数矩阵的行列式值不为0。这就是克拉默法则。
Part3再探行列式
你以为行列式的内容结束了吗?当然不可能,行列式还有很多我们没有发现的美丽性质等着我们去挖掘。
行列式按一行(列)展开
观察行列式的展开过程就会发现,如果我们在第一行取一个元素,那么剩下的元素只能在划掉这个元素所在的行和列剩下的个元素中取,而且取法就是行列式的取法。于是,我们猜测,行列式可不可以写成元素和行列式乘积的和的形式。进一步的,想要凑齐行列式展开的所有项,必须是某一行的个元素分别乘上除了自己所在行和列的其他所有元素组成的新行列式。我们把除了自己所在行和列的其他所有元素组成的新行列式叫做该元素的余子式。
想法有了,我们来实操一下。我们把一个阶行列式按第行展开,第一项应该是
接下来判断一下这一项的符号,也就是我们要知道余子式每项的符号和这些项正常展开时的区别。想一想我们正常展开行列式时,符号是怎么判定的,当行指标呈自然序时求列指标序列的逆序数。我们先把的余子式按行指标呈自然序展开,求整个单项式列指标的逆序数。由于在最前面,所以列指标序列的逆序数相比于余子式没有变(毕竟1最小,放在前面和谁也不构成逆序),但是行指标不是自然序,想要行指标变成自然序,就要把第一个数对换成第个数。
这需要经过次对换(对换到1后面需要一次,类比可知对换到后面需要次)。同时,列指标也对换了次,这意味着正常展开时的符号是余子式符号变换次的结果。写成数学公式的完整形式是
OK,接下来我们研究一般的情况。行列式按一行展开的第项是
接下来判定一下符号。先打开的余子式,由于在最前面,所以这时列指标构成序列的逆序数是在余子式的逆序数上增加(因为有个数比小)。接下来把行指标变成自然序,需要对换次,这样列指标就对换了次。总之逆序数相比于余子式改变了。另外,所以第项的完整形式是
这时第一项的符号应该是,好像与我们之前讨论的特殊情况不太一样,但你仔细想想,这其实是相等的。
综上,行列式按一行展开的公式应该是(不喜欢看公式可以跳过,不影响阅读)
其中
叫做的代数余子式。
应用行列式转置的性质,不难得出行列式按一列展开的公式。
克拉默公式
还记得我们解过的二元线性方程组吗
用Gauss消元法解方程。得到
所以我们猜测,元线性方程组的唯一解是,其中是系数矩阵,是把系数矩阵第列替换成增广矩阵的最后一列的系数矩阵。
这里需要补充一个定理。行列式按一行展开时是某一行元素乘对应的代数余子式。如果我们不乘对应的会怎么样呢?
考虑一个行列式
我们用第行的元素乘第行的代数余子式。这样就和
的展开式一样了(可以自己试试)。而这个行列式值等于0,所以行列式某一行的元素乘另外一行的元素的代数余子式的和等于0。对列也有同样的性质。
回归主题,把我们猜的解代入方程组
提公因式得到
把按第列(之前我们替换掉那列)展开
这里的代表的是代数余子式(区分于行列式,所以没加竖线),角标代表是哪个元素的代数余子式。
打开后重新提取公因式
这时,注意到从里面的括号里的是第行的元素乘各行的代数余子式,因为只有乘第行的代数余子式才不等于0.所以从外面的括号里的变成了
所以
得证。
行列式还有很多应用,比如求三棱柱的体积,等等。这里不详述了。
拉普拉斯(Laplace)定理
之前我们把行列式的一行单独提出来,这次我们考虑能不能把行列式的行提出来。
例如,我们先看行列式的第这行。从第行开始取,有种取法;第行有种取法;一直到第行,有种取法,一共种取法。这里包括了个列的组合和每个列的组合中的种取法。这时你应该能看出来,种种取法就对应了一个阶行列式,这个阶行列式我们把它叫做阶子式。
接下来考虑在剩下的行中取,我们把这行命名为第行。首先,当我们取定一个阶子式后,子式占用的行和列就不能再取元素了,这样我们只剩下了个元素可以取。另外,在这个元素的取法也和行列式一样。我们把这个行列式叫做阶子式的余子式。
这样,阶子式和余子式就把1~行和1~列取遍了,所以行列式的展开应该具有阶子式和余子式相乘的形式。
接下来就是判断符号,我们先任取一个阶子式和它的余子式相乘
我们先把两个行列式分别按行指标成自然序展开,并任取一项进行研究
~是~的一种排列方式,~是~的一种排列方式。
现在他的符号是
我们要看看它和正常展开时,即行指标成自然序时列指标的逆序数差了多少,即
中的(是行列式正常展开的符号,即行指标成自然序时列指标的逆序数)
可以通过对换来实现(类比行列式按一行展开)。但是对换是针对一个序列进行的,所以对换之前,我们要把两个序列合并。
把和合并为,这时逆序数增加了在中比小的部分,由于是的一种排列方式,所以我们可以看中比小的部分。中比小的有个(因为1~都在中)。中比小的有个(因为1~只有不在中)。同理,中比小的有个。
所以合并使逆序数改变了
化简得到。
所以我们要求的变成了。现在来求
接下来把阶子式和余子式的乘积的展开式的行指标变成自然序。即
这里会比较烧脑,读者不妨拿起笔和纸和我一起操作。
首先回忆一下,和是把抽出行后得到的,也就是说,和是两组从小到大排列的序列。
所以,把移到(中的一个数)后面需要先跨过(对换了次),然后再对换次到后面。以此类推,把对换到目标位置需要先对换次,再对换次。最后,把对换到后面需要对换次。一共对换了
同时列指标也对换了次。
综上,我们得到在子式和余子式相乘的结果的符号先变化
次,再变化
次便可得到了该项实际上的符号。
相加并化简得到
略去不影响系数的便得到行列式按行展开的一项的完整形式应该是
另外,我们可以把阶子式记为
是原行列式的符号(没有竖线),括号里是子式在原行列式的行指标和列指标。
所以行列式按行展开的公式就是
如果你看不懂公式,他的文字叙述就是在行列式中任取行,这个行列式的值等于它的所有由这行生成的阶子式和它的代数余子式(带符号的余子式)乘积之和。这就是拉普拉斯定理。
应用转置的性质,还可以得到行列式按列展开的公式。