Loading

线性代数学习笔记(更新中)

写给我自己看的,高度简写了很多东西,大概会有非常多别人看不懂的地方,请多包涵.(主要是有些东西想要解释的很清楚就很麻烦了,这一点不如直接去看书)

导引

这里讨论的向量,都是在讨论列向量

线性组合\(n\)\(m\) 维向量的线性组合,是 \(\R ^m\) 的一个子空间.这个子空间的「维数」\(r \le \min(n, m)\).三维子空间可以抽象为空间,二维是平面,一维是直线,零维是点.注意:子空间必须包含零元,即上面抽象出来的几何结构都必须经过原点.

方程.线性代数解决的都是一次方程.所有的一次方程都可以化为式子 = 右值的形式,多个方程的右值构成右值组(为了方便叙述自定义的概念).

矩阵.将 \(n\)\(m\) 维向量放在一起,就变成了一个 \(m \times n\) 的矩阵(\(n\)\(m\) 的命名习惯与 OI 恰好是相反的).矩阵 \(A\) 的每一行可以视作一个式子(方程的左侧),每一列可以视作一个向量

\[A \bm x = \bm b \]

这个式子有非常多的视角,具体而言:

  • \(\bm x\)\(A\) 作用的视角一:\(A\) 包含 \(m\)式子(行),一行的 \(n\) 个元素是该式 \(n\)变元的系数.每一行与 \(\bm x\) 点积,得到这个式子在解 \(\bm x\) 下的值,并构成一个完整的方程.\(\bm x\) 的共 \(n\) 个值是 \(n\)变元的值\(\bm b\) 的共 \(m\) 个值是右值.称作方程视角
  • 小注:方程也可以视作一个几何结构.如二元方程是一条线,三元方程是一个平面.
  • \(\bm x\)\(A\) 作用的视角二:\(A\) 包含 \(n\)向量(列),一列的 \(m\) 个元素是该向量的 \(m\)坐标.此时 \(\bm x\)\(n\) 个值应被视作向量的系数,而 \(\bm b\)\(n\) 个向量按照系数组 \(\bm x\) 进行线性组合 得到的 \(m\)向量.称作组合视角
  • \(A\)\(\bm x\) 作用的视角:\(A\) 刻画了一种变换规则!它可以将一个 \(n\) 维向量转化为 \(m\) 维向量.如果这个变换是可逆的,则 \(A^{-1}\) 对应的就是逆变换规则.如 \(n = m\) 时的前缀和差分操作,就可以用矩阵刻画,并且刻画出来的矩阵是互逆的.

综合使用,转换这些视角理解,解决问题,是线性代数学习的重要方法.

矩阵可逆时,对于任意一个 \(\bm b\),只能存在一个 \(\bm x\) 使得 \(A \bm x = \bm b\).否则,无法从 \(\bm b\) 的信息还原为 \(\bm x\).因此,对于可逆矩阵 \(A\) 和零向量 \(\bm b\),满足 \(A \bm x = \bm b\)\(\bm x\) 只能是零向量.转化为向量视角.这意味着只有全零线性组合可以组合出零向量,证明了向量线性无关,即没有向量可以表为其它向量的线性组合.这通常意味着「满维度」(满秩).

解线性方程组

本章很多时候都是 \(n = m\) 的.因为我们重点关注怎么解,所以重点研究的应该是大概率解唯一的方程组,即变元等于方程数量的方程组.当然,这样的方程组不一定有唯一解.有唯一解矩阵可逆对应,无唯一解矩阵不可逆对应(这是刚刚讨论过的内容).

Gauss-Jordan 消元

下面研究如何解 \(A \bm x = \bm b\).有 \(\bm x = A^{-1}\bm b\),但 \(A^{-1}\) 的求解复杂度与解方程相同.答案都是 Gauss-Jordan 消元.

Gauss 负责 \(A \to U\),Jordan 负责 \(U \to R\).特别地,若矩阵可逆,则这里的 \(R\)(ref,行阶梯形矩阵)即 \(D\)(对角阵).

Gauss-Jordan 只会用到倍加行置换两种操作.这两种操作都可以刻画为左乘矩阵,前者称作倍加矩阵,后者称作置换矩阵,我们另有数乘矩阵.这三种矩阵左乘对行操作,右乘对列操作.

当我们对系数矩阵 \(A\) 进行操作时,也要对 \(b\) 进行同样的操作.所以我们又有增广矩阵的概念.只需将 \(\bm b\) 置于 \(A\) 的右侧,就可视作对矩阵 \([A \quad b]\) 操作.

矩阵乘法

上面用到了很多矩阵乘法的概念,事实上矩阵乘法也有很多种视角.朴素的定义是 \(C(i, j)\)\(A\) 的第 \(i\) 行与 \(B\) 的第 \(j\) 列点乘的结果.但是,我们还可以将矩阵乘法视作多个矩阵与向量相乘,而这是上面讨论过的内容.

具体而言,\(A \times B = C\)

  • \(C\) 的第 \(i\) 行与 \(A\) 的第 \(i\) 行和 \(B\) 有关.它是 \(\bm{row(i)} \times B\)
  • \(C\) 的第 \(j\) 列与 \(A\)\(B\) 的第 \(j\) 列有关.它是 \(A \times \bm{col(j)}\)

我们知道 \(A \times \bm b\) 有三种视角,那么总共会出现六种视角.先以比较熟悉的形式,\(A \times \bm{col(j)}\) 为例.这也就是说:

  • 方程视角高级版:\(A\) 是系数矩阵,而一个 \(\bm{col(j)}\) 就是一组解.多组解,可以得到多个右值组
  • 组合视角高级版:\(A\) 是向量矩阵,一个 \(\bm{col(j)}\) 就是一个线性组合.多个线性组合,可以得到多个向量.
  • 变换视角高级版:\(A\) 是变换操作,它对多个 \(\bm{col(j)}\) 向量批量变换,得到 \(C\) 的多个向量.

事实上,\(\bm{row(i)} \times B\) 的原理是完全相同的,只不过这次我们行代表向量列代表方程

  • 方程视角高级版:\(B\) 是系数矩阵(注意此时每一列对应一个式子,每一行对应一个变元),而一个 \(\bm{row(i)}\) 就是一组解.多组解,可以得到多个右值组
  • 组合视角高级版:\(B\) 是行向量矩阵,而一个 \(\bm{row(i)}\) 就是一个线性组合.多个线性组合,得到多个行向量.
  • 变换视角高级版:\(B\) 也是一种变换操作.它对多个 \(\bm{row(i)}\) 行向量批量变换,得到 \(C\) 的多个行向量.

拥有这些视角之后,很多东西可以得到非常好的解释.如增广矩阵就是一种高级版的变换视角:将多个列向量批量变换.而左乘变换矩阵是一种高级版的行向量组合视角.我们将 \(B\) 视作多个行向量,\(A\) 的系数相当于对这些行向量进行了合适的线性变换,从而得到倍加,置换的目的.

\(A \times B\) 还有另外一个特别神奇的想法:\(\bm{col_A(i)} \times \bm{row_B(i)}\) 的和,也就是 \(n\) 个张量积的和.线性代数真是太神奇了.

分块矩阵

将矩阵任意画几条无限长的横线与竖线,可以将矩阵分块.只要矩阵乘法可计算,则计算出来的结果是对的.这一条件能够完成,当且仅当对 \(A\) 画的竖线与对 \(B\) 的画的横线结构完全相同,因为我们只关心 \(A\) 划分出来的矩阵的列数是否能够匹配 \(B\) 划分出来的矩阵的行数.当然,对 \(A\) 画的横线与对 \(B\) 画的竖线需要数量相同(我们得让两边分出相同数量的块).

根据这个原理,可以证明上面那个神奇的想法.我们只需要将 \(A\) 按列分块,\(B\) 按行分块,立即得到这个结论.

考虑用分块矩阵进行 Gauss 消元操作,我们可以得到一个叫舒尔补(Schur Complement)的东西.

\[\begin{bmatrix} I & 0 \\ -CA^{-1} & I \end{bmatrix} \begin{bmatrix} A & B \\ C & D \end{bmatrix} = \begin{bmatrix} A & B \\ 0 & D - CA^{-1}B \end{bmatrix} \]

逆矩阵

考虑同时对矩阵 \(A\)\(I\) 进行 Gauss-Jordan 操作,将 \(A\) 对角化,即令 \(A \to D\).这相当于我们对 \(A\) 左乘多次倍加矩阵 \(E\) 和置换矩阵 \(P\),最后变为对角阵 \(D\)

然后,我们对 \(D\) 进行一步归一化.左乘 \(D^{-1}\) 即可.设这些 \(E\)\(P\),以及最后 \(D^{-1}\) 矩阵的积(有顺序!矩阵乘法无交换律)为 \(M\),则 \(MA = I\).故 \(M\)\(A\) 的逆.由于我们对 \(A\)\(I\) 同步操作,则右侧的 \(I\) 将变为 \(MI = M\),这就得到了逆矩阵 \(M\)

上面操作可行的前提是 Gauss-Jordan 成功.若 Gauss-Jordan 失败,说明矩阵含有自由变元,证明矩阵是不可逆的.自由变元取不同的值,可以在相同的右值组下取到不同的解.换一种视角,则是不同的线性组合可以组合出相同的向量.这意味着向量一定线性有关.

矩阵在进行归一化前(即到达 \(D\) 时),\(D\) 对角线上的所有先驱之积\(D\)行列式\(P\)\(E\) 等操作不改变行列式,因此 \(A\) 的行列式也是同一个值.矩阵可逆等价行列式不为 \(0\).这是因为矩阵可逆等价于 Gauss-Jordan 的成功与否,这其实就是最后归一化的成功与否.对角线上的先驱之积都不为 \(0\) 则一定成功,有一个 \(0\) 则失败.

\[(AB)^{-1} = B^{-1}A^{-1} \]

这是因为撤销操作的时候应该是栈序的.

上三角的逆是上三角,下三角的逆是下三角.这一点可以对这两种矩阵 Gauss-Jordan 后明显看出.

上三角相当于压根不用 Gauss.Jordan 的时候,一直是在 \(I\) 的基础上,改变上三角中的元素,故最后求得的逆也是上三角.

下三角则是反过来,只有 Gauss 没有 Jordan.所以只会改变下三角元素.

有一种矩阵叫对角占优矩阵(diagonally dominant).定义为满足下面性质的方阵.

\[\forall i, |a(i, i)| > \sum_{j = 1} ^ n |a(i, j)| \times [j \ne i] \]

这样的矩阵列向量一定线性无关,因此矩阵可逆.

LU 分解

引入:对于下面两个倍加矩阵

\[E_{12} = \begin{bmatrix} 1 & 0 & 0 \\ -5 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad E_{23} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & -4 & 1 \\ \end{bmatrix} \]

\[{E_{12}}^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 5 & 1 & 0 \\ 0 & 0 & 1 \\ \end{bmatrix} \quad {E_{23}}^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 4 & 1 \\ \end{bmatrix} \]

我们有

\[E_{23}E_{12} = \begin{bmatrix} 1 & 0 & 0 \\ -5 & 1 & 0 \\ 20 & -4 & 1 \end{bmatrix} \quad {E_{12}}^{-1}{E_{23}}^{-1} = \begin{bmatrix} 1 & 0 & 0 \\ 5 & 1 & 0 \\ 0 & 4 & 1 \end{bmatrix} \]

首先,所有的倍加操作都是左乘,因此右边的是第一步操作,左边的是第二步操作,操作顺序和乘积顺序是逆序的.同时,对两步操作整体求逆时,两步操作分别求逆后,操作的顺序也要逆序.这些都是必须注意的细节.

其次观察为什么前者的乘积,元素 \((1, 3)\)\(20\),而后者是 \(0\)

原因是,当我们考虑对 \(A\) 先进行 \(E_{12}\) 变成 \(A'\),再进行 \(E_{23}\) 变成 \(A''\)\(E_{23}\) 用以倍加的第二行是 \(A'\) 的第二行,已经是新的,被第一行倍加影响过的第二行了,它不等同于 \(A\) 的第二行!因此两步操作的乘积作为 \(A''\) 相对于 \(A\) 变化的反映,第三行也要受到第一行的影响!

但是,当我们求逆后,先进行 \(E_{23}\),再进行 \(E_{12}\).你会发现第二步用以倍加的第一行从未被修改过,因此不会有这个多余的 \(20\)

铺垫结束后我们来看 LU 分解.对于 \(A\),假设我们可以进行若干 \(E\) 的操作后变为 \(U\)而不需要做行置换,即无 \(P\).可以记作

\[EA = U \]

\(E\) 是过程中用到的所有倍加矩阵的乘积,是一个下三角阵.对两侧左乘 \(L = E^{-1}\) 立即得

\[A = LU \]

即矩阵可以被分解为一个下三角和一个上三角的积.而 \(L\) 拥有性质:对于上面的引入,\(L\) 不会发生第一种情况,只会发生第二种情况,也就是倍加的顺序确保了每次用以倍加的行从未被修改过,保证 L 中的每个元素正好对应了所有先前倍加操作使用过的系数

简单说明.Gauss 消元用到的顺序大概满足这样一个东西:

for (int i = 1; i <= n; ++i)
  for (int j = i + 1; j <= n; ++j)
    E_ij;

求逆后倒序是什么东西呢?

for (int i = n; i; --i)
  for (int j = n; j >= i + 1; --j)
    E_ij^-1;

可以显而易见得看到:用来倍加的行 \(i\) 在使用的时候,从未被修改过.

更进一步,\(L\) 是一个对角线为 \(1\) 的阵,而 \(U\) 不是.因此我们又有 \(A = LDU\) 分解,提出一个对角阵 \(D\) 后,让 \(U\) 也对角线归一.

LU 分解的性质:

考虑 \(A\) 的某一行是 \(0\) 起手.于是这里不会被倍加 Gauss 消元,从而 \(L\) 的这里也是 \(0\) 起手,因为 \(L\) 是 Gauss 消元的记录

考虑 \(A\) 的某一列是 \(0\) 起手,那么这里在 Gauss 消元的时候永远不会被变化,从而 \(U\) 的这里是 \(0\) 起手,因为 \(U\) 是 Gauss 消元后的成果展示

LU 分解在计算机科学中的意义是记忆化.考虑我们要存下了一个 \(A\),然后随时会给一个 \(\bm b\),要求我们求 \(A \bm x = \bm b\).那么,我们可以考虑先将 \(A = LU\) 分解,根据上面的性质,\(L\) 保存了 Gauss 消元应当做的的全部操作记录.我们只需要将这些记录作用在 \(\bm b\) 上,就解得了方程

\[L\bm c = \bm b \]

接下来只需解 \(U \bm x = \bm c\)\(U\) 是尊贵的上三角阵,因此简单回代或 Jordan 都是可以的.

转置

\[(AB)^T = B^TA^T \]

经过矩阵乘法视角的洗礼,这个等式很容易感性理解正确性.矩阵乘法的左右乘其实就是行与列置换了一下的区别

\(B = A^{-1}\),得 \((A^T)(A^{-1})^T = I\),即

\[(A^T)^{-1} = (A^{-1})^T \]

我们可以用这个记号表示向量点积:\(\bm x^T \bm y\).这里又有一个更数学化的转置定义:

\[(A\bm x)^T \bm y = \bm x^T(A^T\bm y) \]

\(A \bm x\)\(\bm y\) 的点积,和 \(\bm x\)\(A^T \bm y\) 的点积相等.

称转置与自己相等的矩阵为对称矩阵,用 \(S\) 表示.

\(S\) 可逆,则 \(S\) 的逆一定对称.\((S^{-1})^T = (S^T)^{-1} = S^{-1}\)

对于任意矩阵 \(A\),我们有两种方法可以生成对称矩阵 \(S\)\(A^TA\)\(AA^T\)

\(A^TA\) 为例.\(A^TA(i, j)\)\(A^T\) 的第 \(i\) 行与 \(A\) 的第 \(j\) 列点积,即 \(A\) 的第 \(i\) 列与第 \(j\) 列点积.不难看出 \(i\)\(j\) 交换还是这个值,点积是有交换律的.

同时可以注意到,\(A^TA\) 拥有非负的对角线(而且大概率是正的).因为 \(A^T(i, i)\)\(A\)\(i\) 列向量点积自己.

\(S\) 可以做 LU 分解.但真正保留对称性结构的是 LDU 分解,此时 \(U = L^T\),这称作 \(LDL^T\) 分解.

\[S^T = (L^T)^TD^TL^T = LDL^T \]

置换

交换矩阵 \(P_{ij}\) 是将 \(I\) 的第 \(i\)\(j\) 行交换的结果.左乘交换行,右乘交换列.是特殊的置换矩阵.

交换矩阵随便相乘,可以凑出所有置换矩阵.交换矩阵的逆,置换都是自己.置换矩阵的逆,置换也一定是置换矩阵.这都比较显然.不太显然的是:置换矩阵的逆与置换相等

  • 视角一:置换矩阵拆成交换矩阵的积,对这个过程求逆,以及置换,由于交换矩阵的逆和置换都等于自己,因此两个过程都是将交换矩阵倒序相乘,故相等.
  • 视角二:直接证明 \(PP^T = I\).从略.

带排列置换之后,任何可逆方阵都可以 LU 分解了.写作

\[PA = LU \]

\(P = I\) 是先前的情形,这种情况能 LU 分解的要求更高:\(A\) 的任一左上子方阵可逆.

线性空间

\(n\) 维实列向量构成的全体向量集合是一个线性空间 \(\R^n\).还有其他线性空间,如 \(n\) 阶多项式线性空间 \(\mathbb P_n\)(次数 \(\le n\).注意次数 \(=n\) 不可,最高次项被消去后不封闭),

线性空间,以及子空间都必须具有线性组合封闭性.同时需要注意三维中的一个平面并不是 \(\R^2\),而是 \(\R^3\) 的一个子空间.

线性空间必须满足八条运算律.由于子空间直接继承线性空间的所有运算,运算律的成立是自动满足的.八条运算律如下:

  • \(\bm x + \bm y = \bm y + \bm x\)
  • \(\bm x + (\bm y + \bm z) = (\bm x + \bm y) + \bm z\)
  • 存在零元 \(\bm 0\),对任意 \(\bm x\)\(\bm x + 0 = \bm x\)
  • 对任意 \(\bm x\) 存在唯一 \(-\bm x\),使得 \(\bm x + (-\bm x) = \bm 0\)
  • \(1 \bm x = \bm x\)
  • \((c_1c_2)\bm x = c_1(c_2 \bm x)\)
  • \(c(\bm x + \bm y) = c \bm x + c \bm y\)
  • \((c_1+c_2)\bm x = c_1 \bm x + c_2 \bm x\)

前四条关于 \(\bm x + \bm y\),5~6 关于 \(c \bm x\),7~8 则是综合.

线性组合封闭性有一重要推论是子空间必有零元.因为 \(0 \bm v\) 也是一种线性组合.

常见的子空间反例:不经原点,半平面 / 四分之一平面(封闭性非常容易崩).

回到矩阵.我们知道矩阵有线性组合视角.对 \(A \bm x = \bm b\),将 \(\bm x\) 任意线性组合生成的子空间称作列空间,设为 \(C(A)\).则方程是否可解被转化为了一个判断 \(\bm b \in C(A)\) 的问题.

posted @ 2025-12-01 21:10  dbxxx  阅读(4)  评论(0)    收藏  举报