线性代数笔记¶
约 6537 个字 预计阅读时间 22 分钟
前言¶
复习笔记,主要用于记录对线性代数本质的理解。
Gilbert Strang lectures on Linear Algebra (MIT)
这两套课程是我认为最方便理解入门线性代数的课程。
线性变换¶
线性变换特征:
- 变换前后任何直线依旧为直线(平行且原有的间距比例不发生改变)
- 原点位置保持不变
从基向量角度理解线性变换
- 用基向量可以表示任何由基向量张成的空间中的向量
- 变换前后直线依旧平行,间距比例不变,因此任何向量由基向量的表示形式不会发生改变
- 因此,一个向量的线性变换可以用一个矩阵乘上它表示
如何理解这个式子?
在原有的二维空间中,向量\(\begin{bmatrix} 3 \\ 2 \end{bmatrix}\)表示由\(3\)个\(i\)向量和\(2\)个\(j\)向量组合而成的向量,是原向量由基向量表示的系数。
\(\begin{bmatrix} 1 & 3 \\ 2 & 1 \end{bmatrix}\) 是表示线性变换的矩阵。也就是\(T(v)\)中的\(T\)代表的矩阵。
\(\begin{bmatrix} 1 \\ 2 \end{bmatrix}\)表示原有的\(i\)向量\(\begin{bmatrix} 1 \\ 0 \end{bmatrix}\)经过线性变换后的向量。\(\begin{bmatrix} 3 \\ 1 \end{bmatrix}\)同理代表了\(j\)向量。
因此,根据矩阵乘法的特性,\((1)\) 式代表了用原有系数与新的基向量相乘后,原向量在现有线性空间中的表示方法。
根据以上解释,这个式子也就很好理解了。
行列式¶
行列式,英文名determinant,应该有一个更为确切的翻译,叫做“决定性的因素”
从直观的图像角度理解,二维线性空间中的行列式可以看作是面积的变化大小。
行列式的正负与方向有关。如果一个矩阵的行列式为0,这意味着这个矩阵乘上一个向量,也就是说进行一次线性变换,会把向量投射到低维的线性空间中去。
行列式非0(non-singular)¶
矩阵可逆
如果一个方阵(即行数和列数相等的矩阵)的行列式的值不为0,那么该矩阵就是可逆的,也就是说,存在一个逆矩阵,使得原矩阵与其逆矩阵的乘积为单位矩阵。
线性方程组的唯一解
对于一个线性方程组,如果其系数矩阵的行列式不为零,那么该线性方程组有唯一解。这是克拉默法则的一个基本结论。
线性无关
对于一个向量组,如果其对应的矩阵的行列式不为零,那么这个向量组是线性无关的。也就是说,没有任何一个向量可以表示为其它向量的线性组合。
变换后体积非零
在几何中,行列式常用于描述空间变换。原始空间经过变换后,其对应的行列式就是变换后的体积(或面积)。如果行列式的值不为零,那么说明变换后的体积非零,即变换保持了“有体积”的性质。
行列式为0(singular)¶
-
不可逆
-
线性相关
-
变换后体积为0,维度减小
-
线性方程组无唯一解(可能无解,无穷解)
微扰¶
一般而言,一个non-singular的矩阵空间是稳定的,经过一定扰动不会变成singular,而singular经过扰动会变成non-singular。这种现象在数值计算和机器学习中有很重要的应用,比如在解决病态问题、优化算法等方面。
基变换¶
表达式 \(A^{-1} M A\) 暗示着一种数学上的转移作用。
中间的矩阵\(M\)达标了一种你所见的变换,另外两个\(A\)矩阵代表着转移作用,也就是视角上的变化。
我们可以把这个表达式理解为线性代数中的“坐标系变换”或者说是"基的变换"。
假设我们有一个物体在3D空间中,我们用一个三维的矩阵来表示这个物体的空间位置。我们通常使用三个正交基(例如,笛卡尔坐标系)来表示这个空间。但是,我们也可以选择使用另一组基来表示这个空间。这时候就需要做坐标系的变换。
我们假设\(M\)表示原来坐标系下的一个线性变换。例如,\(M\)是一个将物体旋转90度的变换。
\(A\)是一个坐标系的转换矩阵,它可以将原来的坐标系转换到新的坐标系。这里,\(A^{-1}\)是\(A\)的逆矩阵,它可以将新的坐标系转换回原来的坐标系。
\(A^{-1} M A\)就是在新的坐标系中,相当于原来坐标系下由\(M\)表示的那个变换。
换句话说,我们首先用\(A\)将物体从原来的坐标系转换到新的坐标系,然后在新的坐标系下进行\(M\)表示的变换,最后再用\(A^{-1}\)将物体从新的坐标系转换回原来的坐标系。这个过程就是\(A^{-1} M A\)所表示的过程。
设我们有一个\(Y\)空间(例如,一个y轴斜着的空间)下表示的向量 \(\begin{bmatrix} x \\ y \end{bmatrix}\) ,我们想要对其进行\(X\)空间下(例如,我们的笛卡尔坐标系下的空间)一个线性变换(例如,旋转)。这个变换可以由矩阵 \(M\) 表示,假设 \(M\) 是一个逆时针旋转90度的变换,那么有 \(M=\begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix}\)。
然后,假设\(Y\)空间中的基通过矩阵 \(A\) 与\(X\)空间中的原始基相联系。例如,我们令 \(A = \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix}\) ,这个矩阵表示新的基相对于原始基的坐标。
如果我们想要在新的基底下执行与\(X\)空间中旋转相同的变换,我们需要执行以下操作:首先,我们用 \(A^{-1}\) 将向量从新的基转换回原始基,然后用 \(M\) 对其执行旋转,最后用 \(A\) 将其转换回新的基。于是,我们得到了新的转换矩阵:
\(A^{-1}MA = \begin{bmatrix} 1 & 1 \\ -1 & 1 \end{bmatrix} \begin{bmatrix} 0 & -1 \\ 1 & 0 \end{bmatrix} \begin{bmatrix} 1 & 1 \\ 1 & -1 \end{bmatrix} = \begin{bmatrix} 1 & -1 \\ 1 & 1 \end{bmatrix}\)
所以,在\(Y\)空间中的新的基底下执行旋转操作的矩阵就是 \(\begin{bmatrix} 1 & -1 \\ 1 & 1 \end{bmatrix}\)。
行空间,列空间,零空间¶
行空间:给定一个矩阵,其行空间(Row Space)就是矩阵所有行向量可以张成的空间。也就是说,任意一行可以表示为其他行的线性组合。
列空间:给定一个矩阵,其列空间(Column Space)是由矩阵所有列向量所张成的空间。也就是说,任意一列可以表示为其他列的线性组合。
零空间:给定一个矩阵,其零空间(Null Space)是所有能被该矩阵映射到零向量的向量所构成的空间。也就是说,对于矩阵\(A\)和向量\(x\),如果\(Ax=0\),那么\(x\)就在A的零空间内。
需要建立起和\(Ax=b\)方程组之间的联系
-
如果矩阵\(A\)的零空间维数为\(0\),则 \(Ax=0\) 只有零解\(x=0\)。这意味着\(A\)的列向量线性无关。
-
线性方程组\(Ax=b\)是相容的(有解,consistent),当且仅当\(b\)在\(A\)的列空间中。因为\(Ax=b\)的解可以写成 \(x = c + z\), 其中\(c\)是特解,\(z\)在\(A\)的零空间中。所以只有当\(b\)可以表示为\(A\)列向量的线性组合时,方程组才有解。
-
\(A\)的零空间的维数等于\(Ax=b\)的解中自由变量的个数。
-
如果\(b\)不在\(A\)的列空间中,则\(Ax=b\)无解。
-
A的行空间与零空间是正交补的关系。所以 \(rank(A^T) + nullity(A) = A\)的列数。
-
A的列空间是左零空间的正交补。
投影¶
二维投影以及更高维投影¶
公式
我们先考虑二维平面下的情况。如图所示
假设
\(p\)为投影长度。不妨假设\(a\)为一个列向量,\(b\)为另一个方向不同的列向量。
由正交,我们可以得到:
化简,得到\(x\):
由\(p=ax\)可知:
结合后,可得:
于是我们可以得到投影矩阵\(P\):
注:对于这里的\(x\),思考了很久,个人认为是因为在对于向量的操作过程中,\(1*1\)的矩阵和标量没有什么区别,因此可以随意交换顺序,并产生结合。但严格数学推导来讲,这里用\(p=ax\)会更加合适一点。如果有问题,欢迎联系我。
来自知乎一个回答,非常好的解决了我的疑问:1X1矩阵具有两重性,既是阵也是数,叠加态的归一化就是行矩阵乘列矩阵变成了1X1矩阵,这个1X1矩阵也是个数,是1。反之,可以把那个数还原乘两个矩阵的相乘。
接下来拓展到更高维度的情况下。事实上,我们只需要搞清楚向量投影到二维平面上问题就可以解决了。
同样,设\(p\)为\(b\)向量的投影,由于\(p\)在平面上( i.e, \(p\)在平面列空间内 ),我们可以用平面上的两个向量表示\(p\),即:
我们用\(A\)表示平面的列向量空间,可以得到
其余步骤与之前相类似。
推导可得
同样投影矩阵\(P\):
显然\(A\)不是方阵,否则就是投影到整个空间了。
对于这个投影矩阵\(P\),有两条很好的性质:
-
\(P^T=P\)
-
\(P^2=P\)
总结
对于线性方程组 \(Ax = b\),其中\(A\)是一个\(m×n\) 矩阵,\(b\)是一个\(m×1\)向量,投影矩阵\(P\)的作用就是将\(b\)投影到\(A\)的列空间中。
这里\(P\)可以表示为:
\(P = A(A^T A)^{-1} A^T\)
那么\(Pb\)就是对\(b\)在\(A\)列空间上的投影。
最小二乘法¶
最小二乘法适用于求解一个线性系统 \(Ax = b\),其中\(A\)是一个 \(m×n\) 矩阵(\(m > n\)),该线性系统有着比未知数更多的方程。
为什么要投影?
问题的提出: 当\(A\)的列空间和\(b\)不正交时,\(Ax = b\)就可能没有解。这时我们希望在\(A\)的列空间中找到一个向量\(\hat{x}\),使得\(A\hat{x}\)距离\(b\)最小。
几何解释: 就是将\(b\)在\(A\)列空间上正交投影,得到投影向量\(p\)。
求解:
- 求出投影矩阵 \(P = A(A^TA)^{-1}A^T\)
- 计算投影向量 \(p = Pb\)
- 解方程 \(A\hat{x} = p\),得到最小二乘解\(\hat{x}\)
特点:
- \(\hat{x}\)使残差\(b - A\hat{x}\)的二乘和最小
- \(A\hat{x}\)是最佳逼近\(b\)的向量
- 当\(A\)列满秩时, \(\hat{x}\)唯一
最小二乘法在实际问题中广泛应用,例如曲线拟合、统计模型等都会用到该方法求解。它提供了一种简便有效的数学优化工具。
特征向量和特征值¶
核心式子:\(Ax=\lambda x\)
\(\lambda\)为特征值,\(x\)为对应到特征值\(\lambda\)的特征向量。
为很么要这么做
理解线性变换的关键往往较少依赖于你的特定坐标系(例如,笛卡尔坐标系),更好的办法是求出它的特征向量和特征值,因为它们方向不发生改变。
求出特征向量和特征值之后,我们可以进行对角化。对角化可以理解为一种转换成特征向量表示的基变换。
具体来说:
-
对角化前的矩阵A,可以看成是在标准基(即单位矩阵I的列向量)下的一个线性变换。
-
计算A的特征向量,得到一组线性无关的特征向量。这些特征向量构成了一个新的基。
-
将A相对于特征向量基进行基变换,得到一个对角矩阵D。
-
D的对角元素即为A的特征值。
-
所以对角化等效于:先计算特征向量基,然后进行基变换,将A表示在它的特征向量基下,得到对角矩阵D。
-
D反映了A作为线性变换的本质,特征值是它在特征向量方向上的缩放作用。
综上,对角化实际上是一种特殊的基变换,目的是将矩阵表示在它的特征空间下,以反映矩阵作为线性变换的本质特征。
它究竟意味着什么
考虑三维空间中的三维物体。线性变换相当于对它进行旋转变化。如果找到方向不变的向量,可以找到三维物体的旋转轴。
可以帮助对矩阵进行对角化,简化矩阵运算。
对角化¶
假设 \(A\) 的 \(n\) 个线性无关的特征向量组成矩阵 \(S\),有:
于是根据特征值定义,我们有:
写成矩阵的形式:
将由特征值组成的此对角矩阵记为 \(\Lambda\),我们有 \(AS=S\Lambda\)
由于 \(S\) 是可逆矩阵,我们可以得到:
对称矩阵,正定矩阵¶
对称矩阵¶
这一部分将解释特征向量和特征值最重要的特性。
如果给定一个特殊类型的矩阵,我们就会想要去了解它的特征值和特征向量。矩阵的特殊性将会表现在特征值和特征向量上。
对于一个实对称矩阵,我们有以下特点:
-
\(A=A^T\)
-
特征值一定为实数(对于复数矩阵,只要满足\(\bar A_T=A\),特征值也会均为实数。)
-
可以选出一组特征向量正交(当一些特征值重复的时候,可能会有一整个平面的特征向量,我们只需要选择其中相互正交的一组向量就行)
-
对称矩阵的主元正负个数与特征值的正负个数对应一致。
-
对称矩阵的主元的乘积等于特征值的乘积(都等于行列式的值)
对称矩阵的分解¶
类似于可对角化矩阵的对角化形式,对称矩阵对角化后有:
如果用更详细的表达方式, \(A\) 应该写成如下形式:
我们展开后,可以得到:
对于实对称矩阵 \(A\) ,其特征向量可以选择为正交单位向量。这是实对称矩阵的一个特殊性质,是线性代数中的一个经典结果。于是,对于每一个 \(q_iq_i^T\),都可以改写为 \(\frac{q_iq_i^T}{q_i^Tq_i}\)。显然,这是一个投影矩阵的形式,可以理解为向\(q_i\)方向投影的投影矩阵。
于是就有对于谱定理的另一理解角度:每一个对称矩阵都是一些互相垂直的投影矩阵的线性组合。
正定矩阵¶
正定矩阵就是一类正定矩阵,满足:
-
所有的特征值是正数
-
所有主元为正
-
所有子行列式为正(子行列式概念: 从原行列式左上角开始依次划分出 \(1*1\) 的一块,\(2*2\) 的一块,...得到的这些子块对应的行列式就称之为“子行列式”。也叫主子式)
给出下面四种判定方法,任何一个条件成立则其他都成立:
-
特征值判定: 所有的特征值是正数
-
行列式判定: 所有子行列式为正
-
主元判定:所有主元为正
-
\(x^TAx>0\)(\(x\) 为非 \(0\) 实数向量)
对于第四种的判别方法,给定矩阵 \(A\):
在列出式子后,我们可以从几何的角度来进行理解。例如我们有这个式子:
我们可以截出一个椭球体\(2𝑥_1^2 + 2𝑥_2^2 + 2𝑥_3^2 - 2𝑥_1𝑥_2 - 𝑥_2𝑥_3=1\)。这时椭球体的三个轴的方向就是原矩阵的特征向量方向,三个轴的长度就是特征值大小。这个性质我们叫做主轴定理。
由于正定矩阵的逆矩阵的特征值是原矩阵的倒数,所以若 \(A\) 是正定矩阵,那么有 \(A^{-1}\) 也是正定矩阵。
若 \(A\) 和 \(B\) 是正定矩阵,那么有 \(A+B\) 是正定矩阵。(\(x^T(A+B)x>0\))
若 \(A\) 是 \(m\times n\) 长方形矩阵,则 \(A^TA\) 是正定矩阵。(条件: \(A\) 的各列向量线性无关,列满秩)
对于正定矩阵,不需要进行“行交换”,也不必担心主元过小或者等于零。这可以简化我们的很多计算。
相似矩阵¶
对于两个 \(n\) 阶方阵 \(A\) 和 \(B\),如果说两者相似,这意味着存在某个可逆矩阵 \(M\),使得如下等式成立:
相似矩阵特征值相同
-
首先写出特征方程: \(Ax=\lambda x\)
-
乘上单位矩阵得到: \(AMM^{-1}x=\lambda x\)
-
同时左乘\(M^{-1}\)得到: \(M^{-1}AMM^{-1}x=M^{-1}\lambda x\)
-
由 \(B=M^{-1}AM\) 的形式得到: \(BM^{-1}x=\lambda M^{-1}x\)
于是我们可以知道:相似矩阵特征值相同,线性无关特征向量数量相同,但特征向量不一定相同
若尔当型¶
我们知道,相似矩阵的特征值相同,但是特征值相同的矩阵不一定是相似矩阵。例如,与单位矩阵相似的只有其自身。而与单位矩阵由相同特征值的矩阵很多。
如果矩阵的特征值不相同,那么它就是一个可对角化的矩阵。而对于其他非单位矩阵的有相同特征值的矩阵,是无法进行对角化的。我们于是尝试通过某种特殊方法,完成近似的“对角化”。这种方法产生的一种矩阵就叫做若尔当标准型。
若尔当型出现的背景是特征值数量相同,但是矩阵不相似情况。
以上两个矩阵并不相似。
若尔当块: \(J_i\) 表示 \(i\) 阶若尔当块,只有一个重复的特征值且只有一个特征向量。满足形式:
若尔当矩阵:由若尔当块构成。若尔当块的个数等于矩阵特征向量的个数。
每个方阵都相似于一个若尔当阵 \(J\)。因此,每个方阵的相似的群都可以被表示为 \(MJM^{-1}\)。
SVD分解(奇异值分解)¶
SVD分解公式:
(对于正定矩阵,SVD 和 对角化完全相同。)
奇异值分解(SVD,singular value decomposition),本质就是将行空间的一组正交基变换成列空间里的一组正交基。也就是对于行空间的一组正交基向量\(v_1,v_2\),得到列空间的一组正交基向量\(u_1,u_2\)。任何矩阵都有这种分解。
我们可以用矩阵形式表示这个过程为:
这可以简化为:
其中:
-
\(v_i\) 对应的是行空间中的基向量
-
\(u_i\) 对应的是列空间中的基向量
-
\(\sigma_i\) 对应的是伸缩因子
简单变形后就是\(A=U\Sigma V^{-1}=U\Sigma V^T\)
我们的任务是通过给定矩阵 \(A\) 得到其它三个矩阵 \(U\) ,\(Σ\),和 \(V^T\)。
现在的问题是,我们无法直接找到如此美好的一个正交矩阵\(V\),恰好使得\(U\)也是正交矩阵。
尝试做一些处理,将 \(U\) 消去。
\(A^TA=V\Sigma U^T U\Sigma V^T=V \Sigma^2 V^T\)
这样变形后,我们就只需要选择 \(V\) 即可。同样,通过 \(AA^T\) 运算,留下的就是 \(U\) 矩阵。
不过,要注意,当求出 \(V\) 和 \(\sigma\) 之后,不能用 \(AA^T\) 再求 \(U\) 矩阵,因为这样操作的结果是我们无法得到 \(V\) 和 \(U\) 之间的方向关系(特征向量方向不确定)。再求 \(U\) 矩阵要用 \(Av_i=\sigma_i u_i\) 这个式子。
抽象向量空间¶
线性代数最重要的一部分,万物皆可向量
向量空间是一种抽象的数学结构,其灵感来源于我们在物理或几何中所见到的"向量"的概念。在这种抽象化的环境中,向量可以代表各种各样的事物,甚至可以代表函数、多项式或矩阵。
向量空间的定义¶
向量空间(也被称为线性空间)是一个由向量组成的集合,这些向量满足加法和标量乘法的一些基本规则。
向量空间有以下性质:
- 封闭性:对于向量空间中的任何两个向量,他们的加法和标量乘法的结果仍在向量空间中。
- 加法交换性:对于向量空间中的任何两个向量\(a\)和\(b\),\(a + b = b + a\)。
- 加法结合性:对于向量空间中的任何三个向量\(a\)、\(b\)、\(c\),有\((a + b) + c = a + (b + c)\)。
- 存在加法单位元:向量空间中存在一个元素\(0\),使得对于所有的向量\(v\),有\(v + 0 = v\)。
- 加法逆元存在性:对于向量空间中的每一个向量\(v\),存在一个元素\(-v\),使得\(v + (-v) = 0\)。
- 标量乘法交换性:对于任何标量\(a\)和\(b\),以及向量空间中的任何向量\(v\),有\(a * (b * v) = (a * b) * v\)。
- 标量分配性:对于任何标量\(a\)和\(b\),以及向量空间中的任何向量\(v\),有\((a + b) * v = a * v + b * v\)。
- 向量分配性:对于向量空间中的任何向量\(a\)和\(b\),以及任何标量\(v\),有\(v * (a + b) = v * a + v * b\)。
这些性质都是为了确保我们可以自由地进行向量加法和标量乘法操作,而不会跳出向量空间。
求导是线性运算¶
以求导作为例子解释抽象向量空间。将函数映射到其导函数的过程,实际上就是一个线性运算。
让我们考虑所有具有实数系数的多项式函数的集合,记为\(P\)。我们发现,任何两个多项式的加法或标量乘法结果仍为多项式。因此,\(P\)构成一个向量空间。
在这个向量空间中,我们可以定义一个线性变换\(D\),它接受一个多项式\(p\),并返回其导数\(D(p)\)。这个变换有两个关键的性质:
对于向量空间中的任意两个向量(这里是多项式)\(p\)和\(q\),\(D(p + q) = D(p) + D(q)\)。
对于任意的实数标量\(c\)和向量空间中的任意向量\(p\),\(D(c * p) = c * D(p)\)。
这两个性质符合线性变换的定义。因此,我们可以说求导运算是一个线性变换。
首先,考虑一个无限项的多项式函数
\(f(x) = a_0 + a_1x + a_2x^2 + a_3x^3 + \ldots\),
其向量表达形式为\((a_0, a_1, a_2, a_3, \ldots)\)。
当我们对\(f(x)\)求导后,我们得到
\(f'(x) = a_1 + 2a_2x + 3a_3x^2 + \ldots\),
其向量表达形式为\((a_1, 2a_2, 3a_3, 4*a_4, \ldots, 0)\)。
求导运算的过程就是将原始多项式的系数向量\((a_0, a_1, a_2, a_3, \ldots)\)转换为导数的系数向量\((a_1, 2a_2, 3a_3, 4*a_4, \ldots, 0)\)。这种转换过程可以通过矩阵乘法来完成。
我们需要找到一个矩阵\(M\),使得当它作用于原始向量时,得到的结果向量等于求导后的向量,即:
\(M * (a_0, a_1, a_2, a_3, \ldots) = (a_1, 2a_2, 3a_3, 4*a_4, \ldots, 0)\)
通过观察,我们发现这个矩阵\(M\)可以表示为如下的形式:
\(M = \begin{bmatrix} 0 & 1 & 0 & 0 & 0 & \ldots \\ 0 & 0 & 2 & 0 & 0 & \ldots \\ 0 & 0 & 0 & 3 & 0 & \ldots \\ 0 & 0 & 0 & 0 & 4 & \ldots \\ 0 & 0 & 0 & 0 & 0 & \ldots \\ \vdots & \vdots & \vdots & \vdots & \vdots & \ddots \end{bmatrix}\)
现在,当我们用\(M\)乘以原始的向量\((a_0, a_1, a_2, a_3, \ldots)\),会得到\((a_1, 2a_2, 3a_3, 4*a_4, \ldots, 0)\),是求导后的向量。
因而,只要你的定义符合向量空间的定义,向量可以是任何满足向量空间定义的对象,比如函数或多项式的系数向量。而线性运算也可以是各种各样的运算,例如这里的求导运算。