矩阵可逆与行列式关系的一个直观推导
文章目录
- 一、前言
- 二、矩阵行变换得到上三角阵
一、前言
最近一边复习Docker,一边就继续复习和学习线性代数。当然我也想将D3D12系列教程要继续下去,而目前这个系列的教程要继续深入下去,就必须进入以Shader为核心的主题,此时我发现数学其实将成为真正的核心,因为在Shader的编程中基本都是向量、矩阵、颜色等等的计算与变换了。思前想后,干脆先换个话题,将3D数学好好的做一系列教程出来,作为深入Shader编程教程的前置教程。接着我又发现如果只是讲解纯粹的3D数学,并且只是浅尝辄止的类似一般的3D数学的教程的话,要彻底驾驭Shader编程也还是远远不够,这甚至需要深入掌握诸如微积分、线性代数、傅里叶变换、频谱、随机数生成等等系列的数学知识才有可能彻底掌握Shader的编程。其中尤其是线性代数更是核心中的核心。
基于这样的认知,干脆我就大规模的复习和学习起数学来,并且先以线性代数作为突破口。这篇教程其实是作为一个热身教程推出来,或者也还算不上教程,严格来讲只是一篇学习笔记而已。
OK,下面就言归正传,开始看一下为什么说判断一个矩阵是否可逆,通过计算它的行列式是否为0就可以了。当然计算行列式的方法以及计算矩阵的逆矩阵的方法也有很多,证明二者同时成立的关系也有很多,其中主要的就是通过计算代数余子式,以及伴随矩阵的方法。通过这个计算过程,对矩阵的伴随矩阵乘以一个矩阵行列式的倒数就得到了矩阵的逆矩阵,这个方法仅仅是在理论上推导出了一个计算逆矩阵的方法,同时也证明了只有矩阵行列式不为0时才可能取其倒数最终计算矩阵的逆矩阵,也就是当矩阵的行列式不为0时,矩阵的逆才存在。实际的计算中,其实没法利用这个方法,一来计算量太大,光计算一个矩阵的行列式值就已经很耗时了,二来这个方法要计算大量的代数余子式,并且其过程很不直观,一般也是很不容易理解的。当然这也是很多线性代数教科书上的标准内容,但我认为以这样的基础来理解矩阵行列式不为0即可求逆的原理来说,是非常困难的。
在我复习《线性代数及其应用》这本经典教程的过程中,我发现书中给了一个比较直观的说明,也比较容易理解。当然书中并没有基于此给出复杂的证明,只是一个简单的说明,同时也是用了比较小规模的3X3形式的矩阵来做了例证说明而已,并且其过程及其简化,对于喜欢刨根问底的我来说,此时就是自己动手把书上略去的演算过程全部推导一遍。这篇博客就把整个过程详实的推导,记录并分享给大家。这里要提醒各位的是这个不是严格意义上的数学证明,只是一个以一般的3X3矩阵作为例子的演算推导过程,但是它对于我们理解为什么矩阵行列式不为0可求逆的原因有了一个不同角度的认识。
二、矩阵行变换得到上三角阵
对于一个一般的3X3矩阵:
[a11a12a13a21a22a23a31a32a33]\begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{bmatrix} ⎣⎡a11a21a31a12a22a32a13a23a33⎦⎤
做行变换,以便得到上三角阵,首先对上述矩阵的第二行和第三行乘以一个合适的因子a11a_{11}a11之后再减去各自对应的倍数后,可以使第二行和第三行的第一列元素变为0,其中第二行乘以a21a_{21}a21,第三行乘以a31a_{31}a31,过程如下:
⇒[a11a12a13a11∗a21a11∗a22a11∗a23a11∗a31a11∗a32a11∗a33]−[000a21∗a11a21∗a12a21∗a13a31∗a11a31∗a12a31∗a13]⇒[a11a12a130a11∗a22−a21∗a12a11∗a23−a21∗a130a11∗a32−a31∗a12a11∗a33−a31∗a13]\Rightarrow \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ a_{11} * a_{21} & a_{11} * a_{22} & a_{11} * a_{23} \\ a_{11} * a_{31} & a_{11} * a_{32} & a_{11} * a_{33} \end{bmatrix} - \begin{bmatrix} 0 & 0 & 0 \\ a_{21} * a_{11} & a_{21} * a_{12} & a_{21} * a_{13} \\ a_{31} * a_{11} & a_{31} * a_{12} & a_{31} * a_{13} \end{bmatrix} \\[2ex] \Rightarrow \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ 0 & a_{11} * a_{22} - a_{21} * a_{12} & a_{11} * a_{23} - a_{21} * a_{13} \\ 0 & a_{11} * a_{32} - a_{31} * a_{12} & a_{11} * a_{33} - a_{31} * a_{13} \end{bmatrix} ⇒⎣⎡a11a11∗a21a11∗a31a12a11∗a22a11∗a32a13a11∗a23a11∗a33⎦⎤−⎣⎡0a21∗a11a31∗a110a21∗a12a31∗a120a21∗a13a31∗a13⎦⎤⇒⎣⎡a1100a12a11∗a22−a21∗a12a11∗a32−a31∗a12a13a11∗a23−a21∗a13a11∗a33−a31∗a13⎦⎤
接着用同样的方法,想办法继续消去第三行中第二列的元素,使其为0,也就是继续对第三行先乘以第二行第二列a11∗a22−a21∗a12a_{11} * a_{22} - a_{21} * a_{12}a11∗a22−a21∗a12之后再减去第三行乘以第三行第二列的元素a11∗a32−a31∗a12a_{11} * a_{32} - a_{31} * a_{12}a11∗a32−a31∗a12,过程如下:
⇒[a11a12a130(a11∗a22−a21∗a12)(a11∗a23−a21∗a13)0(a11∗a22−a21∗a12)∗(a11∗a32−a31∗a12)(a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13)][0000000(a11∗a32−a31∗a12)∗(a11∗a22−a21∗a12)(a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13)]\Rightarrow \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ 0 & (a_{11} * a_{22} - a_{21} * a_{12}) & (a_{11} * a_{23} - a_{21} * a_{13}) \\ 0 & (a_{11} * a_{22} - a_{21} * a_{12}) * (a_{11} * a_{32} - a_{31} * a_{12}) & (a_{11} * a_{22} - a_{21} * a_{12}) * (a_{11}* a_{33} - a_{31}* a_{13}) \end{bmatrix} \\[2ex] \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & (a_{11}* a_{32} - a_{31}* a_{12}) * (a_{11}* a_{22} - a_{21}* a_{12}) & (a_{11}* a_{32} - a_{31}* a_{12}) * (a_{11} * a_{23} - a_{21} * a_{13}) \end{bmatrix} ⇒⎣⎡a1100a12(a11∗a22−a21∗a12)(a11∗a22−a21∗a12)∗(a11∗a32−a31∗a12)a13(a11∗a23−a21∗a13)(a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13)⎦⎤⎣⎡00000(a11∗a32−a31∗a12)∗(a11∗a22−a21∗a12)00(a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13)⎦⎤
这样就得到了与原矩阵等价的如下的上三角阵:(注意上面我们进行的是行初等变换,所以两个矩阵等价)
⇒[a11a12a130(a11∗a22−a21∗a12)(a11∗a23−a21∗a13)00((a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13))−((a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13))]\\ \Rightarrow \begin{bmatrix} a_{11} & a_{12} & a_{13} \\ 0 & (a_{11} * a_{22} - a_{21} * a_{12}) & (a_{11} * a_{23} - a_{21} * a_{13}) \\ 0 & 0 & ((a_{11} * a_{22} - a_{21} * a_{12}) * (a_{11}* a_{33} - a_{31}* a_{13})) \\ & & - ( (a_{11}* a_{32} - a_{31}* a_{12}) * (a_{11} * a_{23} - a_{21} * a_{13}) ) \end{bmatrix} ⇒⎣⎢⎢⎡a1100a12(a11∗a22−a21∗a12)0a13(a11∗a23−a21∗a13)((a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13))−((a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13))⎦⎥⎥⎤
其中矩阵主对角线上最后一个元素可以进一步做如下的展开计算:
⇒((a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13))−((a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13))⇒(a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33+a21∗a12∗a31∗a13)−(a11∗a32∗a11∗a23−a11∗a32∗a21∗a13−a31∗a12∗a11∗a23+a31∗a12∗a21∗a13)⇒a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33+a21∗a12∗a31∗a13−a11∗a32∗a11∗a23+a11∗a32∗a21∗a13+a31∗a12∗a11∗a23−a31∗a12∗a21∗a13⇒a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33−a11∗a32∗a11∗a23+a11∗a32∗a21∗a13+a31∗a12∗a11∗a23⇒a11∗(a11∗a22∗a33−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32+a13∗a21∗a32+a12∗a23∗a31)⇒a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)\Rightarrow ((a_{11} * a_{22} - a_{21} * a_{12}) * (a_{11}* a_{33} - a_{31}* a_{13})) \\- ( (a_{11}* a_{32} - a_{31}* a_{12}) * (a_{11} * a_{23} - a_{21} * a_{13}) ) \\[2ex] \Rightarrow (a_{11} * a_{22} * a_{11} * a_{33} - a_{11} * a_{22} * a_{31}* a_{13} - a_{21} * a_{12} * a_{11} * a_{33} + a_{21} * a_{12} * a_{31}* a_{13} )\\ -(a_{11}* a_{32} * a_{11} * a_{23} - a_{11}* a_{32} * a_{21} * a_{13} - a_{31}* a_{12} * a_{11} * a_{23} + a_{31}* a_{12} * a_{21} * a_{13} ) \\[2ex] \Rightarrow a_{11} * a_{22} * a_{11} * a_{33} - a_{11} * a_{22} * a_{31}* a_{13} - a_{21} * a_{12} * a_{11} * a_{33} + a_{21} * a_{12} * a_{31}* a_{13} \\- a_{11}* a_{32} * a_{11} * a_{23} + a_{11}* a_{32} * a_{21} * a_{13} + a_{31}* a_{12} * a_{11} * a_{23} - a_{31}* a_{12} * a_{21} * a_{13} \\[2ex] \Rightarrow a_{11} * a_{22} * a_{11} * a_{33} - a_{11} * a_{22} * a_{31}* a_{13} - a_{21} * a_{12} * a_{11} * a_{33} \\- a_{11}* a_{32} * a_{11} * a_{23} + a_{11}* a_{32} * a_{21} * a_{13} + a_{31} * a_{12} * a_{11} * a_{23} \\[2ex] \Rightarrow a_{11} * (a_{11} * a_{22} * a_{33} - a_{13} * a_{22} * a_{31} - a_{12} * a_{21} * a_{33} \\- a_{11} * a_{23} * a_{32} + a_{13} * a_{21} * a_{32} + a_{12} * a_{23} * a_{31} ) \\[2ex] \Rightarrow a_{11} * (a_{11} * a_{22} * a_{33} + a_{13} * a_{21} * a_{32} + a_{12} * a_{23} * a_{31} \\- a_{13} * a_{22} * a_{31} - a_{12} * a_{21} * a_{33} - a_{11} * a_{23} * a_{32} ) ⇒((a11∗a22−a21∗a12)∗(a11∗a33−a31∗a13))−((a11∗a32−a31∗a12)∗(a11∗a23−a21∗a13))⇒(a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33+a21∗a12∗a31∗a13)−(a11∗a32∗a11∗a23−a11∗a32∗a21∗a13−a31∗a12∗a11∗a23+a31∗a12∗a21∗a13)⇒a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33+a21∗a12∗a31∗a13−a11∗a32∗a11∗a23+a11∗a32∗a21∗a13+a31∗a12∗a11∗a23−a31∗a12∗a21∗a13⇒a11∗a22∗a11∗a33−a11∗a22∗a31∗a13−a21∗a12∗a11∗a33−a11∗a32∗a11∗a23+a11∗a32∗a21∗a13+a31∗a12∗a11∗a23⇒a11∗(a11∗a22∗a33−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32+a13∗a21∗a32+a12∗a23∗a31)⇒a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)
最后就可以发现,上述公式,其实就是a11a_{11}a11乘以原矩阵的行列式:
a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)⇒a11∗det∣a11a12a13a21a22a23a31a32a33∣a_{11} * (a_{11} * a_{22} * a_{33} + a_{13} * a_{21} * a_{32} + a_{12} * a_{23} * a_{31}- a_{13} * a_{22} * a_{31} - a_{12} * a_{21} * a_{33} - a_{11} * a_{23} * a_{32} ) \\[2ex] \Rightarrow a_{11} * det \begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)⇒a11∗det∣∣∣∣∣∣a11a21a31a12a22a32a13a23a33∣∣∣∣∣∣
根据上三角阵的性质,以及矩阵主元的性质,要使原矩阵可逆,那么等价的上三角阵中主对角线上的元素就不能为0,此时就有:
{a11≠0(a11∗a22−a21∗a12)≠0a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)≠0\begin{cases} a_{11} \neq 0\\[2ex] (a_{11} * a_{22} - a_{21} * a_{12}) \neq 0\\[2ex] a_{11} * (a_{11} * a_{22} * a_{33} + a_{13} * a_{21} * a_{32} + a_{12} * a_{23} * a_{31}\\ \qquad- a_{13} * a_{22} * a_{31} - a_{12} * a_{21} * a_{33} - a_{11} * a_{23} * a_{32} ) \neq 0 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧a11=0(a11∗a22−a21∗a12)=0a11∗(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)=0
根据以上条件,最终就有:
(a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)≠0⇒∣a11a12a13a21a22a23a31a32a33∣≠0(a_{11} * a_{22} * a_{33} + a_{13} * a_{21} * a_{32} + a_{12} * a_{23} * a_{31} \\- a_{13} * a_{22} * a_{31} - a_{12} * a_{21} * a_{33} - a_{11} * a_{23} * a_{32} ) \neq 0 \\[2ex] \Rightarrow \begin{vmatrix} a_{11} & a_{12} & a_{13} \\ a_{21} & a_{22} & a_{23} \\ a_{31} & a_{32} & a_{33} \end{vmatrix} \neq 0 (a11∗a22∗a33+a13∗a21∗a32+a12∗a23∗a31−a13∗a22∗a31−a12∗a21∗a33−a11∗a23∗a32)=0⇒∣∣∣∣∣∣a11a21a31a12a22a32a13a23a33∣∣∣∣∣∣=0
这样就说明了矩阵可逆就要判定其行列式是否为0的原因,其实从推导过程中可以看出,矩阵行列式的值实质上是蕴含在了将原矩阵通过初等行变换变为上三角阵的过程中,只是过程中的式子有些复杂,对于高于3阶的一般矩阵来说,推导的过程就显得有些啰嗦庞杂了,这估计也是为什么一般的线性代数教科书上不已此为基础来证明矩阵可逆通过判定其行列式是否为0的定理的原因了。或者说,矩阵的初等行变换本身就蕴含了矩阵行列式的计算过程,最终主对角线上的最后一个元素中就包含了矩阵行列式因子,这个因子不为0才能保证该元素不为0,是最终保证矩阵等价上三角阵主对角元素不为0 的一个充分条件,而只是上三角阵主对角元素都不0时,上三角阵才可逆,从而原矩阵可逆。
矩阵可逆与行列式关系的一个直观推导相关推荐
- 线性代数中矩阵的秩, 行列式, 矩阵向量组线性无关, 矩阵可逆之间的一些逻辑关系
笔者看到在网络上讲述这些关系的文章并不是很多(可能也是我才疏学浅哈哈),所以就萌生了写一篇相关文章的想法 首先, 我们想要理清楚矩阵的秩,行列式的值,矩阵向量组线性无关,矩阵可逆之间的关系,笔者认为可 ...
- 矩阵特征值与行列式、迹的关系
矩阵特征值与行列式.迹的关系 from: http://www.cnblogs.com/AndyJee/p/3737592.html 矩阵的特征值之积等于矩阵的行列式 矩阵的特征值之和等于矩阵的迹 简 ...
- 合同相似可逆等价矩阵的关系及性质_行列式的性质问题
行列式的学习一方面要掌握计算行列式的一般方法:对性质要理解. 考点与要求: 了解:行列式的概念.方阵的乘积.行列式的性质: 掌握:行列式的性质: 会用:行列式的性质和行列式按行(列)展开定理计算行列式 ...
- 合同相似可逆等价矩阵的关系及性质_矩阵等价、合同、相似的联系与区别
矩阵等价.合同.相似的联系与区别 这篇文章不想罗列等价.相似.合同的各种充分条件必要条件之类的,这些你们都可以从辅导书里看到,本文目的是想让同学们在更大的宏观视角把控线代,理解线代内涵,而不是机械的套 ...
- 矩阵可逆的条件以及特征值、特征向量与可对角化条件
矩阵可逆的条件: 1 秩等于行数 2 行列式不为0,即|A|≠0 3 行向量(或列向量)是线性无关组 4 存在一个矩阵,与它的乘积是单位阵 5 齐次线性方程组AX=0 仅有零解 6 非齐次线性方程组A ...
- 线性代数几何意义-矩阵乘法、行列式
前言 想写这个东西是因为看了3b1b的线性代数的本质,且学校之前教的线代就是歌姬吧,只会算数,不理解其含义,于是就想写点总结,方便自己复习,如果对这个内容感兴趣,还请看看完整的视频教程,这个博客可能会 ...
- css3魔方3乘3每层旋转_在玩魔方中学数学,原来魔方与矩阵还有这样的关系
▼承包你所有的壁纸▼ 每天推送一张魔方壁纸 请看倒数第二篇 矩阵与魔方 --魔方中的数学 孟昭旭 笔名:十日 M 上海交通大学 笔者作为魔方速拧运动的爱好者,此前就了解到魔方与线性代数有着某些关系,由 ...
- Gram矩阵+Gram矩阵和协方差矩阵的关系
目录 Gram矩阵简介 协方差矩阵 Gram矩阵 和 协方差矩阵的关系 Gram Matrix代码 Gram矩阵简介 gram矩阵是计算每个通道 i 的feature map与每个通道 j 的feat ...
- 特征提取 - 海森矩阵(Hessian Matrix)及一个用例(图像增强)
转自:https://blog.csdn.net/u013921430/article/details/79770458 这个例子效果并没有给出的结果那么好,但是Hessian矩阵的生成可以参考 前言 ...
- 一文读懂标量、向量、矩阵、张量的关系
文章目录 一.标量 百度百科和维基百科 二.向量 向量的四种表示方法 代数表示 几何表示 坐标表示 矩阵表示 百度百科和维基百科 三.矩阵 百度百科和维基百科 四.张量 百度百科和维基百科 五.标量. ...
最新文章
- 2018-3-23Markov 链(笔记一)定义
- Python描述性统计示例
- android 获取MP4文件的图片大小
- php descryptoserviceprovider,在unity3D上对数据进行DES加密,在PHP服务器上进行解密的详细教程...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
- .NET 实现并行的几种方式(一)
- 【Java】计算1+1/2!+1/3!+1/4!....前20项
- canvas 绘制圆形进度条
- [C++] c language 23 keywords
- 项目中最困难的部分_微服务最难的部分是什么? 您的资料
- 智慧楼宇管理后台、运维配置、设备台账、设备管理、维保统计、巡检统计、维修工单、报修统计、电子巡更、智能楼宇运营、运营后台、智慧社区、楼宇设备监控管理端、智能社区管理系统、楼宇运维管理系统
- 这位硬核程序员,想好怎么过春节了吗?
- 2003下使用IIS+PHP+MySQL来运行DZ(落伍记号)
- poj 1751 highways
- Sparksql练习题
- nodeJS笔记参考菜鸟教程
- 轻量锁volatile
- JAVA 输出杨辉三角形
- 云服务器配置java环境
- 《和平精英》SS3赛季战神灵敏度来了,还有赛季手册最全套装