前言
之前的课程我们一直在强调,矩阵是线性方程组抽象的来的。那么既然我们抽象出来了,有没有一种比较好的办法高效的来求解这个线性方程组?不然抽象出来也没什么意义。那么这个时候,我们就引入了「克拉默法则」。 克拉默法则是一种用于求解线性方程组的方法,特别适用于方程组的系数矩阵是可逆的情况。它允许我们通过计算矩阵的行列式和一系列辅助矩阵的行列式来找到方程组的解。
Hi,大家好。我是茶桁。
上节课我们在最后提到了一个概念「克拉默法则」,本节课,我们就来看看到底什么是克拉默法则。
克拉默法则之前的课程我们一直在强调,矩阵是线性方程组抽象的来的。那么既然我们抽象出来了,有没有一种比较好的办法高效的来求解这个线性方程组?不然抽象出来也没什么意义。那么这个时候,我们就引入了「克拉默法则」。
克拉默法则是一种用于求解线性方程组的方法,特别适用于方程组的系数矩阵是可逆的情况。它允许我们通过计算矩阵的行列式和一系列辅助矩阵的行列式来找到方程组的解。
那我们前面的课程讲过,一个线性方程组可以表示成这样:
其中,A是系数矩阵,x是未知量向量,b是常数向量:
它的计算时先用第一行的系数{a1, b1, c1, d1}分别去乘以向量x里的列项,就会是a1乘以x1, b1乘以x2, c1乘以x3, d1乘以x4 , 然后加在一起得到了e1。下面的行也依次这么计算,得到e2,e3,e4。
我们来考虑一个包含n个线性方程和n个未知数的线性方程组:
其中, 是系数矩阵的元素,xi是未知数,bi是右侧的常数项。
我们先要计算技术矩阵A的行列式|A|。
系数矩阵A是一个nxn的矩阵,其元素为aij,行列式的计算可以使用一下公式:
这个式子我们在之前讲N阶行列式的时候有讲过。其中Mij是剔除第i行和第j列后的子矩阵的行列式。也就是说, Mij是一个(n-1)x(n-1)的矩阵。
接着我们就需要创建辅助矩阵。我们需要创建n个辅助矩阵A1,A2,..., An, 这些矩阵是讲系数矩阵A列中的每一列替换成常数项矩阵[b1,b2,..., bn]后得到的矩阵。
得到以上这个矩阵之后,就需要来计算辅助矩阵的行列式|A1|, |A2|,..., |An|。
下来,计算这些辅助矩阵的行列式。你可以使用相同的方法,即对每个辅助矩阵Ai,使用与步骤1中相似的公式计算行列式。
在接下来我们就可以计算未知数的值,通过以下公式计算:
这些值就是线性方程组的解。
需要注意的是,克拉默法则要求系数矩阵A的行列式|A|不等于零,否则无法使用克拉默法则来求解线性方程组。如果|A| = 0, 则克拉默法则无法应用,因为这意味着线性方程组可能没有唯一解或没有解。此外,克拉默法则在实际计算中可能不如其他方法高效,因此对于大规模的方程组,通常会使用其他数值方法来求解。
我们变换以下上方的式子,写成,在这个式子中,|Ai|就是把|A|中第i列元素换成常数向量,而其余各列保持不变的到的。
比如我们说x1, 那我们就是将|A|的第一列,也就是{a1,a2,a3,a4}给它换成常数向量,就变成{e1,e2,e3,e4},其余的部分保持不变。
那我们现在就需要计算新组合成的矩阵的值:
同理x2,x3,x4也是样子去得到的。
克拉莫法则就是告诉我们直接x1,x2,x3怎么求,就是把系数矩阵的行列式值求出来然后再构造这么一个矩阵,要求第几个未知量就把第几列系数矩阵里面第几列给它替换成b,然后再算它行列式的值就可以了。
克拉默法则有一些相关性质需要记住,
第一是我们之前提到的,当系数行列式不等于0时,方程组有唯一解,当然这一条并不是绝对的。当方程组是线性无关的,即方程组中的方程不可以通过线性组合得到其他方程。如果不满足这个条件,即方程组中的方程之间存在线性相关性,那么即使|A|不等于零,克拉默法则也无法确保方程组有唯一解。
我们说回不等于0时方程组有唯一解,a的行列式的值出现在分母上的,你不等于0的话分式的值是唯一的,不会变的只有唯一的一个情况。但是如果等于0的话那就说不清了,有可能无解,也有可能有很多个解。
对于奇次线性方程组,其有非零解的充要条件为其系数行列式为0,其仅有零解的充要条件为其系数行列式不为0。 零解就是各个解x1,x2,x3,x全部为0叫做零解。
还有一点就是,当方程组中方程的个数与未知量的个数不同时,抑或系数行列式为0时,克拉默法则失效。
我们来看一个实际的例子,还是鸡兔同笼的问题,我们就用克拉默法则求解及图同笼问题,看一下克拉默法则如何解决实际问题。
鸡和兔子同笼,一共有35个头和94只脚,问鸡和兔子各多少只。
先把方程组列出来:
这样,我们就将系数矩阵,未知量以及常数量分别抽象出来。接着我们来尝试进行计算:
那我们现在就得到了,23只鸡,12只兔子。
现在我们得出的结果和消元法得到的结果是一样的,所以克拉默法则给我们用行列式的方法求解线性方程组提供了一个新的思路。
矩阵运算在看完克拉默法则之后,咱们再来看看关于矩阵运算的内容。其实我们在导论课里面有提到,因为它是非常基础的内容,所以我们这里再给大家回顾一下,矩阵的加减法非常简单。
矩阵的加减法必须两个矩阵是同等大小的,行数和列数都必须相同,才能去做加减法运算。其运算是在对应位置上的元素去做运算,也就是左上角和左上角运算,右下角和右下角运算。那n行m列,就必须和n行m列进行运算。如下:
这两个运算非常简单,也非常容易理解,我就不多说了,大家看一下就行。
然后就是矩阵的另外两种运算,一个标量乘法,一个向量乘法。
矩阵的「标量」乘法就是拿一个常数和矩阵去乘:
「向量」乘法,是非常重要的一个乘法。我们在神经网络里面无论是前向传播还是反向传播的时候,向量乘法都是大量使用的。不然上一层的值没办法传到下一层,这些看似简单东西,构起了整个知识体系的一个基石。
向量乘法要求第一个矩阵的列数和第二个矩阵的行数必须相等。如果第一个矩阵是两列,这第二个矩阵必须是两行。基于这样一个要求,我相信小伙伴们也猜出来了,它就是拿行去乘以列的一个运算。第一个矩阵的元素一行一行的取出来,第二个矩阵的元素以列一列的取出来,然后进行乘积:
那这个是一个2x2的行列式进行乘积,如果是一个4x3的矩阵和一个3x5的矩阵做一个向量乘法,会得到几行几列呢?答案是4x5。
那以上就是我们本节课的内容,相对来说,这节课算是比较简单的。大家要好好去巩固一下自己还不太熟悉的部分,因为下一节课,张么要进入神经网络了。咱们一起来看看「神经网络中的矩阵/向量」。并在此基础之上,再好好讨论一下矩阵的性质。
更多内容,请查看:-