ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

强撸MIT18.06灰飞烟灭(一)

2022-04-17 01:33:19  阅读:178  来源: 互联网

标签:begin MIT18.06 end 灰飞烟灭 矩阵 plt bmatrix 向量


第一讲:方程组的几何解释

我们从求解线性方程组来开始这门课,从一个普通的例子讲起:方程组有\(2\)个未知数,一共有\(2\)个方程,分别来看方程组的“行图像”和“列图像”。

有方程组\(\begin{cases}2x&-y&=0\\-x&+2y&=3\end{cases}\),写作矩阵形式有\(\begin{bmatrix}2&-1\\-1&2\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}\),通常我们把第一个矩阵称为系数矩阵\(A\),将第二个矩阵称为向量\(x\),将第三个矩阵称为向量\(b\),于是线性方程组可以表示为\(Ax=b\)。

我们来看行图像,即直角坐标系中的图像:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

x = [-2, 2, -2, 2]
y = [-4, 4, 0.5, 2.5]

fig = plt.figure()
plt.axhline(y=0, c='black')
plt.axvline(x=0, c='black')

plt.plot(x[:2], y[:2], x[2:], y[2:])

plt.draw()

png

plt.close(fig)

上图是我们都很熟悉的直角坐标系中两直线相交的情况,接下来我们按列观察方程组\(x\begin{bmatrix}2\\-1\end{bmatrix}+y\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}\)(我们把第一个向量称作\(col_1\),第二个向量称作\(col_2\),以表示第一列向量和第二列向量),要使得式子成立,需要第一个向量加上两倍的第二个向量,即\(1\begin{bmatrix}2\\-1\end{bmatrix}+2\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}\)。

现在来看列图像,在二维平面上画出上面的列向量:

from functools import partial

fig = plt.figure()
plt.axhline(y=0, c='black')
plt.axvline(x=0, c='black')
ax = plt.gca()
ax.set_xlim(-2.5, 2.5)
ax.set_ylim(-3, 4)

arrow_vector = partial(plt.arrow, width=0.01, head_width=0.1, head_length=0.2, length_includes_head=True)

arrow_vector(0, 0, 2, -1, color='g')
arrow_vector(0, 0, -1, 2, color='c')
arrow_vector(2, -1, -2, 4, color='b')
arrow_vector(0, 0, 0, 3, width=0.05, color='r')

plt.draw()

png

plt.close(fig)

如图,绿向量\(col_1\)与蓝向量(两倍的蓝绿向量\(col_2\))合成红向量\(b\)。

接着,我们继续观察\(x\begin{bmatrix}2\\-1\end{bmatrix}+y\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}\),\(col_1,col_2\)的某种线性组合得到了向量\(b\),那么\(col_1,col_2\)的所有线性组合能够得到什么结果?它们将铺满整个平面。

下面进入三个未知数的方程组:\(\begin{cases}2x&-y&&=0\\-x&+2y&-z&=-1\\&-3y&+4z&=4\end{cases}\),写作矩阵形式\(A=\begin{bmatrix}2&-1&0\\-1&2&-1\\0&-3&4\end{bmatrix},\ b=\begin{bmatrix}0\\-1\\4\end{bmatrix}\)。

在三维直角坐标系中,每一个方程将确定一个平面,而例子中的三个平面会相交于一点,这个点就是方程组的解。

同样的,将方程组写成列向量的线性组合,观察列图像:\(x\begin{bmatrix}2\\-1\\0\end{bmatrix}+y\begin{bmatrix}-1\\2\\-3\end{bmatrix}+z\begin{bmatrix}0\\-1\\4\end{bmatrix}=\begin{bmatrix}0\\-1\\4\end{bmatrix}\)。易知教授特意安排的例子中最后一个列向量恰巧等于等式右边的\(b\)向量,所以我们需要的线性组合为\(x=0,y=0,z=1\)。假设我们令\(b=\begin{bmatrix}1\\1\\-3\end{bmatrix}\),则需要的线性组合为\(x=1,y=1,z=0\)。

我们并不能总是这么轻易的求出正确的线性组合,所以下一讲将介绍消元法——一种线性方程组的系统性解法。

现在,我们需要考虑,对于任意的\(b\),是否都能求解\(Ax=b\)?用列向量线性组合的观点阐述就是,列向量的线性组合能否覆盖整个三维向量空间?对上面这个例子,答案是肯定的,这个例子中的\(A\)是我们喜欢的矩阵类型,但是对另一些矩阵,答案是否定的。那么在什么情况下,三个向量的线性组合得不到\(b\)?

——如果三个向量在同一个平面上,问题就出现了——那么他们的线性组合也一定都在这个平面上。举个例子,比如\(col_3=col_1+col_2\),那么不管怎么组合,这三个向量的结果都逃不出这个平面,因此当\(b\)在平面内,方程组有解,而当\(b\)不在平面内,这三个列向量就无法构造出\(b\)。在后面的课程中,我们会了解到这种情形称为奇异矩阵不可逆

下面我们推广到九维空间,每个方程有九个未知数,共九个方程,此时已经无法从坐标图像中描述问题了,但是我们依然可以从求九维列向量线性组合的角度解决问题,仍然是上面的问题,是否总能得到\(b\)?当然这仍取决于这九个向量,如果我们取一些并不相互独立的向量,则答案是否定的,比如取了九列但其实只相当于八列,有一列毫无贡献(这一列是前面列的某种线性组合),则会有一部分\(b\)无法求得。

接下来介绍方程的矩阵形式\(Ax=b\),这是一种乘法运算,举个例子,取\(A=\begin{bmatrix}2&5\\1&3\end{bmatrix},\ x=\begin{bmatrix}1\\2\end{bmatrix}\),来看如何计算矩阵乘以向量:

  • 我们依然使用列向量线性组合的方式,一次计算一列,\(\begin{bmatrix}2&5\\1&3\end{bmatrix}\begin{bmatrix}1\\2\end{bmatrix}=1\begin{bmatrix}2\\1\end{bmatrix}+2\begin{bmatrix}5\\3\end{bmatrix}=\begin{bmatrix}12\\7\end{bmatrix}\)
  • 另一种方法,使用向量内积,矩阵第一行向量点乘\(x\)向量\(\begin{bmatrix}2&5\end{bmatrix}\cdot\begin{bmatrix}1&2\end{bmatrix}^T=12,\ \begin{bmatrix}1&3\end{bmatrix}\cdot\begin{bmatrix}1&2\end{bmatrix}^T=7\)。

教授建议使用第一种方法,将\(Ax\)看做\(A\)列向量的线性组合。

第二讲:矩阵消元

这个方法最早由高斯提出,我们以前解方程组的时候都会使用,现在来看如何使用矩阵实现消元法。

消元法

有三元方程组\(\begin{cases}x&+2y&+z&=2\\3x&+8y&+z&=12\\&4y&+z&=2\end{cases}\),对应的矩阵形式\(Ax=b\)为\(\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}\begin{bmatrix}x\\y\\z\end{bmatrix}=\begin{bmatrix}2\\12\\2\end{bmatrix}\)。

按照我们以前做消元法的思路:

  • 第一步,我们希望在第二个方程中消去\(x\)项,来操作系数矩阵\(A=\begin{bmatrix}\underline{1}&2&1\\3&8&1\\0&4&1\end{bmatrix}\),下划线的元素为第一步的主元(pivot):\(\begin{bmatrix}\underline{1}&2&1\\3&8&1\\0&4&1\end{bmatrix}\xrightarrow{row_2-3row_1}\begin{bmatrix}\underline{1}&2&1\\0&2&-2\\0&4&1\end{bmatrix}\)

    这里我们先不管\(b\)向量,等做完\(A\)的消元可以再做\(b\)的消元。(这是MATLAB等工具经常使用的算法。)

  • 第二步,我们希望在第三个方程中消去\(y\)项,现在第二行第一个非零元素成为了第二个主元:\(\begin{bmatrix}\underline{1}&2&1\\0&\underline{2}&-2\\0&4&1\end{bmatrix}\xrightarrow{row_3-2row_2}\begin{bmatrix}\underline{1}&2&1\\0&\underline{2}&-2\\0&0&\underline{5}\end{bmatrix}\)

    注意到第三行消元过后仅剩一个非零元素,所以它就成为第三个主元。做到这里就算消元完成了。

再来讨论一下消元失效的情形:首先,主元不能为零;其次,如果在消元时遇到主元位置为零,则需要交换行,使主元不为零;最后提一下,如果我们把第三个方程\(z\)前的系数改成\(-4\),会导致第二步消元时最后一行全部为零,则第三个主元就不存在了,至此消元不能继续进行了,这就是下一讲中涉及的不可逆情况。

  • 接下来就该回代(back substitution)了,这时我们在\(A\)矩阵后面加上\(b\)向量写成增广矩阵(augmented matrix)的形式:\(\left[\begin{array}{c|c}A&b\end{array}\right]=\left[\begin{array}{ccc|c}1&2&1&2\\3&8&1&12\\0&4&1&2\end{array}\right]\to\left[\begin{array}{ccc|c}1&2&1&2\\0&2&-2&6\\0&4&1&2\end{array}\right]\to\left[\begin{array}{ccc|c}1&2&1&2\\0&2&-2&6\\0&0&5&-10\end{array}\right]\)

    不难看出,\(z\)的解已经出现了,此时方程组变为\(\begin{cases}x&+2y&+z&=2\\&2y&-2z&=6\\&&5z&=-10\end{cases}\),从第三个方程求出\(z=-2\),代入第二个方程求出\(y=1\),再代入第一个方程求出\(x=2\)。

消元矩阵

上一讲我们学习了矩阵乘以向量的方法,有三个列向量的矩阵乘以另一个向量,按列的线性组合可以写作\(\Bigg[v_1\ v_2\ v_3\Bigg]\begin{bmatrix}3\\4\\5\end{bmatrix}=3v_1+4v_2+5v_3\)。

但现在我们希望用矩阵乘法表示行操作,则有\(\begin{bmatrix}1&2&7\end{bmatrix}\begin{bmatrix}&row_1&\\&row_2&\\&row_3&\end{bmatrix}=1row_1+2row_2+7row_3\)。易看出这里是一个行向量从左边乘以矩阵,这个行向量按行操作矩阵的行向量,并将其合成为一个矩阵行向量的线性组合。

介绍到这里,我们就可以将消元法所做的行操作写成向量乘以矩阵的形式了。

  • 消元法第一步操作为将第二行改成\(row_2-3row_1\),其余两行不变,则有\(\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix}\begin{bmatrix}1&2&1\\3&8&1\\0&4&1\end{bmatrix}=\begin{bmatrix}1&2&1\\0&2&-2\\0&4&1\end{bmatrix}\)(另外,如果三行都不变,消元矩阵就是单位矩阵\(I=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}\),\(I\)之于矩阵运算相当于\(1\)之于四则运算。)这个消元矩阵我们记作\(E_{21}\),即将第二行第一个元素变为零。

  • 接下来就是求\(E_{32}\)消元矩阵了,即将第三行第二个元素变为零,则\(\begin{bmatrix}1&0&0\\0&1&0\\0&-2&1\end{bmatrix}\begin{bmatrix}1&2&1\\0&2&-2\\0&4&1\end{bmatrix}=\begin{bmatrix}1&2&1\\0&2&-2\\0&0&5\end{bmatrix}\)。这就是消元所用的两个初等矩阵(elementary matrix)。

  • 最后,我们将这两步综合起来,即\(E_{32}(E_{21}A)=U\),也就是说如果我们想从\(A\)矩阵直接得到\(U\)矩阵的话,只需要\((E_{32}E_{21})A\)即可。注意,矩阵乘法虽然不能随意变动相乘次序,但是可以变动括号位置,也就是满足结合律(associative law),而结合律在矩阵运算中非常重要,很多定理的证明都需要巧妙的使用结合律。

既然提到了消元用的初等矩阵,那我们再介绍一种用于置换两行的矩阵:置换矩阵(permutation matrix):例如\(\begin{bmatrix}0&1\\1&0\end{bmatrix}\begin{bmatrix}a&b\\c&d\end{bmatrix}=\begin{bmatrix}c&d\\a&b\end{bmatrix}\),置换矩阵将原矩阵的两行做了互换。顺便提一下,如果我们希望交换两列,则有\(\begin{bmatrix}a&b\\c&d\end{bmatrix}\begin{bmatrix}0&1\\1&0\end{bmatrix}=\begin{bmatrix}b&a\\d&c\end{bmatrix}\)。

我们现在能够将\(A\)通过行变换写成\(U\),那么如何从\(U\)再变回\(A\),也就是求消元的逆运算。对某些“坏”矩阵,并没有逆,而本讲的例子都是“好”矩阵。

现在,我们以\(E_{21}\)为例,\(\Bigg[\quad ?\quad \Bigg]\begin{bmatrix}1&0&0\\-3&1&0\\0&0&1\end{bmatrix}=\begin{bmatrix}1&0&0\\0&1&0\\0&0&1\end{bmatrix}\),什么矩阵可以取消这次行变换?这次变换是从第二行中减去三倍的第一行,那么其逆变换就是给第二行加上三倍的第一行,所以逆矩阵就是\(\begin{bmatrix}1&0&0\\3&1&0\\0&0&1\end{bmatrix}\)。

我们把矩阵\(E\)的逆记作\(E^{-1}\),所以有\(E^{-1}E=I\)。

第三讲:乘法和逆矩阵

上一讲大概介绍了矩阵乘法和逆矩阵,本讲就来做进一步说明。

矩阵乘法

  • 行列内积:有\(m\times n\)矩阵\(A\)和\(n\times p\)矩阵\(B\)(\(A\)的总列数必须与\(B\)的总行数相等),两矩阵相乘有\(AB=C\),\(C\)是一个\(m\times p\)矩阵,对于\(C\)矩阵中的第\(i\)行第\(j\)列元素\(c_{ij}\),有:

    \[c_{ij}=row_i\cdot column_j=\sum_{k=i}^na_{ik}b_{kj} \]

    其中\(a_{ik}\)是\(A\)矩阵的第\(i\)行第\(k\)列元素,\(b_{kj}\)是\(B\)矩阵的第\(k\)行第\(j\)列元素。

    可以看出\(c_{ij}\)其实是\(A\)矩阵第\(i\)行点乘\(B\)矩阵第\(j\)列 \(\begin{bmatrix}&\vdots&\\&row_i&\\&\vdots&\end{bmatrix}\begin{bmatrix}&&\\\cdots&column_j&\cdots\\&&\end{bmatrix}=\begin{bmatrix}&\vdots&\\\cdots&c_{ij}&\cdots\\&\vdots&\end{bmatrix}\)

  • 整列相乘:上一讲我们知道了如何计算矩阵乘以向量,而整列相乘就是使用这种线性组合的思想:

    \(\begin{bmatrix}&&\\A_{col1}&A_{col2}&\cdots&A_{coln}\\&&\end{bmatrix}\begin{bmatrix}\cdots&b_{1j}&\cdots\\\cdots&b_{2j}&\cdots\\\cdots&\vdots&\cdots\\\cdots&b_{nj}&\cdots\\\end{bmatrix}=\begin{bmatrix}&&\\\cdots&\left(b_{1j}A_{col1}+b_{2j}A_{col2}+\cdots+b_{nj}A_{coln}\right)&\cdots\\&&\end{bmatrix}\)

    上面的运算为\(B\)的第\(j\)个列向量右乘矩阵\(A\),求得的结果就是\(C\)矩阵的第\(j\)列,即\(C\)的第\(j\)列是\(A\)的列向量以\(B\)的第\(j\)列作为系数所求得的线性组合,\(C_j=b_{1j}A_{col1}+b_{2j}A_{col2}+\cdots+b_{nj}A_{coln}\)。

  • 整行相乘:同样的,也是利用行向量线性组合的思想:

    \(\begin{bmatrix}\vdots&\vdots&\vdots&\vdots\\a_{i1}&a_{i2}&\cdots&a_{in}\\\vdots&\vdots&\vdots&\vdots\end{bmatrix}\begin{bmatrix}&B_{row1}&\\&B_{row2}&\\&\vdots&\\&B_{rown}&\end{bmatrix}=\begin{bmatrix}\vdots\\\left(a_{i1}B_{row1}+a_{i2}B_{row2}+\cdots+a_{in}B_{rown}\right)\\\vdots\end{bmatrix}\)

    上面的运算为\(A\)的第\(i\)个行向量左乘矩阵\(B\),求得的结果就是\(C\)矩阵的第\(i\)行,即\(C\)的第\(i\)行是\(B\)的行向量以\(A\)的第\(i\)行作为系数所求的的线性组合,\(C_i=a_{i1}B_{row1}+a_{i2}B_{row2}+\cdots+a_{in}B_{rown}\)。

  • 列乘以行:用\(A\)矩阵的列乘以\(B\)矩阵的行,得到的矩阵相加即可:

    \(\begin{bmatrix}&&\\A_{col1}&A_{col2}&\cdots&A_{coln}\\&&\end{bmatrix}\begin{bmatrix}&B_{row1}&\\&B_{row2}&\\&\vdots&\\&B_{rown}&\end{bmatrix}=A_{col1}B_{row1}+A_{col2}B_{row2}+\cdots+A_{coln}B_{rown}\)

    注意,\(A_{coli}B_{rowi}\)是一个\(m\times 1\)向量乘以一个\(1\times p\)向量,其结果是一个\(m\times p\)矩阵,而所有的\(m\times p\)矩阵之和就是计算结果。

  • 分块乘法:\(\left[\begin{array}{c|c}A_1&A_2\\\hline A_3&A_4\end{array}\right]\left[\begin{array}{c|c}B_1&B_2\\\hline B_3&B_4\end{array}\right]=\left[\begin{array}{c|c}A_1B_1+A_2B_3&A_1B_2+A_2B_4\\\hline A_3B_1+A_4B_3&A_3B_2+A_4B_4\end{array}\right]\)

    在分块合适的情况下,可以简化运算。

逆(方阵)

首先,并不是所有的方阵都有逆;而如果逆存在,则有\(A^{-1}A=I=AA^{-1}\)。教授这里提前剧透,对于方阵,左逆和右逆是相等的,但是对于非方阵(长方形矩阵),其左逆不等于右逆。

对于这些有逆的矩阵,我们称其为可逆的或非奇异的。我们先来看看奇异矩阵(不可逆的):\(A=\begin{bmatrix}1&2\\3&6\end{bmatrix}\),在后面将要学习的行列式中,会发现这个矩阵的行列式为\(0\)。

观察这个方阵,我们如果用另一个矩阵乘\(A\),则得到的结果矩阵中的每一列应该都是\(\begin{bmatrix}1\\2\end{bmatrix}\)的倍数,所以我们不可能从\(AB\)的乘积中得到单位矩阵\(I\)。

另一种判定方法,如果存在非零向量\(x\),使得\(Ax=0\),则矩阵\(A\)不可逆。我们来用上面的矩阵为例:\(\begin{bmatrix}1&2\\3&6\end{bmatrix}\begin{bmatrix}3\\-1\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}\)。

证明:如果对于非零的\(x\)仍有\(Ax=0\),而\(A\)有逆\(A^{-1}\),则\(A^{-1}Ax=0\),即\(x=0\),与题设矛盾,得证。

现在来看看什么矩阵有逆,设\(A=\begin{bmatrix}1&3\\2&7\end{bmatrix}\),我们来求\(A^{-1}\)。\(\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}a&b\\c&d\end{bmatrix}=\begin{bmatrix}1&0\\0&1\end{bmatrix}\),使用列向量线性组合的思想,我们可以说\(A\)乘以\(A^{-1}\)的第\(j\)列,能够得到\(I\)的第\(j\)列,这时我会得到一个关于列的方程组。

接下来介绍高斯-若尔当(Gauss-Jordan)方法,该方法可以一次处理所有的方程:

  • 这个方程组为\(\begin{cases}\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}a\\b\end{bmatrix}=\begin{bmatrix}1\\0\end{bmatrix}\\\begin{bmatrix}1&3\\2&7\end{bmatrix}\begin{bmatrix}c\\d\end{bmatrix}=\begin{bmatrix}0\\1\end{bmatrix}\end{cases}\),我们想要同时解这两个方程;

  • 构造这样一个矩阵\(\left[\begin{array}{cc|cc}1&3&1&0\\2&7&0&1\end{array}\right]\),接下来用消元法将左侧变为单位矩阵;

  • \(\left[\begin{array}{cc|cc}1&3&1&0\\2&7&0&1\end{array}\right]\xrightarrow{row_2-2row_1}\left[\begin{array}{cc|cc}1&3&1&0\\0&1&-2&1\end{array}\right]\xrightarrow{row_1-3row_2}\left[\begin{array}{cc|cc}1&0&7&-3\\0&1&-2&1\end{array}\right]\)

  • 于是,我们就将矩阵从\(\left[\begin{array}{c|c}A&I\end{array}\right]\)变为\(\left[\begin{array}{c|c}I&A^{-1}\end{array}\right]\)

而高斯-若尔当法的本质是使用消元矩阵\(E\),对\(A\)进行操作,\(E\left[\begin{array}{c|c}A&I\end{array}\right]\),利用一步步消元有\(EA=I\),进而得到\(\left[\begin{array}{c|c}I&E\end{array}\right]\),其实这个消元矩阵\(E\)就是\(A^{-1}\),而高斯-若尔当法中的\(I\)只是负责记录消元的每一步操作,待消元完成,逆矩阵就自然出现了。

第四讲:\(A\) 的 \(LU\) 分解

\(AB\)的逆矩阵:

\[\begin{aligned} A \cdot A^{-1} = I & = A^{-1} \cdot A\\ (AB) \cdot (B^{-1}A^{-1}) & = I\\ \textrm{则} AB \textrm{的逆矩阵为} & B^{-1}A^{-1} \end{aligned} \]

\(A^{T}\)的逆矩阵:

\[\begin{aligned} (A \cdot A^{-1})^{T} & = I^{T}\\ (A^{-1})^{T} \cdot A^{T} & = I\\ \textrm{则} A^{T} \textrm{的逆矩阵为} & (A^{-1})^{T} \end{aligned} \]

将一个 \(n\) 阶方阵 \(A\) 变换为 \(LU\) 需要的计算量估计:

  1. 第一步,将\(a_{11}\)作为主元,需要的运算量约为\(n^2\)

\[\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \\ \end{bmatrix} \underrightarrow{消元} \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \\ 0 & a_{22} & \cdots & a_{2n} \\ 0 & \vdots & \ddots & \vdots \\ 0 & a_{n2} & \cdots & a_{nn} \\ \end{bmatrix} \]

  1. 以此类推,接下来每一步计算量约为\((n-1)^2、(n-2)^2、\cdots、2^2、1^2\)。

  2. 则将 \(A\) 变换为 \(LU\) 的总运算量应为\(O(n^2+(n-1)^2+\cdots+2^2+1^2)\),即\(O(\frac{n^3}{3})\)。

置换矩阵(Permutation Matrix):

3阶方阵的置换矩阵有6个:

\[\begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 1 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 1 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 1 \\ 1 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \\ \end{bmatrix} \]

\(n\)阶方阵的置换矩阵有\(\binom{n}{1}=n!\)个。

第五讲:转换、置换、向量空间R

置换矩阵(Permutation Matrix)

\(P\)为置换矩阵,对任意可逆矩阵\(A\)有:

\(PA=LU\)

\(n\)阶方阵的置换矩阵\(P\)有\(\binom{n}{1}=n!\)个

对置换矩阵\(P\),有\(P^TP = I\)

即$P^T = P^{-1}

转置矩阵(Transpose Matrix)

\((A^T)_{ij} = (A)_{ji}\)

对称矩阵(Symmetric Matrix)

\(A^T\) = \(A\)

对任意矩阵\(R\)有\(R^TR\)为对称矩阵:

\[(R^TR)^T = (R)^T(R^T)^T = R^TR\\ \textrm{即}(R^TR)^T = R^TR \]

向量空间(Vector Space)

所有向量空间都必须包含原点(Origin);

向量空间中任意向量的数乘、求和运算得到的向量也在该空间中。
即向量空间要满足加法封闭和数乘封闭。

第六讲:列空间和零空间

对向量子空间\(S\)和\(T\),有\(S \cap T\)也是向量子空间。

对\(m \times n\)矩阵\(A\),\(n \times 1\)矩阵\(x\),\(m \times 1\)矩阵\(b\),运算\(Ax=b\):

\[\begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1(n-1)} & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2(n-1)} & a_{2n} \\ \vdots & \vdots & \ddots & \vdots & \vdots \\ a_{m1} & a_{m2} & \cdots & a_{m(n-1)} & a_{mn} \\ \end{bmatrix} \cdot \begin{bmatrix} x_{1} \\ x_{2} \\ \vdots \\ x_{n-1} \\ x_{n} \\ \end{bmatrix} = \begin{bmatrix} b_{1} \\ b_{2} \\ \vdots \\ b_{m} \\ \end{bmatrix} \]

由\(A\)的列向量生成的子空间为\(A\)的列空间;

\(Ax=b\)有非零解当且仅当\(b\)属于\(A\)的列空间

A的零空间是\(Ax=0\)中\(x\)的解组成的集合。

第七讲:求解\(Ax=0\),主变量,特解

举例:\(3 \times 4\)矩阵
\( A= \begin{bmatrix} 1 & 2 & 2 & 2\\ 2 & 4 & 6 & 8\\ 3 & 6 & 8 & 10\\ \end{bmatrix} \),求\(Ax=0\)的特解:

找出主变量(pivot variable):

\[A= \begin{bmatrix} 1 & 2 & 2 & 2\\ 2 & 4 & 6 & 8\\ 3 & 6 & 8 & 10\\ \end{bmatrix} \underrightarrow{消元} \begin{bmatrix} \underline{1} & 2 & 2 & 2\\ 0 & 0 & \underline{2} & 4\\ 0 & 0 & 0 & 0\\ \end{bmatrix} =U \]

主变量(pivot variable,下划线元素)的个数为2,即矩阵\(A\)的秩(rank)为2,即\(r=2\)。

主变量所在的列为主列(pivot column),其余列为自由列(free column)。

自由列中的变量为自由变量(free variable),自由变量的个数为\(n-r=4-2=2\)。

通常,给自由列变量赋值,去求主列变量的值。如,令\(x_2=1, x_4=0\)求得特解
\(x=c_1\begin{bmatrix}-2\\1\\0\\0\\\end{bmatrix}\);
再令\(x_2=0, x_4=1\)求得特解
\(x=c_2\begin{bmatrix}2\\0\\-2\\1\\\end{bmatrix}\)。

该例还能进一步简化,即将\(U\)矩阵化简为\(R\)矩阵(Reduced row echelon form),即简化行阶梯形式。

在简化行阶梯形式中,主元上下的元素都是\(0\):

\[U= \begin{bmatrix} \underline{1} & 2 & 2 & 2\\ 0 & 0 & \underline{2} & 4\\ 0 & 0 & 0 & 0\\ \end{bmatrix} \underrightarrow{化简} \begin{bmatrix} \underline{1} & 2 & 0 & -2\\ 0 & 0 & \underline{1} & 2\\ 0 & 0 & 0 & 0\\ \end{bmatrix} =R \]

将\(R\)矩阵中的主变量放在一起,自由变量放在一起(列交换),得到

\[R= \begin{bmatrix} \underline{1} & 2 & 0 & -2\\ 0 & 0 & \underline{1} & 2\\ 0 & 0 & 0 & 0\\ \end{bmatrix} \underrightarrow{列交换} \left[ \begin{array}{c c | c c} 1 & 0 & 2 & -2\\ 0 & 1 & 0 & 2\\ \hline 0 & 0 & 0 & 0\\ \end{array} \right] = \begin{bmatrix} I & F \\ 0 & 0 \\ \end{bmatrix} \textrm{,其中}I\textrm{为单位矩阵,}F\textrm{为自由变量组成的矩阵} \]

计算零空间矩阵\(N\)(nullspace matrix),其列为特解,有\(RN=0\)。

\[x_{pivot}=-Fx_{free} \\ \begin{bmatrix} I & F \\ \end{bmatrix} \begin{bmatrix} x_{pivot} \\ x_{free} \\ \end{bmatrix}=0 \\ N=\begin{bmatrix} -F \\ I \\ \end{bmatrix} \]

在本例中
\( N= \begin{bmatrix} -2 & 2 \\ 0 & -2 \\ 1 & 0 \\ 0 & 1 \\ \end{bmatrix} \),与上面求得的两个\(x\)特解一致。

另一个例子,矩阵
\( A= \begin{bmatrix} 1 & 2 & 3 \\ 2 & 4 & 6 \\ 2 & 6 & 8 \\ 2 & 8 & 10 \\ \end{bmatrix} \underrightarrow{消元} \begin{bmatrix} 1 & 2 & 3 \\ 0 & 2 & 2 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \underrightarrow{化简} \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} =R \)

矩阵的秩仍为\(r=2\),有\(2\)个主变量,\(1\)个自由变量。

同上一例,取自由变量为\(x_3=1\),求得特解
\( x=c \begin{bmatrix} -1 \\ -1 \\ 1 \\ \end{bmatrix} \)

第八讲:求解\(Ax=b\):可解性和解的结构

举例,同上一讲:\(3 \times 4\)矩阵
\( A= \begin{bmatrix} 1 & 2 & 2 & 2\\ 2 & 4 & 6 & 8\\ 3 & 6 & 8 & 10\\ \end{bmatrix} \),求\(Ax=b\)的特解:

写出其增广矩阵(augmented matrix)\(\left[\begin{array}{c|c}A & b\end{array}\right]\):

\[\left[ \begin{array}{c c c c|c} 1 & 2 & 2 & 2 & b_1 \\ 2 & 4 & 6 & 8 & b_2 \\ 3 & 6 & 8 & 10 & b_3 \\ \end{array} \right] \underrightarrow{消元} \left[ \begin{array}{c c c c|c} 1 & 2 & 2 & 2 & b_1 \\ 0 & 0 & 2 & 4 & b_2-2b_1 \\ 0 & 0 & 0 & 0 & b_3-b_2-b_1 \\ \end{array} \right] \]

显然,有解的必要条件为\(b_3-b_2-b_1=0\)。

讨论\(b\)满足什么条件才能让方程\(Ax=b\)有解(solvability condition on b):当且仅当\(b\)属于\(A\)的列空间时。另一种描述:如果\(A\)的各行线性组合得到\(0\)行,则\(b\)端分量做同样的线性组合,结果也为\(0\)时,方程才有解。

解法:令所有自由变量取\(0\),则有\( \Big\lbrace \begin{eqnarray*} x_1 & + & 2x_3 & = & 1 \\ & & 2x_3 & = & 3 \\ \end{eqnarray*} \)
,解得
\( \Big\lbrace \begin{eqnarray*} x_1 & = & -2 \\ x_3 & = & \frac{3}{2} \\ \end{eqnarray*} \)
,代入\(Ax=b\)求得特解
\( x_p= \begin{bmatrix} -2 \\ 0 \\ \frac{3}{2} \\ 0 \end{bmatrix} \)。

令\(Ax=b\)成立的所有解:

\[\Big\lbrace \begin{eqnarray} A & x_p & = & b \\ A & x_n & = & 0 \\ \end{eqnarray} \quad \underrightarrow{两式相加} \quad A(x_p+x_n)=b \]

即\(Ax=b\)的解集为其特解加上零空间,对本例有:
\( x_{complete}= \begin{bmatrix} -2 \\ 0 \\ \frac{3}{2} \\ 0 \end{bmatrix} + c_1\begin{bmatrix}-2\\1\\0\\0\\\end{bmatrix} + c_2\begin{bmatrix}2\\0\\-2\\1\\\end{bmatrix} \)

对于\(m \times n\)矩阵\(A\),有矩阵\(A\)的秩\(r \leq min(m, n)\)

列满秩\(r=n\)情况:
\( A= \begin{bmatrix} 1 & 3 \\ 2 & 1 \\ 6 & 1 \\ 5 & 1 \\ \end{bmatrix} \)
,\(rank(A)=2\),要使\(Ax=b, b \neq 0\)有非零解,\(b\)必须取\(A\)中各列的线性组合,此时A的零空间中只有\(0\)向量。

行满秩\(r=m\)情况:
\( A= \begin{bmatrix} 1 & 2 & 6 & 5 \\ 3 & 1 & 1 & 1 \\ \end{bmatrix} \)
,\(rank(A)=2\),\(\forall b \in R^m都有x \neq 0的解\),因为此时\(A\)的列空间为\(R^m\),\(b \in R^m\)恒成立,组成\(A\)的零空间的自由变量有n-r个。

行列满秩情况:\(r=m=n\),如
\( A= \begin{bmatrix} 1 & 2 \\ 3 & 4 \\ \end{bmatrix} \)
,则\(A\)最终可以化简为\(R=I\),其零空间只包含\(0\)向量。

总结:

\[\begin{array}{c|c|c|c}r=m=n&r=n\lt m&r=m\lt n&r\lt m,r\lt n\\R=I&R=\begin{bmatrix}I\\0\end{bmatrix}&R=\begin{bmatrix}I&F\end{bmatrix}&R=\begin{bmatrix}I&F\\0&0\end{bmatrix}\\1\ solution&0\ or\ 1\ solution&\infty\ solution&0\ or\ \infty\ solution\end{array} \]

第九讲:线性相关性、基、维数

\(v_1,\ v_2,\ \cdots,\ v_n\)是\(m\times n\)矩阵\(A\)的列向量:

如果\(A\)零空间中有且仅有\(0\)向量,则各向量线性无关,\(rank(A)=n\)。

如果存在非零向量\(c\)使得\(Ac=0\),则存在线性相关向量,\(rank(A)\lt n\)。

向量空间\(S\)中的一组基(basis),具有两个性质:

  1. 他们线性无关;
  2. 他们可以生成\(S\)。

对于向量空间\(\mathbb{R}^n\),如果\(n\)个向量组成的矩阵为可逆矩阵,则这\(n\)个向量为该空间的一组基,而数字\(n\)就是该空间的维数(dimension)。

举例:
\( A= \begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \\ \end{bmatrix} \)
,A的列向量线性相关,其零空间中有非零向量,所以\(rank(A)=2=主元存在的列数=列空间维数\)。

可以很容易的求得\(Ax=0\)的两个解,如
\( x_1= \begin{bmatrix} -1 \\ -1 \\ 1 \\ 0 \\ \end{bmatrix}, x_2= \begin{bmatrix} -1 \\ 0 \\ 0 \\ 1 \\ \end{bmatrix} \),根据前几讲,我们知道特解的个数就是自由变量的个数,所以\(n-rank(A)=2=自由变量存在的列数=零空间维数\)

我们得到:列空间维数\(dim C(A)=rank(A)\),零空间维数\(dim N(A)=n-rank(A)\)

第十讲 四个基本子空间

对于\(m \times n\)矩阵\(A\),\(rank(A)=r\)有:

  • 行空间\(C(A^T) \in \mathbb{R}^n, dim C(A^T)=r\),基见例1。

  • 零空间\(N(A) \in \mathbb{R}^n, dim N(A)=n-r\),自由元所在的列即可组成零空间的一组基。

  • 列空间\(C(A) \in \mathbb{R}^m, dim C(A)=r\),主元所在的列即可组成列空间的一组基。

  • 左零空间\(N(A^T) \in \mathbb{R}^m, dim N(A^T)=m-r\),基见例2。

例1,对于行空间
\( A= \begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \\ \end{bmatrix} \underrightarrow{消元、化简} \begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix} =R \)

由于我们做了行变换,所以A的列空间受到影响,\(C(R) \neq C(A)\),而行变换并不影响行空间,所以可以在\(R\)中看出前两行就是行空间的一组基。

所以,可以得出无论对于矩阵\(A\)还是\(R\),其行空间的一组基,可以由\(R\)矩阵的前\(r\)行向量组成(这里的\(R\)就是第七讲提到的简化行阶梯形式)。

例2,对于左零空间,有\(A^Ty=0 \rightarrow (A^Ty)^T=0^T\rightarrow y^TA=0^T\),因此得名。

采用Gauss-Jordan消元,将增广矩阵\(\left[\begin{array}{c|c}A_{m \times n} & I_{m \times m}\end{array}\right]\)中\(A\)的部分划为简化行阶梯形式\(\left[\begin{array}{c|c}R_{m \times n} & E_{m \times m}\end{array}\right]\),此时矩阵\(E\)会将所有的行变换记录下来。

则\(EA=R\),而在前几讲中,有当\(A'\)是\(m\)阶可逆方阵时,\(R'\)即是\(I\),所以\(E\)就是\(A^{-1}\)。

本例中

\[\left[\begin{array}{c|c}A_{m \times n} & I_{m \times m}\end{array}\right]= \left[ \begin{array} {c c c c|c c c} 1 & 2 & 3 & 1 & 1 & 0 & 0 \\ 1 & 1 & 2 & 1 & 0 & 1 & 0 \\ 1 & 2 & 3 & 1 & 0 & 0 & 1 \\ \end{array} \right] \underrightarrow{消元、化简} \left[ \begin{array} {c c c c|c c c} 1 & 0 & 1 & 1 & -1 & 2 & 0 \\ 0 & 1 & 1 & 0 & 1 & -1 & 0 \\ 0 & 0 & 0 & 0 & -1 & 0 & 1 \\ \end{array} \right] =\left[\begin{array}{c|c}R_{m \times n} & E_{m \times m}\end{array}\right] \]

\[EA= \begin{bmatrix} -1 & 2 & 0 \\ 1 & -1 & 0 \\ -1 & 0 & 1 \\ \end{bmatrix} \cdot \begin{bmatrix} 1 & 2 & 3 & 1 \\ 1 & 1 & 2 & 1 \\ 1 & 2 & 3 & 1 \\ \end{bmatrix} = \begin{bmatrix} 1 & 0 & 1 & 1 \\ 0 & 1 & 1 & 0 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix} =R \]

很明显,式中\(E\)的最后一行对\(A\)的行做线性组合后,得到\(R\)的最后一行,即\(0\)向量,也就是\(y^TA=0^T\)。

最后,引入矩阵空间的概念,矩阵可以同向量一样,做求和、数乘。

举例,设所有\(3 \times 3\)矩阵组成的矩阵空间为\(M\)。则上三角矩阵、对称矩阵、对角矩阵(前两者的交集)。

观察一下对角矩阵,如果取
\( \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \quad \begin{bmatrix} 1 & 0 & 0 \\ 0 & 3 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \quad \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 7 \\ \end{bmatrix} \)
,可以发现,任何三阶对角矩阵均可用这三个矩阵的线性组合生成,因此,他们生成了三阶对角矩阵空间,即这三个矩阵是三阶对角矩阵空间的一组基。

第十一讲:矩阵空间、秩1矩阵和小世界图

矩阵空间

接上一讲,使用\(3 \times 3\)矩阵举例,其矩阵空间记为\(M\)。

则\(M\)的一组基为:
\( \begin{bmatrix} 1 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 1 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 1 \\ 0 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \\ \begin{bmatrix} 0 & 0 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 1 \\ 0 & 0 & 0 \\ \end{bmatrix} \\ \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 1 & 0 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 1 & 0 \\ \end{bmatrix} \begin{bmatrix} 0 & 0 & 0 \\ 0 & 0 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \\ \)

易得,\(dim M=9\)。

所以可以得出,对上讲中的三阶对称矩阵空间有\(dim S=6\)、上三角矩阵空间有\(dim U=6\)、对角矩阵空间有\(dim D=3\)

求并(intersect):\(S \cup U=D, dim(S \cup U)=9\);

求交(sum):\(S \cap U=M, dim(S \cap U)=3\);

可以看出:\(dim S + dim U=12=dim(S \cup U) + dim(S \cap U)\)。

另一个例子来自微分方程:

\(\frac{d^2y}{dx^2}+y=0\),即\(y''+y=0\)

方程的解有:\(y=\cos{x}, \quad y=\sin{x}, \quad y=e^{ix}, \quad y=e^{-ix}\)等等(\(e^{ix}=\cos{x}+i\sin{x}, \quad e^{-ix}=\cos{x}-i\sin{x}\))

而该方程的所有解:\(y=c_1 \cos{x} + c_2 \sin{x}\)。

所以,该方程的零空间的一组基为\(\cos{x}, \sin{x}\),零空间的维数为\(2\)。同理\(e^{ix}, e^{-ix}\)可以作为另一组基。

秩一矩阵

\(2 \times 3\)矩阵\(A=\begin{bmatrix}1&4&5\\2&8&10\end{bmatrix}=\begin{bmatrix}1\\2\end{bmatrix}\begin{bmatrix}1&4&5\end{bmatrix}\)。

且\(dimC(A)=1=dimC(A^T)\),所有的秩一矩阵都可以划为\(A=UV^T\)的形式,这里的\(U, V\)均为列向量。

秩一矩阵类似“积木”,可以搭建任何矩阵,如对于一个\(5 \times 17\)秩为\(4\)的矩阵,只需要\(4\)个秩一矩阵就可以组合出来。

令\(M\)代表所有\(5 \times 17\),\(M\)中所有秩\(4\)矩阵组成的集合并不是一个子空间,通常两个秩四矩阵相加,其结果并不是秩四矩阵。

现在,在\(\mathbb{R}^4\)空间中有向量\(v=\begin{bmatrix}v_1\\v_2\\v_3\\v_4\end{bmatrix}\),取\(\mathbb{R}^4\)中满足\(v_1+v_2+v_3+v_4=0\)的所有向量组成一个向量空间\(S\),则\(S\)是一个向量子空间。

易看出,不论是使用系数乘以该向量,或是用两个满足条件的向量相加,其结果仍然落在分量和为零的向量空间中。

求\(S\)的维数:

从另一个角度看,\(v_1+v_2+v_3+v_4=0\)等价于\(\begin{bmatrix}1&1&1&1\end{bmatrix}\begin{bmatrix}v_1\\v_2\\v_3\\v_4\end{bmatrix}=0\),则\(S\)就是\(A=\begin{bmatrix}1&1&1&1\end{bmatrix}\)的零空间。

\(rank(A)=1\),则对其零空间有\(rank(N(A))=n-r=3=dim N(A)\),则\(S\)的维数是\(3\)。

顺便看一下\(1 \times 4\)矩阵\(A\)的四个基本子空间:

行空间:\(dim C(A^T)=1\),其中的一组基是\(\begin{bmatrix}1\\1\\1\\1\end{bmatrix}\);

零空间:\(dim N(A)=3\),其中的一组基是\(\begin{bmatrix}-1\\1\\0\\0\end{bmatrix}\begin{bmatrix}-1\\0\\1\\0\end{bmatrix}\begin{bmatrix}-1\\0\\0\\1\end{bmatrix}\)

列空间:\(dim C(A)=1\),其中一组基是\(\begin{bmatrix}1\end{bmatrix}\),可以看出列空间就是整个\(\mathbb{R}^1\)空间。

左零空间:\(dim N(A^T)=0\),因为\(A\)转置后没有非零的\(v\)可以使\(Av=0\)成立,就是\(\begin{bmatrix}0\end{bmatrix}\)。

综上,\(dim C(A^T)+dim N(A)=4=n, dim C(A)+dim N(A^T)=1=m\)

小世界图

图(graph)由节点(node)与边(edge)组成。

假设,每个人是图中的一个节点,如果两个人为朋友关系,则在这两个人的节点间添加一条边,通常来说,从一个节点到另一个节点只需要不超过\(6\)步(即六条边)即可到达。

第十二讲:图和网络

图和网络

import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline

dg = nx.DiGraph()
dg.add_edges_from([(1,2), (2,3), (1,3), (1,4), (3,4)])
edge_labels = {(1, 2): 1, (1, 3): 3, (1, 4): 4, (2, 3): 2, (3, 4): 5}

pos = nx.spring_layout(dg)
nx.draw_networkx_edge_labels(dg,pos,edge_labels=edge_labels, font_size=16)
nx.draw_networkx_labels(dg, pos, font_size=20, font_color='w')
nx.draw(dg, pos, node_size=1500, node_color="gray")

png

该图由4个节点与5条边组成,

\[\begin{array}{c | c c c c} & node_1 & node_2 & node_3 & node_4 \\ \hline edge_1 & -1 & 1 & 0 & 0 \\ edge_2 & 0 & -1 & 1 & 0 \\ edge_3 & -1 & 0 & 1 & 0 \\ edge_4 & -1 & 0 & 0 & 1 \\ edge_5 & 0 & 0 & -1 & 1 \\ \end{array} \]

我们可以建立\(5 \times 4\)矩阵
\( A= \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ -1 & 0 & 1 & 0 \\ -1 & 0 & 0 & 1 \\ 0 & 0 & -1 & 1 \\ \end{bmatrix} \)

观察前三行,易看出这三个行向量线性相关,也就是这三个向量可以形成回路(loop)。

现在,解\(Ax=0\):
\( Ax= \begin{bmatrix} -1 & 1 & 0 & 0 \\ 0 & -1 & 1 & 0 \\ -1 & 0 & 1 & 0 \\ -1 & 0 & 0 & 1 \\ 0 & 0 & -1 & 1 \\ \end{bmatrix} \begin{bmatrix} x_1\\x_2\\x_3\\x_4\\ \end{bmatrix} \)。

展开得到:
\(\begin{bmatrix}x_2-x_1 \\x_3-x_2 \\x_3-x_1 \\x_4-x_1 \\x_4-x_3 \\ \end{bmatrix}=\begin{bmatrix}0\\0\\0\\0\\0\\ \end{bmatrix}\)

引入矩阵的实际意义:将\(x=\begin{bmatrix}x_1 & x_2 & x_3 & x_4\end{bmatrix}\)设为各节点电势(Potential at the Nodes)。

则式子中的诸如\(x_2-x_1\)的元素,可以看做该边上的电势差(Potential Differences)。

容易看出其中一个解\(x=\begin{bmatrix}1\\1\\1\\1\end{bmatrix}\),即等电势情况,此时电势差为\(0\)。

化简\(A\)易得\(rank(A)=3\),所以其零空间维数应为\(n-r=4-3=1\),即\(\begin{bmatrix}1\\1\\1\\1\end{bmatrix}\)就是其零空间的一组基。

其零空间的物理意义为,当电位相等时,不存在电势差,图中无电流。

当我们把图中节点\(4\)接地后,节点\(4\)上的电势为\(0\),此时的
\( A= \begin{bmatrix} -1 & 1 & 0 \\ 0 & -1 & 1 \\ -1 & 0 & 1 \\ -1 & 0 & 0 \\ 0 & 0 & -1 \\ \end{bmatrix} \),各列线性无关,\(rank(A)=3\)。

现在看看\(A^Ty=0\)(这是应用数学里最常用的式子):

\(A^Ty=0=\begin{bmatrix}-1 & 0 & -1 & -1 & 0 \\1 & -1 & 0 & 0 & 0 \\0 & 1 & 1 & 0 & -1 \\0 & 0 & 0 & 1 & 1 \\ \end{bmatrix}\begin{bmatrix}y_1\\y_2\\y_3\\y_4\\y_5\end{bmatrix}=\begin{bmatrix}0\\0\\0\\0\end{bmatrix}\),对于转置矩阵有\(dim N(A^T)=m-r=5-3=2\)。

接着说上文提到的的电势差,矩阵\(C\)将电势差与电流联系起来,电流与电势差的关系服从欧姆定律:边上的电流值是电势差的倍数,这个倍数就是边的电导(conductance)即电阻(resistance)的倒数。

\( 电势差 \xrightarrow[欧姆定律]{矩阵C} 各边上的电流y_1, y_2, y_3, y_4, y_5 \),而\(A^Ty=0\)的另一个名字叫做“基尔霍夫电流定律”(Kirchoff's Law, 简称KCL)。

再把图拿下来观察:

import networkx as nx
import matplotlib.pyplot as plt
%matplotlib inline

dg = nx.DiGraph()
dg.add_edges_from([(1,2), (2,3), (1,3), (1,4), (3,4)])
edge_labels = {(1, 2): 1, (1, 3): 3, (1, 4): 4, (2, 3): 2, (3, 4): 5}

pos = nx.spring_layout(dg)
nx.draw_networkx_edge_labels(dg,pos,edge_labels=edge_labels, font_size=16)
nx.draw_networkx_labels(dg, pos, font_size=20, font_color='w')
nx.draw(dg, pos, node_size=1500, node_color="gray")

png

将\(A^Ty=0\)中的方程列出来:
\( \left\{ \begin{aligned} y_1 + y_3 + y_4 &= 0 \\ y_1 - y_2 &= 0 \\ y_2 + y_3 - y_5 &= 0 \\ y_4 - y_5 &= 0 \\ \end{aligned} \right. \)

对比看\(A^Ty=0\)的第一个方程,\(-y_1-y_3-y_4=0\),可以看出这个方程是关于节点\(1\)上的电流的,方程指出节点\(1\)上的电流和为零,基尔霍夫定律是一个平衡方程、守恒定律,它说明了流入等于流出,电荷不会在节点上累积。

对于\(A^T\),有上文得出其零空间的维数是\(2\),则零空间的基应该有两个向量。

  • 现在假设\(y_1=1\),也就是令\(1\)安培的电流在边\(1\)上流动;
  • 由图看出\(y_2\)也应该为\(1\);
  • 再令\(y_3=-1\),也就是让\(1\)安培的电流流回节点\(1\);
  • 令\(y_4=y_5=0\);

得到一个符合KCL的向量\(\begin{bmatrix}1\\1\\-1\\0\\0\end{bmatrix}\),代回方程组发现此向量即为一个解,这个解发生在节点\(1,2,3\)组成的回路中,该解即为零空间的一个基。

根据上一个基的经验,可以利用\(1,3,4\)组成的节点求另一个基:

  • 令\(y_1=y_2=0\);
  • 令\(y_3=1\);
  • 由图得\(y_5=1\);
  • 令\(y_4=-1\);

得到令一个符合KCL的向量\(\begin{bmatrix}0\\0\\1\\-1\\1\end{bmatrix}\),代回方程可知此为另一个解。

则\(N(A^T)\)的一组基为\(\begin{bmatrix}1\\1\\-1\\0\\0\end{bmatrix}\quad\begin{bmatrix}0\\0\\1\\-1\\1\end{bmatrix}\)。

看图,利用节点\(1,2,3,4\)组成的大回路(即边\(1,2,5,4\)):

  • 令\(y_3=0\);
  • 令\(y_1=1\);
  • 则由图得\(y_2=1, y_5=1, y_4=-1\);

得到符合KCL的向量\(\begin{bmatrix}1\\1\\0\\-1\\1\end{bmatrix}\),易看出此向量为求得的两个基之和。

接下来观察\(A\)的行空间,即\(A^T\)的列空间,方便起见我们直接计算
\( A^T= \begin{bmatrix} -1 & 0 & -1 & -1 & 0 \\ 1 & -1 & 0 & 0 & 0 \\ 0 & 1 & 1 & 0 & -1 \\ 0 & 0 & 0 & 1 & 1 \\ \end{bmatrix} \)
的列空间。

易从基的第一个向量看出前三列\(A^T\)的线性相关,则\(A^T\)的主列为第\(1,2,4\)列,对应在图中就是边\(1,2,4\),可以发现这三条边没有组成回路,则在这里可以说线性无关等价于没有回路。由\(4\)个节点与\(3\)条边组成的图没有回路,就表明\(A^T\)的对应列向量线性无关,也就是节点数减一(\(rank=nodes-1\))条边线性无关。另外,没有回路的图也叫作树(Tree)。

再看左零空间的维数公式:\(dim N(A^T)=m-r\),左零空间的维数就是相互无关的回路的数量,于是得到\(loops=edges-(nodes-1)\),整理得:

\[nodes-edges+loops=1 \]

此等式对任何图均有效,任何图都有此拓扑性质,这就是著名的欧拉公式(Euler's Formula)。\(零维(节点)-一维(边)+二维(回路)=1\)便于记忆。

总结:

  • 将电势记为\(e\),则在引入电势的第一步中,有\(e=Ax\);
  • 电势差导致电流产生,\(y=Ce\);
  • 电流满足基尔霍夫定律方程,\(A^Ty=0\);

这些是在无电源情况下的方程。

电源可以通过:在边上加电池(电压源),或在节点上加外部电流 两种方式接入。

如果在边上加电池,会体现在\(e=Ax\)中;如果在节点上加电流,会体现在\(A^Ty=f\)中,\(f\)向量就是外部电流。

将以上三个等式连起来得到\(A^TCAx=f\)。另外,最后一个方程是一个平衡方程,还需要注意的是,方程仅描述平衡状态,方程并不考虑时间。最后,\(A^TA\)是一个对称矩阵。

第十三讲:复习一

  1. 令\(u, v, w\)是\(\mathbb{R}^7\)空间内的非零向量:则\(u, v, w\)生成的向量空间可能是\(1, 2, 3\)维的。

  2. 有一个\(5 \times 3\)矩阵\(U\),该矩阵为阶梯矩阵(echelon form),有\(3\)个主元:则能够得到该矩阵的秩为\(3\),即三列向量线性无关,不存在非零向量使得三列的线性组合为零向量,所以该矩阵的零空间应为\(\begin{bmatrix}0\\0\\0\\ \end{bmatrix}\)。

  3. 接上一问,有一个\(10 \times 3\)矩阵\(B=\begin{bmatrix}U\\2U \end{bmatrix}\),则化为最简形式(阶梯矩阵)应为\(\begin{bmatrix}U\\0 \end{bmatrix}\),\(rank(B)=3\)。

  4. 接上一问,有一个矩阵型为\(C=\begin{bmatrix}U & U \\ U & 0 \end{bmatrix}\),则化为最简形式应为\(\begin{bmatrix}U & 0 \\ 0 & U \end{bmatrix}\),\(rank(C)=6\)。矩阵\(C\)为\(10 \times 6\)矩阵,\(dim N(C^T)=m-r=4\)。

  5. 有\(Ax=\begin{bmatrix}2\\4\\2\\ \end{bmatrix}\),并且\(x=\begin{bmatrix}2\\0\\0\\ \end{bmatrix}+c\begin{bmatrix}1\\1\\0\\ \end{bmatrix}+d\begin{bmatrix}0\\0\\1 \end{bmatrix}\),则等号右侧\(b\)向量的列数应为\(A\)的行数,且解的列数应为\(A\)的列数,所以\(A\)是一个\(3 \times 3\)矩阵。从解的结构可知自由元有两个,则\(rank(A)=1, dim N(A)=2\)。从解的第一个向量得出,矩阵\(A\)的第一列是\(\begin{bmatrix}1\\2\\1 \end{bmatrix}\);解的第二个向量在零空间中,说明第二列与第一列符号相反,所以矩阵第二列是\(\begin{bmatrix}-1\\-2\\-1 \end{bmatrix}\);解的第三个向量在零空间中,说明第三列为零向量;综上,\(A=\begin{bmatrix}1 & -1 & 0\\ 2 & -2 & 0\\ 1 & -1 & 0\\ \end{bmatrix}\)。

  6. 接上一问,如何使得\(Ax=b\)有解?即使\(b\)在矩阵\(A\)的列空间中。易知\(A\)的列空间型为\(c\begin{bmatrix}1\\2\\1\\ \end{bmatrix}\),所以使\(b\)为向量\(\begin{bmatrix}1\\2\\1\\ \end{bmatrix}\)的倍数即可。

  7. 有一方阵的零空间中只有零向量,则其左零空间也只有零向量。

  8. 由\(5 \times 5\)矩阵组成的矩阵空间,其中的可逆矩阵能否构成子空间?两个可逆矩阵相加的结果并不一定可逆,况且零矩阵本身并不包含在可逆矩阵中。其中的奇异矩阵(singular matrix,非可逆矩阵)也不能组成子空间,因为其相加的结果并不一定能够保持不可逆。

  9. 如果\(B^2=0\),并不能得出\(B=0\),反例:\(\begin{bmatrix}0 & 1\\ 0 & 0\\ \end{bmatrix}\),这个矩阵经常会被用作反例

  10. \(n \times n\)矩阵的列向量线性无关,则是否\(\forall b, Ax=b\)有解?是的,因为方阵各列线性无关,所以方阵满秩,它是可逆矩阵,肯定有解。


  11. \( B= \begin{bmatrix} 1 & 1 & 0 \\ 0 & 1 & 0 \\ 1 & 0 & 1 \\ \end{bmatrix} \begin{bmatrix} 1 & 0 & -1 & 2 \\ 0 & 1 & 1 & -1 \\ 0 & 0 & 0 & 0 \\ \end{bmatrix} \),在不解出\(B\)的情况下,求\(B\)的零空间。可以观察得出前一个矩阵是可逆矩阵,设\(B=CD\),则求零空间\(Bx=0, CDx=0\),而\(C\)是可逆矩阵,则等式两侧同时乘以\(C^{-1}\)有\(C^{-1}CDx=Dx=0\),所以当\(C\)为可逆矩阵时,有\(N(CD)=N(D)\),即左乘逆矩阵不会改变零空间。本题转化为求\(D\)的零空间,\(N(B)\)的基为
    \(\begin{bmatrix}-F\\I\\ \end{bmatrix}\),也就是\(\begin{bmatrix}1\\-1\\1\\0 \end{bmatrix}\quad\begin{bmatrix}-2\\1\\0\\1\end{bmatrix}\)

  12. 接上题,求\(Bx=\begin{bmatrix}1\\0\\1\\ \end{bmatrix}\)的通解。观察\(B=CD\),易得\(B\)矩阵的第一列为\(\begin{bmatrix}1\\0\\1\\ \end{bmatrix}\),恰好与等式右边一样,所以\(\begin{bmatrix}1\\0\\0\\0\\ \end{bmatrix}\)可以作为通解中的特解部分,再利用上一问中求得的零空间的基,得到通解
    \( x= \begin{bmatrix}1\\0\\0\\0\\ \end{bmatrix}+ c_1\begin{bmatrix}1\\-1\\1\\0 \end{bmatrix}+c_2\begin{bmatrix}-2\\1\\0\\1\end{bmatrix} \)

  13. 对于任意方阵,其行空间等于列空间?不成立,可以使用\(\begin{bmatrix}0 & 1\\ 0 & 0\\ \end{bmatrix}\)作为反例,其行空间是向量\(\begin{bmatrix}0 & 1\\ \end{bmatrix}\)的任意倍数,而列空间是向量\(\begin{bmatrix}1 & 0\\ \end{bmatrix}\)的任意倍数。但是如果该方阵是对称矩阵,则成立。

  14. \(A\)与\(-A\)的四个基本子空间相同。

  15. 如果\(A, B\)的四个基本子空间相同,则\(A, B\)互为倍数关系。不成立,如任意两个\(n\)阶可逆矩阵,他们的列空间、行空间均为\(\mathbb{R}^n\),他们的零空间、左零空间都只有零向量,所以他们的四个基本子空间相同,但是并不一定具有倍数关系。

  16. 如果交换矩阵的某两行,则其行空间与零空间保持不变,而列空间与左零空间均已改变。

  17. 为什么向量\(v=\begin{bmatrix}1\\2\\3 \end{bmatrix}\)不能同时出现在矩阵的行空间与零空间中?令\(A\begin{bmatrix}1\\2\\3 \end{bmatrix}=\begin{bmatrix}0\\0\\0 \end{bmatrix}\),很明显矩阵\(A\)中不能出现值为\(\begin{bmatrix}1 & 2 & 3 \end{bmatrix}\)的行向量,否则无法形成等式右侧的零向量。这里引入正交(perpendicular)的概念,矩阵的行空间与零空间正交,它们仅共享零向量。

第十四讲:正交向量与子空间

在四个基本子空间中,提到对于秩为r的\(m \times n\)矩阵,其行空间(\(dim C(A^T)=r\))与零空间(\(dim N(A)=n-r\))同属于\(\mathbb{R}^n\)空间,其列空间(\(dim C(A)=r\))与左零空间(\(dim N(A^T)\)=m-r)同属于\(\mathbb{R}^m\)空间。

对于向量\(x, y\),当\(x^T \cdot y=0\)即\(x_1y_1+x_2y_x+\cdots+x_ny_n=0\)时,有向量\(x, y\)正交(vector orthogonal)。

毕达哥拉斯定理(Pythagorean theorem)中提到,直角三角形的三条边满足:

\[\begin{aligned} \left\|\overrightarrow{x}\right\|^2+\left\|\overrightarrow{y}\right\|^2 &= \left\|\overrightarrow{x+y}\right\|^2 \\ x^Tx+y^Ty &= (x+y)^T(x+y) \\ x^Tx+y^Ty &= x^Tx+y^Ty+x^Ty+y^Tx \\ 0 &= x^Ty+y^Tx \qquad 对于向量点乘,x^Ty=y^Tx \\ 0 &= 2x^Ty \\ x^Ty &=0 \end{aligned} \]

由此得出,两正交向量的点积为\(0\)。另外,\(x, y\)可以为\(0\)向量,由于\(0\)向量与任意向量的点积均为零,所以\(0\)向量与任意向量正交。

举个例子:
\(x=\begin{bmatrix}1\\2\\3\end{bmatrix}, y=\begin{bmatrix}2\\-1\\0\end{bmatrix}, x+y=\begin{bmatrix}3\\1\\3\end{bmatrix}\),有\(\left\| \overrightarrow{x} \right\|^2=14, \left\| \overrightarrow{y} \right\|^2=5, \left\| \overrightarrow{x+y} \right\|^2=19\),而\(x^Ty=1\times2+2\times (-1)+3\times0=0\)。

向量\(S\)与向量\(T\)正交,则意味着\(S\)中的每一个向量都与\(T\)中的每一个向量正交。若两个子空间正交,则它们一定不会相交于某个非零向量。

现在观察行空间与零空间,零空间是\(Ax=0\)的解,即\(x\)若在零空间,则\(Ax\)为零向量;

而对于行空间,有 \( \begin{bmatrix}row_1\\row_2\\ \vdots \\row_m\end{bmatrix} \Bigg[x\Bigg]= \begin{bmatrix}0\\0\\ \vdots\\ 0\end{bmatrix} \),可以看出:

\[\begin{bmatrix}row_1\end{bmatrix}\Bigg[x\Bigg]=0 \\ \begin{bmatrix}row_2\end{bmatrix}\Bigg[x\Bigg]=0 \\ \vdots \\ \begin{bmatrix}row_m\end{bmatrix}\Bigg[x\Bigg]=0 \\ \]

所以这个等式告诉我们,\(x\)同\(A\)中的所有行正交;

接下来还验证\(x\)是否与\(A\)中各行的线性组合正交,
\( \begin{cases} c_1(row_1)^Tx=0 \\ c_2(row_2)^Tx=0 \\ \vdots \\ c_n(row_m)^Tx=0 \\ \end{cases} \),各式相加得\((c_1row_1+c_2row_2+\cdots+c_nrow_m)^Tx=0\),得证。

我们可以说,行空间与零空间将\(\mathbb{R}^n\)分割为两个正交的子空间,同样的,列空间与左零空间将\(\mathbb{R}^m\)分割为两个正交的子空间。

举例,\(A=\begin{bmatrix}1&2&5\\2&4&10\end{bmatrix}\),则可知\(m=2, n=3, rank(A)=1, dim N(A)=2\)。

有\(Ax=\begin{bmatrix}1&2&5\\2&4&10\end{bmatrix}\begin{bmatrix}x_1\\x_2\\x_3\end{bmatrix}=\begin{bmatrix}0\\0\end{bmatrix}\),解得零空间的一组基\(x_1=\begin{bmatrix}-2\\1\\0\end{bmatrix}\quad x_2=\begin{bmatrix}-5\\0\\1\end{bmatrix}\)。

而行空间的一组基为\(r=\begin{bmatrix}1\\2\\5\end{bmatrix}\),零空间与行空间正交,在本例中行空间也是零空间的法向量。

补充一点,我们把行空间与零空间称为\(n\)维空间里的正交补(orthogonal complement),即零空间包含了所有与行空间正交的向量;同理列空间与左零空间为\(m\)维空间里的正交补,即左零空间包含了所有与零空间正交的向量。

接下来看长方矩阵,\(m>n\)。对于这种矩阵,\(Ax=b\)中经常混入一些包含“坏数据”的方程,虽然可以通过筛选的方法去掉一些我们不希望看到的方程,但是这并不是一个稳妥的方法。

于是,我们引入一个重要的矩阵:\(A^TA\)。这是一个\(n \times m\)矩阵点乘\(m \times n\)矩阵,其结果是一个\(n \times n\)矩阵,应该注意的是,这也是一个对称矩阵,证明如下:

\[(A^TA)^T=A^T(A^T)^T=A^TA \]

这一章节的核心就是\(A^TAx=A^Tb\),这个变换可以将“坏方程组”变为“好方程组”。

举例,有\(\begin{bmatrix}1&1\\1&2\\1&5\end{bmatrix}\begin{bmatrix}x_1\\x_2\end{bmatrix}=\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\),只有当\(\begin{bmatrix}b_1\\b_2\\b_3\end{bmatrix}\)在矩阵的列空间时,方程才有解。

现在来看\(\begin{bmatrix}1&1&1\\1&2&5\end{bmatrix}\begin{bmatrix}1&1\\1&2\\1&5\end{bmatrix}=\begin{bmatrix}3&8\\8&30\end{bmatrix}\),可以看出此例中\(A^TA\)是可逆的。然而并非所有\(A^TA\)都是可逆的,如\(\begin{bmatrix}1&1&1\\3&3&3\end{bmatrix}\begin{bmatrix}1&3\\1&3\\1&3\end{bmatrix}=\begin{bmatrix}3&9\\9&27\end{bmatrix}\)(注意到这是两个秩一矩阵相乘,其结果秩不会大于一)

先给出结论:

\[N(A^TA)=N(A)\\ rank(A^TA)=rank(A)\\ A^TA可逆当且仅当N(A)为零向量,即A的列线性无关\\ \]

下一讲涉及投影,很重要。

第十五讲:子空间投影

从\(\mathbb{R}^2\)空间讲起,有向量\(a, b\),做\(b\)在\(a\)上的投影\(p\),如图:

%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.style.use("seaborn-dark-palette")

fig = plt.figure()
plt.axis('equal')
plt.axis([-7, 7, -6, 6])
plt.arrow(-4, -1, 8, 2, head_width=0.3, head_length=0.5, color='r', length_includes_head=True)
plt.arrow(0, 0, 2, 4, head_width=0.3, head_length=0.5, color='b', length_includes_head=True)
plt.arrow(0, 0, 48/17, 12/17, head_width=0.3, head_length=0.5, color='gray', length_includes_head=True)
plt.arrow(48/17, 12/17, 2-48/17, 4-12/17, head_width=0.3, head_length=0.5, color='g', length_includes_head=True)
# plt.plot([48/17], [12/17], 'o')
# y=1/4x
# y=-4x+12
# x=48/17
# y=12/17
plt.annotate('b', xy=(1, 2), xytext=(-30, 15), textcoords='offset points', size=20, arrowprops=dict(arrowstyle="->"))
plt.annotate('a', xy=(-1, -0.25), xytext=(15, -30), textcoords='offset points', size=20, arrowprops=dict(arrowstyle="->"))
plt.annotate('e=b-p', xy=(2.5, 2), xytext=(30, 0), textcoords='offset points', size=20, arrowprops=dict(arrowstyle="->"))
plt.annotate('p=xa', xy=(2, 0.5), xytext=(-20, -40), textcoords='offset points', size=20, arrowprops=dict(arrowstyle="->"))
plt.grid()

png

plt.close(fig)

从图中我们知道,向量\(e\)就像是向量\(b, p\)之间的误差,\(e=b-p, e \bot p\)。\(p\)在\(a\)上,有\(\underline{p=ax}\)。

所以有\(a^Te=a^T(b-p)=a^T(b-ax)=0\)。关于正交的最重要的方程:

\[a^T(b-xa)=0 \\ \underline{xa^Ta=a^Tb} \\ \underline{x=\frac{a^Tb}{a^Ta}} \\ p=a\frac{a^Tb}{a^Ta} \]

从上面的式子可以看出,如果将\(b\)变为\(2b\)则\(p\)也会翻倍,如果将\(a\)变为\(2a\)则\(p\)不变。

设投影矩阵为\(P\),则可以说投影矩阵作用与某个向量后,得到其投影向量,\(projection_p=Pb\)。

易看出\(\underline{P=\frac{aa^T}{a^Ta}}\),若\(a\)是\(n\)维列向量,则\(P\)是一个\(n \times n\)矩阵。

观察投影矩阵\(P\)的列空间,\(C(P)\)是一条通过\(a\)的直线,而\(rank(P)=1\)(一列乘以一行:\(aa^T\),而这一列向量\(a\)是该矩阵的基)。

投影矩阵的性质:

  • \(\underline{P=P^T}\),投影矩阵是一个对称矩阵。
  • 如果对一个向量做两次投影,即\(PPb\),则其结果仍然与\(Pb\)相同,也就是\(\underline{P^2=P}\)。

为什么我们需要投影?因为就像上一讲中提到的,有些时候\(Ax=b\)无解,我们只能求出最接近的那个解。

\(Ax\)总是在\(A\)的列空间中,而\(b\)却不一定,这是问题所在,所以我们可以将\(b\)变为\(A\)的列空间中最接近的那个向量,即将无解的\(Ax=b\)变为求有解的\(A\hat{x}=p\)(\(p\)是\(b\)在\(A\)的列空间中的投影,\(\hat{x}\)不再是那个不存在的\(x\),而是最接近的解)。

现在来看\(\mathbb{R}^3\)中的情形,将向量\(b\)投影在平面\(A\)上。同样的,\(p\)是向量\(b\)在平面\(A\)上的投影,\(e\)是垂直于平面\(A\)的向量,即\(b\)在平面\(A\)法方向的分量。
设平面\(A\)的一组基为\(a_1, a_2\),则投影向量\(p=\hat{x_1}a_1+\hat{x_2}a_2\),我们更倾向于写作\(p=A\hat{x}\),这里如果我们求出\(\hat{x}\),则该解就是无解方程组最近似的解。

现在问题的关键在于找\(e=b-A\hat{x}\),使它垂直于平面,因此我们得到两个方程
\( \begin{cases}a_1^T(b-A\hat{x})=0\\ a_2^T(b-A\hat{x})=0\end{cases} \),将方程组写成矩阵形式
\( \begin{bmatrix}a_1^T\\a_2^T\end{bmatrix} (b-A\hat{x})= \begin{bmatrix}0\\0\end{bmatrix} \),即\(A^T(b-A\hat{x})=0\)。

比较该方程与\(\mathbb{R}^2\)中的投影方程,发现只是向量\(a\)变为矩阵\(A\)而已,本质上就是\(A^Te=0\)。所以,\(e\)在\(A^T\)的零空间中(\(e\in N(A^T)\)),从前面几讲我们知道,左零空间\(\bot\)列空间,则有\(e\bot C(A)\),与我们设想的一致。

再化简方程得\(A^TAx=A^Tb\),比较在\(\mathbb{R}^2\)中的情形,\(a^Ta\)是一个数字而\(A^TA\)是一个\(n\)阶方阵,而解出的\(x\)可以看做两个数字的比值。现在在\(\mathbb{R}^3\)中,我们需要再次考虑:什么是\(\hat{x}\)?投影是什么?投影矩阵又是什么?

  • 第一个问题:\(\hat x=(A^TA)^{-1}A^Tb\);
  • 第二个问题:\(p=A\hat x=\underline{A(A^TA)^{-1}A^T}b\),回忆在\(\mathbb{R}^2\)中的情形,下划线部分就是原来的\(\frac{aa^T}{a^Ta}\);
  • 第三个问题:易看出投影矩阵就是下划线部分\(P=A(A^TA)^{-1}A^T\)。

这里还需要注意一个问题,\(P=A(A^TA)^{-1}A^T\)是不能继续化简为\(P=AA^{-1}(A^T)^{-1}A^T=I\)的,因为这里的\(A\)并不是一个可逆方阵。
也可以换一种思路,如果\(A\)是一个\(n\)阶可逆方阵,则\(A\)的列空间是整个\(\mathbb{R}^n\)空间,于是\(b\)在\(\mathbb{R}^n\)上的投影矩阵确实变为了\(I\),因为\(b\)已经在空间中了,其投影不再改变。

再来看投影矩阵\(P\)的性质:

  • \(P=P^T\):有
    \( \left[A(A^TA)^{-1}A^T\right]^T=A\left[(A^TA)^{-1}\right]^TA^T \),而\((A^TA)\)是对称的,所以其逆也是对称的,所以有\(A((A^TA)^{-1})^TA^T=A(A^TA)^{-1}A^T\),得证。
  • \(P^2=P\):有
    \( \left[A(A^TA)^{-1}A^T\right]\left[A(A^TA)^{-1}A^T\right]=A(A^TA)^{-1}\left[(A^TA)(A^TA)^{-1}\right]A^T=A(A^TA)^{-1}A^T \),得证。

最小二乘法

接下看看投影的经典应用案例:最小二乘法拟合直线(least squares fitting by a line)。

我们需要找到距离图中三个点 \((1, 1), (2, 2), (3, 2)\) 偏差最小的直线:\(b=C+Dt\)。

plt.style.use("seaborn-dark-palette")

fig = plt.figure()
plt.axis('equal')
plt.axis([-1, 4, -1, 3])
plt.axhline(y=0, c='black', lw='2')
plt.axvline(x=0, c='black', lw='2')

plt.plot(1, 1, 'o', c='r')
plt.plot(2, 2, 'o', c='r')
plt.plot(3, 2, 'o', c='r')

plt.annotate('(1, 1)', xy=(1, 1), xytext=(-40, 20), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('(2, 2)', xy=(2, 2), xytext=(-60, -5), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('(3, 2)', xy=(3, 2), xytext=(-18, 20), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))

plt.grid()

png

plt.close(fig)

根据条件可以得到方程组
\( \begin{cases} C+D&=1 \\ C+2D&=2 \\ C+3D&=2 \\ \end{cases} \),写作矩阵形式
\(\begin{bmatrix}1&1 \\1&2 \\1&3\\\end{bmatrix}\begin{bmatrix}C\\D\\\end{bmatrix}=\begin{bmatrix}1\\2\\2\\\end{bmatrix}\),也就是我们的\(Ax=b\),很明显方程组无解。但是\(A^TA\hat x=A^Tb\)有解,于是我们将原是两边同时乘以\(A^T\)后得到的新方程组是有解的,\(A^TA\hat x=A^Tb\)也是最小二乘法的核心方程。

下一讲将进行最小二乘法的验算。

第十六讲:投影矩阵和最小二乘

上一讲中,我们知道了投影矩阵\(P=A(A^TA)^{-1}A^T\),\(Pb\)将会把向量投影在\(A\)的列空间中。

举两个极端的例子:

  • 如果\(b\in C(A)\),则\(Pb=b\);
  • 如果\(b\bot C(A)\),则\(Pb=0\)。

一般情况下,\(b\)将会有一个垂直于\(A\)的分量,有一个在\(A\)列空间中的分量,投影的作用就是去掉垂直分量而保留列空间中的分量。

在第一个极端情况中,如果\(b\in C(A)\)则有\(b=Ax\)。带入投影矩阵\(p=Pb=A(A^TA)^{-1}A^TAx=Ax\),得证。

在第二个极端情况中,如果\(b\bot C(A)\)则有\(b\in N(A^T)\),即\(A^Tb=0\)。则\(p=Pb=A(A^TA)^{-1}A^Tb=0\),得证。

向量\(b\)投影后,有\(b=e+p, p=Pb, e=(I-P)b\),这里的\(p\)是\(b\)在\(C(A)\)中的分量,而\(e\)是\(b\)在\(N(A^T)\)中的分量。

回到上一讲最后提到的例题:

我们需要找到距离图中三个点 \((1, 1), (2, 2), (3, 2)\) 偏差最小的直线:\(y=C+Dt\)。

%matplotlib inline
import matplotlib.pyplot as plt
from sklearn import linear_model
import numpy as np
import pandas as pd
import seaborn as sns

x = np.array([1, 2, 3]).reshape((-1,1))
y = np.array([1, 2, 2]).reshape((-1,1))
predict_line = np.array([-1, 4]).reshape((-1,1))

regr = linear_model.LinearRegression()
regr.fit(x, y)
ey = regr.predict(x)

fig = plt.figure()
plt.axis('equal')
plt.axhline(y=0, c='black')
plt.axvline(x=0, c='black')

plt.scatter(x, y, c='r')
plt.scatter(x, regr.predict(x), s=20, c='b')
plt.plot(predict_line, regr.predict(predict_line), c='g', lw='1')
[ plt.plot([x[i], x[i]], [y[i], ey[i]], 'r', lw='1') for i in range(len(x))]

plt.annotate('(1, 1)', xy=(1, 1), xytext=(-15, -30), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('(2, 2)', xy=(2, 2), xytext=(-60, -5), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('(3, 2)', xy=(3, 2), xytext=(-15, -30), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))

plt.annotate('$e_1$', color='r', xy=(1, 1), xytext=(0, 2), textcoords='offset points', size=20)
plt.annotate('$e_2$', color='r', xy=(2, 2), xytext=(0, -15), textcoords='offset points', size=20)
plt.annotate('$e_3$', color='r', xy=(3, 2), xytext=(0, 1), textcoords='offset points', size=20)

plt.annotate('$p_1$', xy=(1, 7/6), color='b', xytext=(-7, 30), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('$p_2$', xy=(2, 5/3), color='b', xytext=(-7, -30), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.annotate('$p_3$', xy=(3, 13/6), color='b', xytext=(-7, 30), textcoords='offset points', size=14, arrowprops=dict(arrowstyle="->"))
plt.draw()

png

plt.close(fig)

根据条件可以得到方程组
\( \begin{cases} C+D&=1 \\ C+2D&=2 \\ C+3D&=2 \\ \end{cases} \),写作矩阵形式
\(\begin{bmatrix}1&1 \\1&2 \\1&3\\\end{bmatrix}\begin{bmatrix}C\\D\\\end{bmatrix}=\begin{bmatrix}1\\2\\2\\\end{bmatrix}\),也就是我们的\(Ax=b\),很明显方程组无解。

我们需要在\(b\)的三个分量上都增加某个误差\(e\),使得三点能够共线,同时使得\(e_1^2+e_2^2+e_3^2\)最小,找到拥有最小平方和的解(即最小二乘),即\(\left\|Ax-b\right\|^2=\left\|e\right\|^2\)最小。此时向量\(b\)变为向量\(p=\begin{bmatrix}p_1\\p_2\\p_3\end{bmatrix}\\\)(在方程组有解的情况下,\(Ax-b=0\),即\(b\)在\(A\)的列空间中,误差\(e\)为零。)我们现在做的运算也称作线性回归(linear regression),使用误差的平方和作为测量总误差的标准。

注:如果有另一个点,如\((0, 100)\),在本例中该点明显距离别的点很远,最小二乘将很容易被离群的点影响,通常使用最小二乘时会去掉明显离群的点。

现在我们尝试解出\(\hat x=\begin{bmatrix}\hat C\\ \hat D\end{bmatrix}\)与\(p=\begin{bmatrix}p_1\\p_2\\p_3\end{bmatrix}\)。

\[A^TA\hat x=A^Tb\\ A^TA= \begin{bmatrix}3&6\\6&14\end{bmatrix}\qquad A^Tb= \begin{bmatrix}5\\11\end{bmatrix}\\ \begin{bmatrix}3&6\\6&14\end{bmatrix} \begin{bmatrix}\hat C\\\hat D\end{bmatrix}= \begin{bmatrix}5\\11\end{bmatrix}\\ \]

写作方程形式为\(\begin{cases}3\hat C+16\hat D&=5\\6\hat C+14\hat D&=11\\\end{cases}\),也称作正规方程组(normal equations)。

回顾前面提到的“使得误差最小”的条件,\(e_1^2+e_2^2+e_3^2=(C+D-1)^2+(C+2D-2)^2+(C+3D-2)^2\),使该式取最小值,如果使用微积分方法,则需要对该式的两个变量\(C, D\)分别求偏导数,再令求得的偏导式为零即可,正是我们刚才求得的正规方程组。(正规方程组中的第一个方程是对\(C\)求偏导的结果,第二个方程式对\(D\)求偏导的结果,无论使用哪一种方法都会得到这个方程组。)

解方程得\(\hat C=\frac{2}{3}, \hat D=\frac{1}{2}\),则“最佳直线”为\(y=\frac{2}{3}+\frac{1}{2}t\),带回原方程组解得\(p_1=\frac{7}{6}, p_2=\frac{5}{3}, p_3=\frac{13}{6}\),即\(e_1=-\frac{1}{6}, e_2=\frac{1}{3}, e_3=-\frac{1}{6}\)

于是我们得到\(p=\begin{bmatrix}\frac{7}{6}\\\frac{5}{3}\\\frac{13}{6}\end{bmatrix}, e=\begin{bmatrix}-\frac{1}{6}\\\frac{1}{3}\\-\frac{1}{6}\end{bmatrix}\),易看出\(b=p+e\),同时我们发现\(p\cdot e=0\)即\(p\bot e\)。

误差向量\(e\)不仅垂直于投影向量\(p\),它同时垂直于列空间,如 \(\begin{bmatrix}1\\1\\1\end{bmatrix}, \begin{bmatrix}1\\2\\3\end{bmatrix}\)。

接下来我们观察\(A^TA\),如果\(A\)的各列线性无关,求证\(A^TA\)是可逆矩阵。

先假设\(A^TAx=0\),两边同时乘以\(x^T\)有\(x^TA^TAx=0\),即\((Ax)^T(Ax)=0\)。一个矩阵乘其转置结果为零,则这个矩阵也必须为零(\((Ax)^T(Ax)\)相当于\(Ax\)长度的平方)。则\(Ax=0\),结合题设中的“\(A\)的各列线性无关”,可知\(x=0\),也就是\(A^TA\)的零空间中有且只有零向量,得证。

我们再来看一种线性无关的特殊情况:互相垂直的单位向量一定是线性无关的。

  • 比如\(\begin{bmatrix}1\\0\\0\end{bmatrix}\begin{bmatrix}0\\1\\0\end{bmatrix}\begin{bmatrix}0\\0\\1\end{bmatrix}\),这三个正交单位向量也称作标准正交向量组(orthonormal vectors)。
  • 另一个例子\(\begin{bmatrix}\cos\theta\\\sin\theta\end{bmatrix}\begin{bmatrix}-\sin\theta\\\cos\theta\end{bmatrix}\)

下一讲研究标准正交向量组。

第十七讲:正交矩阵和Gram-Schmidt正交化法

标准正交矩阵

定义标准正交向量(orthonormal):\(q_i^Tq_j=\begin{cases}0\quad i\neq j\\1\quad i=j\end{cases}\)

我们将标准正交向量放入矩阵中,有\(Q=\Bigg[q_1 q_2 \cdots q_n\Bigg]\)。

上一讲我们研究了\(A^A\)的特性,现在来观察\(Q^TQ=\begin{bmatrix} & q_1^T & \\ & q_2^T & \\ & \vdots & \\ & q_n^T & \end{bmatrix}\Bigg[q_1 q_2 \cdots q_n\Bigg]\)

根据标准正交向量的定义,计算\(Q^TQ=\begin{bmatrix}1&0&\cdots&0\\0&1&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&1\end{bmatrix}=I\),我们也把\(Q\)成为标准正交矩阵(orthonormal matrix)。

特别的,当\(Q\)恰好是方阵时,由于正交性,易得\(Q\)是可逆的,又\(Q^TQ=I\),所以\(Q^T=Q^{-1}\)。

  • 举个置换矩阵的例子:\(Q=\begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}\),则\(Q^T=\begin{bmatrix}0&1&0\\0&0&1\\1&0&0\end{bmatrix}\),易得\(Q^TQ=I\)。
  • 使用上一讲的例子\(Q=\begin{bmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{bmatrix}\),列向量长度为\(1\),且列向量相互正交。
  • 其他例子\(Q=\frac{1}{\sqrt 2}\begin{bmatrix}1&1\\1&-1\end{bmatrix}\),列向量长度为\(1\),且列向量相互正交。
  • 使用上一个例子的矩阵,令\(Q'=c\begin{bmatrix}Q&Q\\Q&-Q\end{bmatrix}\),取合适的\(c\)另列向量长度为\(1\)也可以构造标准正交矩阵:\(Q=\frac{1}{2}\begin{bmatrix}1&1&1&1\\1&-1&1&-1\\1&1&-1&-1\\1&-1&-1&1\end{bmatrix}\),这种构造方法以阿德玛(Adhemar)命名,对\(2, 4, 16, 64, \cdots\)阶矩阵有效。
  • 再来看一个例子,\(Q=\frac{1}{3}\begin{bmatrix}1&-2&2\\2&-1&-2\\2&2&1\end{bmatrix}\),列向量长度为\(1\),且列向量相互正交。格拉姆-施密特正交化法的缺点在于,由于要求得单位向量,所以我们总是除以向量的长度,这导致标准正交矩阵中总是带有根号,而上面几个例子很少有根号。

再来看标准正交化有什么好处,假设要做投影,将向量\(b\)投影在标准正交矩阵\(Q\)的列空间中,根据上一讲的公式得\(P=Q(Q^TQ)^{-1}Q^T\),易得\(P=QQ^T\)。我们断言,当列向量为标准正交基时,\(QQ^T\)是投影矩阵。极端情况,假设矩阵是方阵,而其列向量是标准正交的,则其列空间就是整个向量空间,而投影整个空间的投影矩阵就是单位矩阵,此时\(QQ^T=I\)。可以验证一下投影矩阵的两个性质:\((QQ^T)^T=(Q^T)^TQ^T=QQ^T\),得证;\((QQ^T)^2=QQ^TQQ^T=Q(Q^TQ)Q^T=QQ^T\),得证。

我们计算的\(A^TA\hat x=A^Tb\),现在变为\(Q^TQ\hat x=Q^Tb\),也就是\(\hat x=Q^Tb\),分解开来看就是 \(\underline{\hat x_i=q_i^Tb}\),这个式子在很多数学领域都有重要作用。当我们知道标准正交基,则解向量第\(i\)个分量为基的第\(i\)个分量乘以\(b\),在第\(i\)个基方向上的投影就等于\(q_i^Tb\)。

Gram-Schmidt正交化法

我们有两个线性无关的向量\(a, b\),先把它们化为正交向量\(A, B\),再将它们单位化,变为单位正交向量\(q_1=\frac{A}{\left\|A\right\|}, q_2=\frac{B}{\left\|B\right\|}\):

  • 我们取定\(a\)向量的方向,\(a=A\);
  • 接下来将\(b\)投影在\(A\)的法方向上得到\(B\),也就是求子空间投影一讲中,我们提到的误差向量\(e=b-p\),即\(B=b-\frac{A^Tb}{A^TA}A\)。检验一下\(A\bot B\),\(A^TB=A^Tb-A^T\frac{A^Tb}{A^TA}A=A^Tb-\frac{A^TA}{A^TA}A^Tb=0\)。(\(\frac{A^Tb}{A^TA}A\)就是\(A\hat x=p\)。)

如果我们有三个线性无关的向量\(a, b, c\),则我们现需要求它们的正交向量\(A, B, C\),再将它们单位化,变为单位正交向量\(q_1=\frac{A}{\left\|A\right\|}, q_2=\frac{B}{\left\|B\right\|}, q_3=\frac{C}{\left\|C\right\|}\):

  • 前两个向量我们已经得到了,我们现在需要求第三个向量同时正交于\(A, B\);
  • 我们依然沿用上面的方法,从\(c\)中减去其在\(A, B\)上的分量,得到正交与\(A, B\)的\(C\):\(C=c-\frac{A^Tc}{A^TA}A-\frac{B^Tc}{B^TB}B\)。

现在我们试验一下推导出来的公式,\(a=\begin{bmatrix}1\\1\\1\end{bmatrix}, b=\begin{bmatrix}1\\0\\2\end{bmatrix}\):

  • 则\(A=a=\begin{bmatrix}1\\1\\1\end{bmatrix}\);
  • 根据公式有\(B=a-hA\),\(h\)是比值\(\frac{A^Tb}{A^TA}=\frac{3}{3}\),则\(B=\begin{bmatrix}1\\1\\1\end{bmatrix}-\frac{3}{3}\begin{bmatrix}1\\0\\2\end{bmatrix}=\begin{bmatrix}0\\-1\\1\end{bmatrix}\)。验证一下正交性有\(A\cdot B=0\)。
  • 单位化,\(q_1=\frac{1}{\sqrt 3}\begin{bmatrix}1\\1\\1\end{bmatrix},\quad q_2=\frac{1}{\sqrt 2}\begin{bmatrix}1\\0\\2\end{bmatrix}\),则标准正交矩阵为\(Q=\begin{bmatrix}\frac{1}{\sqrt 3}&0\\\frac{1}{\sqrt 3}&-\frac{1}{\sqrt 2}\\\frac{1}{\sqrt 3}&\frac{1}{\sqrt 2}\end{bmatrix}\),对比原来的矩阵\(D=\begin{bmatrix}1&1\\1&0\\1&2\end{bmatrix}\),有\(D, Q\)的列空间是相同的,我们只是将原来的基标准正交化了。

我们曾经用矩阵的眼光审视消元法,有\(A=LU\)。同样的,我们也用矩阵表达标准正交化,\(A=QR\)。设矩阵\(A\)有两个列向量\(\Bigg[a_1 a_2\Bigg]\),则标准正交化后有\(\Bigg[a_1 a_2\Bigg]=\Bigg[q_1 q_2\Bigg]\begin{bmatrix}a_1^Tq_1&a_2^Tq_1\\a_1^Tq_2&a_2^Tq_2\end{bmatrix}\),而左下角的\(a_1^Tq_2\)始终为\(0\),因为Gram-Schmidt正交化总是使得\(a_1\bot q_2\),后来构造的向量总是正交于先前的向量。所以这个\(R\)矩阵是一个上三角矩阵。

第十八讲:行列式及其性质

本讲我们讨论出行列式(determinant)的性质:

  1. \(\det{I}=1\),单位矩阵行列式值为一。

  2. 交换行行列式变号。

    在给出第三个性质之前,先由前两个性质可知,对置换矩阵有\(\det P=\begin{cases}1\quad &even\\-1\quad &odd\end{cases}\)。

    举例:\(\begin{vmatrix}1&0\\0&1\end{vmatrix}=1,\quad\begin{vmatrix}0&1\\1&0\end{vmatrix}=-1\),于是我们猜想,对于二阶方阵,行列式的计算公式为\(\begin{vmatrix}a&b\\c&d\end{vmatrix}=ad-bc\)。

  3. a. \(\begin{vmatrix}ta&tb\\tc&td\end{vmatrix}=t\begin{vmatrix}a&b\\c&d\end{vmatrix}\)。

    b. \(\begin{vmatrix}a+a'&b+b'\\c&d\end{vmatrix}=\begin{vmatrix}a&b\\c&d\end{vmatrix}+\begin{vmatrix}a'&b'\\c&d\end{vmatrix}\)。

    注意这里并不是指\(\det (A+B)=\det A+\det B\),方阵相加会使每一行相加,这里仅是针对某一行的线性变换。

  4. 如果两行相等,则行列式为零。使用性质2交换两行易证。

  5. 从第\(k\)行中减去第\(i\)行的\(l\)倍,行列式不变。这条性质是针对消元的,我们可以先消元,将方阵变为上三角形式后再计算行列式。

    举例:\(\begin{vmatrix}a&b\\c-la&d-lb\end{vmatrix}\stackrel{3.b}{=}\begin{vmatrix}a&b\\c&d\end{vmatrix}+\begin{vmatrix}a&b\\-la&-lb\end{vmatrix}\stackrel{3.a}{=}\begin{vmatrix}a&b\\c&d\end{vmatrix}-l\begin{vmatrix}a&b\\a&b\end{vmatrix}\stackrel{4}{=}\begin{vmatrix}a&b\\c&d\end{vmatrix}\)

  6. 如果方阵的某一行为零,则其行列式值为零。使用性质3.a对为零行乘以不为零系数\(l\),使\(l\det A=\det A\)即可证明;或使用性质5将某行加到为零行,使存在两行相等后使用性质4即可证明。

  7. 有上三角行列式\(U=\begin{vmatrix}d_{1}&*&\cdots&*\\0&d_{2}&\cdots&*\\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&d_{n}\end{vmatrix}\),则\(\det U=d_1d_2\cdots d_n\)。使用性质5,从最后一行开始,将对角元素上方的\(*\)元素依次变为零,可以得到型为\(D=\begin{vmatrix}d_{1}&0&\cdots&0\\0&d_{2}&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&d_{n}\end{vmatrix}\)的对角行列式,再使用性质3将对角元素提出得到\(d_nd_{n-1}\cdots d_1\begin{vmatrix}1&0&\cdots&0\\0&1&\cdots&0\\\vdots&\vdots&\ddots&\vdots\\0&0&\cdots&1\end{vmatrix}\),得证。

  8. 当矩阵\(A\)为奇异矩阵时,\(\det A=0\);当且仅当\(A\)可逆时,有\(\det A\neq0\)。如果矩阵可逆,则化简为上三角形式后各行都含有主元,行列式即为主元乘积;如果矩阵奇异,则化简为上三角形式时会出现全零行,行列式为零。

    再回顾二阶情况:\(\begin{vmatrix}a&b\\c&d\end{vmatrix}\xrightarrow{消元}\begin{vmatrix}a&b\\0&d-\frac{c}{a}b\end{vmatrix}=ad-bc\),前面的猜想得到证实。

  9. \(\det AB=(\det A)(\det B)\)。使用这一性质,\(\det I=\det{A^{-1}A}=\det A^{-1}\det A\),所以\(\det A^{-1}=\frac{1}{\det A}\)。

    同时还可以得到:\(\det A^2=(\det A)^2\),以及\(\det 2A=2^n\det A\),这个式子就像是求体积,对三维物体有每边翻倍则体积变为原来的八倍。

  10. \(\det A^T=\det A\),前面一直在关注行的属性给行列式带来的变化,有了这条性质,行的属性同样适用于列,比如对性质2就有“交换列行列式变号”。

    证明:\(\left|A^T\right|=\left|A\right|\rightarrow\left|U^TL^T\right|=\left|LU\right|\rightarrow\left|U^T\right|\left|L^T\right|=\left|L\right|\left|U\right|\),值得注意的是,\(L, U\)的行列式并不因为转置而改变,得证。

标签:begin,MIT18.06,end,灰飞烟灭,矩阵,plt,bmatrix,向量
来源: https://www.cnblogs.com/limbercode/p/16154854.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有