线性代数

This work is licensed under CC BY-SA 4.0

作者:gtj, 转载请注明出处

本文内容 可能会 被整合入 LALU 中, 但是暂未完成整合, 此处先行发出供大家阅读.

前言

线性代数是大部分初学者感到头疼的一门课, 在阅读了学校教材后我发现它没有叙述很多现象背后更为本质的东西, 丢掉了很多重要的几何直觉从而变为纯粹的演算和证明. 3b1b的系列视频 (https://www.bilibili.com/video/BV1ys411472E) 提供了非常好的几何直觉, 我从这系列视频入门, 度过了相对平缓的学习过程. 受此启发, 我决定写一篇线性代数的笔记, 记录下我对线性代数的认识, 希望能为大家带来更好的学习体验. 这些笔记面向的对象既包括初学的学生, 也包括学完后了解概念而希望重新学习的人, 其中后者阅读可能更为方便, 因为文中的概念可以和课堂互相印证.

在开始写时, 我尝试着为线性代数的初学者们提供一种较为优雅而又不过于抽象的引入方式. 但是后来我发现为了触及本质的内容还是有必要在开始引入线性映射和抽象线性空间这些略微抽象的概念来搭建起线性代数的框架, 从而达到内容的大一统. 文中的内容主要是基于以下逻辑:

  1. 考虑某两个线性空间

  2. 考查它们之间的映射具有什么性质, 在此基础上可以定义什么不变量

好处是逻辑连贯, 研究的方法固定, 然而这一过程并非起源于具体的问题, 而是从线性映射的大背景导出, 还望作者先入为主地接受“研究线性映射很重要”的这一说法, 再跟随这些笔记梳理各种映射的性质. 每章后面包括若干习题, 笔者暂时没有做答案, 但是这些问题都是笔者认为较为重要的, 常常能够辅助理解.

虽然经过了几次检查, 但由于笔者本人水平限制, 仍然难免有疏漏或错误, 如果您对内容有任何建议, 欢迎发送邮件到 2847562832@qq.com

目录

第0章 集合、函数和记号

第1章 线性空间和线性映射

第2章 从 RmRn —— 矩阵怎么来的

第3章 从 RnV —— 基和表示理论

第4章 从 (Rn,)H —— 内积和正交化

第5章 从 VV —— 特征值和行列式


 

第0章 集合、函数和记号

注:本文中的句号都是点号, 这有利于防止与下标 0 混淆.

集合

大家高中都学过, 集合可以包含很多东西. 如果 x 是集合 A 的元素, 记 xA, 否则记 xA. 如果 xA 可以推出 xB 则称 AB, 如果 ABBAA,B 有相同元素, 即 A=B.

下文中实数和复数的记号分别为 RC, 其中 C 中的元素形如 a+bi, 对于集合 A, 记号 An 表示包含所有元素来自 An 元组的集合, A×B 则包含了所有 A,B 中元素构成的有序对, 有序对前一个元素来自 A, 后一个来自 B.

例如, 令 A={1,2}, B={1,2,3} 则有 A×B={(1,1),(1,2),(1,3),(2,1),(2,2),(2,3)} A3={(1,1,1),(1,1,2),(1,2,1),(1,2,2),(2,1,1),(2,1,2),(2,2,1),(2,2,2)}.

在具体用词上, 有时我们用“空间”来代替“集合”, 同时用“点”代替“元素”.

函数

从集合 A 到集合 B 的函数 f 记作 f:AB, 对每个 xA, 它分配一个 yB, 我们称之为 y=f(x). 如果 x1x2 时总有 f(x1)f(x2) 则称 f 是单射(或称 f 单), 反过来说, 单射要求每个 f(x1)=f(x2) 时可以推出 x1=x2. 如果一个对每个 yB 都有 y=f(x) 对某个 xA 成立, 则称 f 是满射(或 f 满), 既单又满的映射被称为双射.

A 被称为定义域, B 被称作陪域(并非值域). 对于 A 的子集 X, Y={f(x)|xX} 称作 Xf 下的像, 对于 B 的子集 Y, X={xA|f(x)Y} 称为 Yf 下的原象. 注意:虽然我们在使用反函数的记号, 但是其实并没有依赖于反函数的定义, 当 f 是双射时, f1 才能给出一个 BA 的反函数. 特别地, f(A) 称作 f 的值域.

有时我们使用“映射”来代替“函数”.

数学对象

通常我们关心的不是集合其中的元素或集合本身, 而是其上的数学结构. 例如, 当讨论实数集时, 我们实际上在讨论附加了额外结构的实数, 这里指的是 +,×,, 其中 +,× 是实数上的二元运算, 为序关系(减法和除法可以由加和乘自然导出). 虽然正式记号是 (R,+,×,), 但是为了方便我们通常只写 R, 但是一定要有 R 带有额外结构的认识.

既然“有趣”的对象通常有额外的结构, 我们考虑的映射通常保持对应的结构. 例如, 如果 f(x1+x2)=f(x1)+f(x2) 则称 f:AB 保持了加法, 这里 x1+x2f(x1)+f(x2) 的加法各自是 AB 中的加法(并不一定完全相同).

如果 A,B 之间有保持“一定”结构的双射则称 f 给出 AB 的一个同构(“一定”的具体含义取决于语境).

练习

0.1A={1,2},B={1,2,3}, 分别写出 A×BB×A, 并说明这个乘积不具有交换性.

0.2 定义 A+B={x+y|(x,y)A×B}. 如果 A={1,1,2}, 写出 A+A.

0.3 考虑映射 f:R2C, 其中 f(x,y)=x+yi, 证明 f 为双射.

0.4 对函数 f:R+R, 其中 f(x)=x+alnx, a 为实常数, f 何时为 (1) 单射 (2) 满射 (3) 双射.

0.5 写出 C 的数学结构并指出其与 R 的异同.

0.6 Q 为有理数集, 你能找到所有保持加法的 f:QQ 吗?证明你的结论.

 

第1章 线性空间和线性映射

线性空间

从很多领域都可以引出 K-线性空间(或 K-向量空间)的概念, 其正式定义为一个域 K 上的三元组 (V,+,), 满足八条性质. 通常, K 中的元 素称为标量, V 的元素称为向量, +:V×VV 称作向量加法, :K×VV 称作标量乘法.

八条性质分别为:

(1) 对于所有 α,βV, 有 α+β=β+α (向量加法的交换律) (2) 对于所有 α,β,γV, 有 (α+β)+γ=α+(β+γ) (向量加法的结合律) (3) 存在 0V, 使得对于所有 αV, 0+α=α (向量加法的零元素) (4) 对于每个 αV, 存在 βV 使得 α+β=0, 记作 α (向量加法的逆元素) (5) 对于所有 αV, 有 1α=α (标量乘法的单位元素) (6) 对于所有 k,lKαV, 有 (kl)α=k(lα) (标量乘法的结合律) (7) 对于所有 kKα,βV, 有 k(α+β)=kα+kβ (标量乘法的左分配律) (8) 对于所有 k,lKαV, 有 (k+l)α=kα+lα (标量乘法的右分配律)

对于初学者来说, 一次性看到八条公理可能看起来很可怕, 但实际上确实有必要. 将 K 替换为 RC, 我们就得到了实/复线性空间的定义.

练习: 如果你想要抱怨, 请拿起一本线性代数的课本, 用手把它举起来10分钟, 保持手臂垂直于身体. 并且验证举着这本书比读下去更加痛苦的结论.

最平凡的情况是 {0}, 其中仅包含一个零向量. 为了方便起见, 我们将其写为 0 而不是 {0} (本文中 0 会用于表示:数域中的零元素、线性空间中的零向量、平凡线性空间以及例子中会提到的零映射, 这样的符号混用在数学中很普遍, 读者需要根据上下文区分其具体含义). 另一个简单的例子是 K 本身, 因为域本身具备满足结合律、交换律以及由分配律连接的加法和乘法运算(换言之, 矢量和标量的概念并非互斥).

如果 V1VV1V 都是 K-线性空间, 那么 V1 称作 V 的(K-线性)子空间. 根据定义可以推出, 如果 V1V 中定义的加法和乘标量乘法封闭, V1V 的线性子空间. 从 V 继承的向量加法和数乘保证了 V1 满足其他公理. 如果 V1V2V 的两个子空间, 可以证明 V1V2 也是一个子空间(留作练习). 然而, 并集 V1V2 并不总是一个线性子空间, 因为它可能对加法不封闭. 我们用 V1+V2 表示集合 {α+βαV1,βV2}, 并称其为由 V1V2 张成的空间. 这是包含 V1V2 并对向量加法和标量乘法封闭的最小空间(也留作练习).

如果 V1,V2K 线性空间, 则用 V1V2 表示 {(α,β)αV1,βV2} 并称之为 V1V2 的直和, 其上的运算定义为 (α1,β1)+(α2,β2)=(α1+α2,β1+β2), k(α,β)=(kα,kβ). 通过简单观察不难发现直和和前一章所述集合的直积几乎相同, 唯一区别是“直和”这一用语专用于线性空间而不是一般的集合. 虽然 K 是其自身上的线性空间可能并不能引起大家足够的重视, 但是 Kn, 其中 n 为整数是一族重要的线性空间(回忆上一章集合 n 次方的定义). 它们带有上文所述的矢量加法和标量乘法, 是我们下一章研究的主要对象.

线性映射

V1,V2K-线性空间, 则一个 K-线性映射 φ:V1V2 是满足以下条件的映射:

(1) 对于所有 α,βV, 有 φ(α+β)=φ(α)+φ(β) (2) 对于所有 kK,αV, 有 φ(kα)=kφ(α)

因此, 我们可以说线性映射保持向量加法和标量乘法.

线性映射的像, 记为 Imφ, 表示 φ(V1), 或称之为 φ 的值域. 线性映射的核, 记为 Kerφ, 表示 φ1(0).核是零点的集合. 读者可以轻松地验证 ImφV2 的线性子空间, 而 KerφV1 的线性子空间.

如果 V1=V2=V, 则称 φV 上的线性变换.

如果 φ 是双射, 则称 φ 给出了 V1V2 之间的线性同构.

例子

下面的例子主要是 R 上的例子, 因为 R 是我们最熟悉的数域, 有利于初学者理解.

一些仅违背了一条公理的例子, 这使它们不能成为线性空间, 以下的加法均表示 RC 上原有的加法:

一些空间中的图形, 有的是线性空间, 有的不是, 读者可以自己脑补一下图:

此外是一些略微抽象的例子, 不像前面那样可以用直观感觉想象:

最后考虑一些线性映射的例子. 在读之前, 请先自行验证线性映射一定将零向量映射到零向量.

练习

1.1 证明对于线性空间 V 的子空间 V1V2, 它们的交集也是一个子空间, 并且 V1+V2 是包含 V1V2 的最小子空间.(这里的"最小"是指对于任意包含 V1V2 的子空间 V3, V1+V2V3).

1.2 对线性空间中的两个向量 α,β, 如果 kα+lβ=0 不能推出 k=l=0, 则称向量 α,β 共线. 我们已经知道 R2 上有一个标准的加法和标量乘法结构, 现在 R2 上定义新的运算 +~, 如果 α,β 共线, 定义 α+~β=α+β, 若 α,β 不共线, 定义 α+~β=0, 并记 仍表示 R2 上标准的标量乘法. (R2,+~,) 是否构成 R 上的线性空间?

1.3 对于那些满足线性空间条件的示例, 请验证公理成立. 对于不满足条件的示例, 请通过给出一个或多个反例来证明它为什么不满足公理. 此外指出并证明它满足了哪些性质.

1.4 对于将 R2 中的向量 (x1,x2) 映射为 (x2,0) 的线性变换 φ, 找出它的核和像.

1.5 你能找到所有从 RRn 的线性映射吗?

1.6 你能找到所有从 RnR 的线性映射吗?

1.7 证明线性映射 φ:R2R 的核不可能为 0, 并从另一个角度解释这个结果.

1.8 证明线性映射 φ:RR2 像不可能为 R2, 并从另一个角度解释这个结果.

1.9 证明对于线性空间 V 的子空间 V1V2, 如果 α1V1, α2V2, α1V2α2V1, 那么 α1+α2 不属于 V1V2.

1.10V1={(x1,x2,0)x1,x2R}, V2={(x1,0,x3)x1,x3R}. V1+V2V1V2 相同吗? R3 中的加法将 V1V2 线性映射到 V1+V2, 找到它的核, 把 V 中元素拆分成一对分别来自 V1,V2 中的向量的不同方法与这个核有什么关系.

 

第2章 从 RnRm —— 矩阵怎么来的

矩阵 —— 行的视角

看之前请确保你做完了之前一章的习题(什么?您还没有完成练习题?回去做练习, 请, 做完再来. )在本章中, 虽然在 R 还是随便的什么域 K 上讨论并不影响我们的结果, 但是我们还是把主要关注点将放在 Rn 上. 然而, 值得注意的是, 将 R 替换为任意域 K 对我们的结果并没有太大影响. 为方便起见, 我们将在本文中讨论 R 上的情况. 在本章中, 默认情况下, 当我们提到向量空间时, 我们指的是实向量空间, 其中向量加法和标量乘法是标准的向量加法和标量乘法, 其中标量乘法中的点符号, 比如说 kx 里面的点, 将被省略.

首先考虑最简单的例子:当 m=n=1 时. 假设有线性函数 φ:RR, 对于任意的 xR, 有 φ(x) 表示为 φ(x1)=xφ(1)=kx, 其中 k=φ(1) 是一个常数. 用 [k] 表示这个映射, 则 φ(x)=kx. 换句话说, [k]φ 函数的一个别名. 和 φ 唯一的区别就是记号不同, [k] 直接表明了它是干嘛的.

现在考虑 Rn 上的线性函数, 即 φ:RnR. 回忆上一章的练习, 你会发现这个函数只能是 φ(x1,x2,,xn)=k1x1+k2x2++knxn. 我们可以把这个映射记作 [k1k2kn]. 对于 n=1 时, 这个符号与上一段的相兼容. 再次强调, 到目前为止, 这个符号只是映射的一个别名, 我们并没有赋予它任何额外的含义. 在某种程度上, 如果你学过哪门包含 lambda 表达式的编程语言, 你会发现它差不多就是个 lambda 表达式

例如, [23] 可以用 Python 表示为:

如果你在 Python 中运行以下代码:

结果将与下面的代码相同:

利用我们刚刚定义的的符号, 可以写出 [23](2,1)=22+31=7. 有些人一看, 哦, 这不向量内积吗, 虽然确实有关系, 但是我不打算在这章讲.

同样地, 来考虑 φ:RnRm 的情况. 这个映射可以写成 y=φ(x)=(φ1(x),φ2(x),,φm(x)), 我们断言它每个分量 φi (1im) 都是一个实值线性函数. 这意味着 φi 必须具有形式 φi(x1,x2,,xn)=ki1x1+ki2x2++kinxn. 把 φi 按行排列, 我们得到了一个数表用于表示一般的线性映射:

[k11k12k1nk21k22k2nkm1km2kmn]

所以这就是矩阵. 每一行表示原始空间如何线性映射到新空间的相应分量上. 因此, 元素 kij 表示 Rn 的第 j 个分量如何影响 Rm 的第 i 个分量. 例如, 如果我们想计算:

[211203](1,2)

左边的矩阵表示一个从 R2R3 的线性映射.(我们没有, 也不打算给它一个具体的名称, 如 φ ) 右侧的向量 (1,1)R2 中的一个元素. 计算它需要一步步来. 首先, 第一个分量, 根据我们的定义: 21+12=4. 第二个: 11+22=5. 第三个: 01+32=6. 所以结果是 (4,5,6).

这个过程可以理解为将 R2 中的向量从矩阵的上方输近期, 将相应的项相乘, 并将它们求和并从矩阵左侧输出.

1242 11 251 12 260 13 2

矩阵 —— 列的视角

在上一节中, 我们将注意力集中在将 Rm 分割为 m 个分量, 并分别考虑 xRn 到它们的函数, 这是行的视角. 现在, 换成把 Rn 分割为其各个分量, 这次就是列的视角了.

为了研究矩阵的列, 首先观察一列的元素有什么共同点. 对于 φ:RnRm, 记 y=φ(x), 并记 kijφ 的矩阵表示中第 i 行第 j 列的分量, 根据上一节的定义:

y1=k11x1+k12x2++k1nxny2=k21x1+k22x2++k2nxnym=km1x1+km2x2++kmnxn

改写一下这个式子的写法, 按照 x 的分量整理, 我们可以把它重写成:

(y1,y2,,ym)=   x1(k11,k21,,km1)+x2(k12,k22,,km2)++xn(k1n,k2n,,kmn)

我们发现这里每个向量都对应到矩阵的一列, 矩阵中第 j 列的数值都与向量 x 的第 j 个分量有关. 令 (1,0,,0) 表示为 e1, (0,1,,0) 表示为 e2, ……, (0,0,,1) 表示为 en. 显然 Rn 中的任意向量 x 可以唯一地表示为 j=1nxjej.

回顾前一章的练习, 我们发现从 RnRm 的线性映射 φ 完全由其在 ej 处的取值决定, 这是因为 φ(j=1nxjej)=j=1nxjφ(ej). 将这与上述公式进行比较, 我们得到了矩阵的列解释:每一列对应于 Rm 中的一个向量, 而每个 Rn 中的向量通过对列进行线性组合而映射到 Rm.

所以我们可以用另外一种方式考虑矩阵作用, 仍然考虑:

[211203](1,2)

这次我们换个方法计算:

[211203](1,2)=1(2,1,0)+2(1,2,3)=(4,5,6)

虽然计算的方法变了, 但是结果没变, 因为两种方法本来就是等价的.

集合在矩阵下的像 —— 一些例子

既然矩阵表示线性映射, 那这个映射的图像长什么样?来看几个例子.

[k]:RR, y=[k](x)=kx 就是个正比例函数

In:RnRn, 用 In(x)=x 表示 Rn 上的恒同映射, 在上一章中我们用 Id 表示它, 在映射下 ej 的像就是 ej, 所以除了对角线上全是 1, 其它元素都是 0. 这个矩阵也被称为 n 阶单位矩阵, 它一个图形原封不动地映射到自身.

[k1k2]:R2R, y=[k1k2](x1,x2)=k1x1+k2x2 在空间中的图像是一个平面.(如果你对平面方程不熟悉, 打开https://www.geogebra.org/3d, 试着输入z = 3x + 2y来画一个平面)

φ=[k1k2]:RR2, 选择一个 k1,k2, 如果你选择困难, 就试试 k1=1,k2=2, 对于若干个点 x, 描出对应的 φ(x), 如果你选的 k 不全为 0, 这些点会在一条直线上运动, 这条直线就是矩阵的像.

对于 φ=[k11k12k21k22]:R2R2, 画出它的图像并不容易, 所以不妨考虑单位正方形([0,1]×[0,1])在映射下的像, 从而了解它如何作用于平面. 由于 φ(x1,x2)φ(e1)φ(e2) 的线性组合, 如果二者不共线, 结果应该是一个平行四边形.

例如, 考虑 φ=[210.51.5], 可以画出单位正方形在映射下的像如下:

通过观察样例, 你大概可以想象它如何作用于平面.

映射的复合和矩阵乘法

众所周知, 如果有一个 ψ:V1V2, φ:V2V3, 那么可以写出它的复合映射 φψ, 其将 xV1 映射到 (φψ)(x)V3, 其中 (φψ)(x)=φ(ψ(x)), 它们连接的方式像下图这样, 下图一般被称作叫交换图:

稍微停下来想想为什么 φψ 都线性的时候它们的复合也是线性的, 我们可以这样证明(纯粹的用定义和倒腾记号):

(φψ)(kα)=φ(ψ(kα))=φ(kψ(α))=kφ(ψ(α))=k(φψ)(x)(φψ)(α+β)=φ(ψ(α+β))=φ(ψ(α)+ψ(β))=φ(ψ(α))+φ(ψ(β))=(φψ)(α)+(φψ)(β)

V1Rn, V2Rp, V3Rm, 则一个 p×n 的矩阵给出一个 V1V2 的映射 ψ, 一个 m×p 的矩阵给出一个 V2V3 的映射 φ, 所以它们的复合 φψ 可以表示为一个 RnRm 的映射, 这可以表示为一个 m×n 的矩阵. 注意到先作用的矩阵写在后面, 这可能和日常书写方向有一定差别. 所以映射的复合实际上给出了矩阵乘法. 由于两个映射复合的要求, 左边这个矩阵的列数和右边这个矩阵的行数必须匹配.

一个重要的结果是矩阵乘法满足结合律, 也就是说如果 φm×p 的矩阵, ρp×q 的矩阵, ψq×n 的矩阵, 则 (φρ)ψ=φ(ρψ) 成立, 因为两边的式子都定义为 φ(ρ(ψ(x))), 从下图明显可以看出上式成立:

2-3.svg

到目前为止, 我们还只知道映射复合的性质, 不知道映射复合或称之为矩阵乘法的公式, 所以接下来我们要探索这个问题. 我个人比较喜欢从列的角度看矩阵, 所以下面的内容是从列的角度来的, 如果你习惯行, 你大可以从行的角度导出相同的结果.

假设 RnψRpφRm, 为了计算 φψ 的每一列, 即 ejφψ 的像, 我们只需要找到 ψ(ej)φ 下的像. 假设 φ 矩阵表示中第 i 行第 t 列元素为 ait, ψ 矩阵表示中第 t 行第 j 列的元素为 btj, 则 ejψ 下的像为 ψ(ej)=(b1j,b2j,,bpj), 即 ψ 矩阵表示的第 j 列对应的向量. 于是根据矩阵作为线性映射的定义, 我们有:

φ(ψ(ej))=[a11a12a1pa21a22a2pam1am2amp](b1j,b2j,,bpj)=(a11b1j+a12b2j++a1pbpj,  a21b1j+a22b2j++a2pbpj,  , am1b1j+am2b2j++ampbpj)

所以复合映射的矩阵第 i 行第 j 列应该是

ai1b1j+ai2b2j++aipbpj=t=1paitbtj

对于所有的 i,j 列出来, 得到乘积矩阵长这样

φψ=[pt=1a1tbt1pt=1a1tbt2pt=1a1tbtnpt=1a2tbt1pt=1a2tbt2pt=1a2tbtnpt=1amtbt1pt=1amtbt2pt=1amtbtn]

回忆这个图:

2-4.svg

我们发现 Rn 中第 j 个分量影响 Rm 中第 i 个分量的结果(即乘积矩阵第 i 行第 j 列的值)可以视作把所有通过 Rp 的可能路径加了起来. 如果你仍然对什么叫把所有可能路径加起来感到疑惑, 请思考如下问题:一个醉鬼在大街上漫无目的地游荡, 每一步只能向前或向后走, 且走下一步时有 20% 的可能转向, 如果他某一步在向前走, 那么他两步后向前走的概率为多少?

其实非常简单:为了让方向和两步之前保持相同, 如果他第一步没转向, 这时他第二次也不应该转向, 则可能性为 80%×80%=64%, 如果他第一步转向了, 他第二步应该转回来, 可能性为 20%×20%=4%, 所以总的概率时 64%+4%=68%, 这就是我说的把所有中间可能经过的状态加起来. 类似地, 如果有 φ,ρ,ψ 矩阵表示中的元素分别为 ait1,bt1t2,ct2j, 且关系如下:

2-3.svg

则乘积矩阵中第 i 行第 j 列的元素应该为

t1=1pt2=1qait1bt1t2ct2j

这同样可以通过“对所有可能的路径求和”来解释

2-5.svg

如果从计算的角度上看, 我们也可以用蛮力证明矩阵乘法的结合律.(但是我认为not elegant)我们假设读者读到这里已经清楚矩阵乘法是如何从映射复合中导出的, 既然结合律成立, 接下来我们将会略去矩阵乘法间的复合符号, 因为结合顺序不改变结果.

又是符号混用 —— 感觉还行

如果我们把应该 RRn 的映射和一个 n×1 矩阵做对比, 我们发现它们干的事情是相同的:

一个 n×1 矩阵把 tR, 线性映射到 xRn. 而一个向量通过数乘也能给出 RRn 的线性映射, 而且二者结果完全相同.

[k1k2kn](t)=(k1t,k2t,,knt)t(k1,k2,,kn)=(tk1,tk2,,tkn)

R 上(或者说任何数域)上的乘法可交换, 所以上面两个是相同的, 从作用在 R 上看, Rn 中向量和 n×1 矩阵作用完全相同.

接下来考虑一个 m×n 的矩阵对它们有什么影响, 首先, 根据上一节矩阵乘法的公式:

[k11k12k1nk21k22k2nkm1km2kmn][x1x2xn]=[k11x1+k12x2++k1nxnk21x1+k22x2++k2nxnkm1x1+km2x2++kmnxn]

同时根据矩阵的定义:

[k11k12k1nk21k22k2nkm1km2kmn](x1,x2,,xn)=(k11x1+k12x2++k1nxn,  k21x1+k22x2++k2nxn,  , km1x1+km2x2++kmnxn)

通过比较二者, 我们除了符号没有发现任何区别, 所以我们说 Rn 中向量和 m×1 的矩阵有着典范对应关系.(什么是典范一会再说)对于每一个 xRn, 都可以找到一个 φ:RRn 满足 tx=φ(t), 且反之亦然. 所以我们大胆丢掉原本 Rn 中向量的符号, 把它们全部换成矩阵记号并且称一个单列的矩阵为一个列向量. 所以现在 Rn 中的元素也是矩阵, RnRm 的映射也是矩阵. 有一句话说到:“人是一切社会关系的总和“, 这也差不多, 一定程度上我们不关心一个数学对象原本是什么, 我们更关心一个它如何和其它对象产生关系.

为了解释数学中”典范“一词的含义, 先来考虑行向量和列向量的关系, 有些人一想就觉得二者肯定是一一对应的, 只需要改个方向写就行. 虽然它们确实可以这么对应起来, 但是通常不认为它是典范的, 这是因为行向量和列向量做的事完全不一样, 行向量把 R 映射到 Rn, 但是列向量刚好相反, 所以它们本质上并不相同(有人又要说了, 列向量不也能通过内积把 Rn 映射到 R 吗, 对于一个 v, 内积 v,Rn 映射到 R, 其中 x 被映射到 v,x 但是问题在于这个同构依赖于内积, 而一个向量空间并不总是定义了内积, 所以二者还是有本质区别的)

总的来说, 典范的意思是一个对应关系或者表示方法在一定的语境下足够自然或者标准. 典范的含义是在一定程度上是最优且唯一的表示方法, 所以, 如果我们用 Rm×n 表示从 m×n 的矩阵全体, 则 Rn×1Rn 之间有典范的同构, 但是和 R1×n 之间则没有.

线性方程 —— 高斯消元

一个线性方程(组)是一组如下形式的等式:

k11x1+k12x2++k1nxn=y1k21x1+k22x2++k2nxn=y2km1x1+km2x2++kmnxn=ym

最经典且直接的解法是高斯消元, 一层层地消元直到化简到最简单的方程.

首先假设 k110, 通过从 yi (i2) 中减去 ki1k11y1 可以消去 ki1 所在的项, 在这次操作后, 方程会变成:

k11x1+k12x2++k1nxn=y1+(k22k21k11k12)x2++(k2nk21k11k1n)xn=y2+(km2km1k11k12)km2x2++(kmnkm1k11k1n)xn=ym

通过从 y2ym 中解出 x2xn, 我们可以很容易解出 x1, 所以解一个 n 元方程的问题变成了解 n1 元方程的问题, 一层层消下去只需要把 x1 解出即可.

如果 k11=0, 但是它的下方有非 0 的数字, 只需要把这一行和非 0 开头的行交换即可继续消元.

如果第一列的所有元素都是 0, 那么这个等式就和 x1 完全没关系, 所以实际上只剩下了 n1 个未知数.

通过这一套操作下来, 我们可以一步步把问题化简到剩余一个等式, 例如如果我们想解:

x1+2x2+3x3=14x1+5x2+6x3=27x1+8x2+9x3=3

首先拿第二列减去 4 倍的第一列, 拿第三列减去 7 倍的第一列:

x1+2x2+3x3=13x26x3=26x212x3=4

接下来拿第三列减去两倍的第二列:

x1+2x2+3x3=13x26x3=20=0

我们发现 x3 是一个自由变量, 令 x3=t, 则

2=3x26tx2=2t+23

1=x1+2(2t+23)+3tx1=t13

所以原方程的解为

[x1x2x3]=[t132t+23t]

如果经过消元得到了类似 0=1 的式子, 这就导出了矛盾, 这时方程无解.

把线性方程用矩阵语言重写一遍吧

显然我们可以用矩阵语言重写线性方程:

[k11k12k1nk21k22k2nkm1km2kmn][x1x2xn]=[y1y2ym]

使用 Ri2kRi1 代表将第 R2 行减去 k 倍的第 R1 行, 用 Ri1i2 表示交换两行. 此外, 由于 y 会和系数一起变化, 上面我们做过的操作可以写成(其实还可以回代把上面的一些消掉):

[123145627893]R37R1R24R1[12313626124]R3R2[123136200]

矩阵的空白处表示 0, 所以它们被省略掉了. 虽然我们看起来像是给矩阵加了一列然后把它们一起操作, 但是实际上这和 3×4 的矩阵没有任何关系, 因为实际上我们并不需要一个 R4R3 的映射. 不过它们的操作方式相同并非巧合, 如果用线性方程来解释, 可以说右边的 y 必须和左边的系数同时改变, 但是其实有另一个方法可以用线性映射解释这件事.

以第一步为例, 我们通过 R24R1R37R1, 将 y 变为 y, 其中

y=[y1y24y1y37y1]=[14171]y

所以映射 ρ:yy 是一个线性映射. 更重要的是 ρ 可逆.(可以通过反向操作把 y 变回 y )所以从 φ(x)=y 解出 x 和从 φ(x)=y 等价. 由于一个矩阵左乘另一个矩阵等价于左乘它的每一列, 所以 y 应当和系数矩阵一起变动, φφ 更好处理, 所以我们通过一个行变换将 φ 变为了 φ, 同时将 y 变为了 y.

2-6.svg

虽然前文已经用几种方式展示了解线性方程的过程, 但我还是想画个图来展现这个过程. 如果有如下的线性方程

[210.51.5][x1x2]=[11]

它可以通过同步操作 φy 来解出( R147R2 被称作回代, 它把每行第一个非零元素上方的项消除):

[2110.51.51]R2+14R1[2111.751]R147R2[22/71.751.25]R2×47R1×12[11/715/7]

与此同时, φ 是这样变化的

2-7.svg

消元之后, 称每行第一个非零元素为一个主元.(或阶梯头)根据消元的规则可知主元下方的数字都是 0, 此时矩阵变为了一个阶梯形(这通常被称为行阶梯形式), 下面标红的数字是消元后的主元. 如果最后一列(也就是 y 所在的这一列)出现了主元, 则左侧为 0 而右侧非零, 导出了矛盾从而导致无解. 如果主元全部在左侧(也就是原本的矩阵所属的范围), 那么这个方程有解. 此时我们可以自由选择非主元列对应的 x 分量的值, 主元对应的 x 分量可以从中一一解出, 所以非主元列对应的变量又称为自由变量.

[123136200]

注意到解一个线性方程是从 y=φ(x) 中解出 x 的过程, 如果 yImφ 则有解, 如果 yImφ 则无解.(回忆像的定义)为了检验 y 是否在像中, 只需要检验最后一起消元之后 y 所在的列有没有主元. 当有解时, 如果 y=φ(x1)=φ(x2), 则有 φ(x1)φ(x2)=φ(x1x2)=0, 这意味着 x1x2Kerφ, 所以方程的解集具有结构

{xy=f(x)}={,yImφx+Kerφ,yImφ

这里 x 代表原方程某个特定的解, x+Kerφ{x+v|vKerφ} 的简写

假设一个线性方程有解, 则我们可以通过令所有自由变量为 0 来解出一个特解, 通过把注意力放到 Kerφ, 或称作 φ(x)=0 上, 我们可以先把 y 放到一边, 先专注地处理 φ, 假设 φ 化为行阶梯形式后矩阵有 r 个主元, 则有 nr 个自由变量. 如果 n=r, 则没有自由变量, Kerφ=0, x 是唯一解, 如果 n>r, 每次令一个自由变量为 1, 其它为 0, 可以在 Kerφ 中找到一系列向量 u1unr. 根据核是一个线性空间, 这些向量的线性组合 t1u1++tnrunr 也在核中, 再结合主元对应的变量可以从自由变量的值解出, 我们断言 φ(x)=0 解在第 j 个自由变量取值为 tj 时只能为 t1u1++tnrunr. 故 Kerφ 中的元素都可以被唯一表示为 t1u1++tnrunr 的形式, 再加上特解可得 φ(x)=y 的解都具有形式 x=x+t1u1++tnrunr, 这被称为线性方程的通解.

φ=[k11k12k13k1nk21k22k23k2nk31k32k33k3nkm1km2km3kmn] ρ φ=[0]

( 代表一个任意的数, 0 意味着下面的数都是 0. 我们没有给 对应的数指定一个具体的符号, 因为我们不关心它们具体的取值, 只关心这个矩阵长什么样, 标红的表示主元, 是非 0 的数 )

注意到 rm 成立, 所以对于 m<n, 有 nr>0 成立, 此时一定存在自由变量. 既然核不为 0, φ(x)=0 有多解, 映射不为单射. 反过来, 如果从 RnRm 存在单射, 则 mn. 直观的感觉是从高维空间到低维空间总是要丢失信息(虽然我们并没有定义维数)

同时, 注意到 rn 成立, 所以对于 n<m, 有 mr>0 成立. 由于前 r 行有主元, 剩下的行为 0, 此时可以找到某个 y 使得它在第 r 行后面还有非零元素, 这导致它不在 φ 的像空间中, 所以可以找到 y=ρ1(y) 使 y 不在 φ 的像空间中. 换言之, 对于 n<m, Imφ 不为 Rm, 从而 φ 不为满射. 这个结果也可以反过来叙述:如果有 RnRm 的满射, 则 nm. 这个结果也可以直观地看成低维空间不能完全表达高维空间.

逆矩阵

首先回忆什么是逆. 如果 f 给出了 A,B 之间的双射, 则它将 xAyB 一一对应起来, 所以 f(x)=y, f1(y)=x, f1f=Idf1f=Id.第一个是 A 上的恒同映射, 第二个是 B 上的恒同映射.

一个线性映射 φ:RnRm 可逆显然和它是双射等价, 这要求它既单又满. 所以化为行阶梯形式后 r=nr=m, 这推出 r=m=n. 所以 φ 的行数和列数相同. 此处 r=n 排除了自由变量以让它单, r=m 排除了不在像空间中的向量以让它满. 每行都是主元行, 每列都是主元列, 正向消元后得到的行阶梯形式具有形状:

[]

通过回代, 对角线上方的元素也被消除了, 只剩下一个对角矩阵. 最后将每一行都除以主元把主元变为 1 从而得到了 n 阶单位矩阵. 此外如果我们把 yφ 一起操作, 这几步操作把 φ(x)=y 变为了 In(x)=y, 所以 x=y=φ1(y) 可以直接从最终结果得出, 全过程是这样的:

[y1y2yn]ρ1[y1y2yn]ρ2[y1y2yn]ρ3[1y11y21yn][x1x2xn]=[y1y2yn]

从映射的角度看来, 可以画如下的图:

2-8.svg

ρ1 是正向消除, 将 y 变为 y, 并将 φ 变为 φ, 则 φ 是上三角的矩阵.(意思是第 (i,i) 个元素以上的元素都是 0ρ2y 变为 y, 将 φ 变为 φ, 其中 φ 是对角矩阵, 其逆可以直接计算出来, 所以为了计算 φ1, 可以通过 φ1=(φ)1φ2ρ1 得到. 虽然上面的例子中我们谈论的是通过 RRn 的映射 y 解出映射 x, 但是实际上把 R 换为 Rp 不影响结果, 我们仍然可以通过 x=(φ)1ρ2ρ1y 解出 x. 在操作中, 只需要改变拼到右边的矩阵形状就可以, 例如, 对于

φ=[1111122212331234],y=[1145141919810893]

可以通过如下步骤解 φ(x)=y

[11111145122214191233198112340893]R4R1R2R1R3R1[11111145111033412208441231752]R4R2R3R2[111111451110334110578121486]R4R3[11111145111033411057811112]R1R2[11271111033411057811112]R2R3[11271102101211057811112]R3R4[11271102101211661011112]x=[1271021012166101112]

(本例中, 所有的主元都为 1, 所以 φ 就是 In, 最后的缩放可以省去)

为了找到一个矩阵的逆矩阵, 只需要让 y=In, 即可解出 φ1=φ1In

LU分解

在前一节, 我们对可逆矩阵找到了一个方法来得到 φ=ρ2ρ1φ. 但是实际上前面的向下消元和回代并不依赖于 φ 可逆, 这个限制只是为了在前一节中让 φ 是一个仅对角线不为 0, 其它全为 0 的方阵. 对于通常的 φ:RnRm, 它可以被消元到行阶梯形式:

φ=[0]

如果没有经过行交换且又 r 个主元, 通常而言进行了 r 次消元(每个主元一次), 所以 ρ1 可以被写为 ρ1=ρ1rρ12ρ11, 这里 ρ1i 表示对第 i 个主元下方进行的消元. 举 i=1 为例子, 此时对于每个 i>1, 第 i 行都减去了 ci1 倍的第一行(也就是 y 的第 1 个分量影响了变换后 y 的第 i 个分量), 所以第 (i,1)ρ1 的分量应该是 ci1, 对角线元素应为 1, 而其它元素都为 0. 同样地, 对 1ir, 只有第 i 个对角元素下方的元素会和单位矩阵有差别, 则

ρ11=[1c211cm11]

为了算 ρ1, 我们需要先算 ρ12ρ11, 然后算 ρ13ρ12ρ11, ......, 最后算出 ρ1=ρ1rρ12ρ11, 但是, 问题来了

ρ12ρ11=[1c211c31+c32c21c321cm1+cm2c21cm2]

而且当我们越往下算, 底下多项式的项越来越多, 呈现指数级增长, 到最后第 m 行第 1 项会变成

cm1+1<t<mcmtct21<t1<t2<mcmt1ct1t2ct2m+1<t1<t2<t3<mcmt1ct1t2ct2t3ct3m

再这么算下去对研究问题也不会有什么用(这甚至会让我们感觉为什么为什么想不开要合并它们, 分开来写多好)

但是事实上计算 ρ11 比计算 ρ1 容易, 这点我等会说明. 为了计算 ρ11, 首先注意到

ρ111ρ121ρ1(r1)1ρ1r1ρ1rρ1(r1)ρ121ρ111=ρ111ρ121ρ1(r1)1Imρ1(r1)ρ121ρ111=ρ111ρ121ρ1(r1)1ρ1(r1)ρ121ρ111=ρ111ρ121ρ121ρ111==ρ111ρ121ρ12ρ11=ρ111ρ11=Im

所以 ρ1 的逆为 ρ111ρ121ρ1r1, φ=ρ11φ

对于一系列可逆矩阵的乘积, 要小心计算逆矩阵时是反过来乘的, 也就是说对可逆的 ψ1ψ2, (ψ1ψ2)1=ψ21ψ11 是对的, 但是 ψ11ψ21 在大部分情况下是错的, 通过跟着下图的箭头走, 你会发现这个结果是合理的.

2-9.svg

接下来, 来计算 ρ1i1, 例如对 i=1, 我们有(读者应该自己验证):

ρ11=[1c211cm11],ρ111=[1c211cm11]

类似地, ρ1i1ρ1i 仅在第 i 行第 j 列的元素下方的元素有差异.

神奇的是, 如果把 ρ111ρ121ρ1r1 乘起来, 我们得到了一个非常简单的结果(读者也应该自己验证):

ρ11=ρ111ρ121ρ1r1=[1c211cm1cm21]

这里对角线下方的所有元素都是 cii, 而对角线上方的元素都是 0, 且对角线上都为 1. 假设没有行交换, 左边是严格的下三角矩阵并且忠实地表示了我们对矩阵进行行变换的过程, 而右边的 φ 是严格上三角的, 用 L=ρ11 表示一个下(lower)三角矩阵, 用 U=φ 表示一个上(upper)三角矩阵, 则 φ=LU 称为矩阵 φLU 分解. 为了更清楚地看懂什么是LU分解, 看看下面这个例子(它在前面出现过)这次我们把 φ11,φ11φ22, 也写在矩阵左边, 每次把操作分离出来的变换矩阵乘到左边, 这样我们的操作变成了等式.

[1111122212331234]=R41R1R21R1R31R1[1111111][1111111122123]=R41R2R31R2[111111111][11111111112]=R41R3[1111111111][1111111111]

原本的矩阵变为了一个下三角矩阵和一个上三角矩阵的乘积. 这里有 4 个主元但是我们只进行了 3 次行变换, 这并不奇怪, 因为最后一个主元已经在最后一行了, 下方没有元素, 所以不需要用它消元即 ρ14=I4, 这一步被省略了.

这时有人又要问了, 那万一真要交换行呢?LU分解还能行吗?

答案是否定的. 之前我们通过假设没有行交换来保证消除对应的矩阵是下三角矩阵, 它们的复合也是下三角的.(为什么?)但是交换矩阵并不是下三角的. 假设有一个矩阵 σ23, 它作用在 R3 上, 交换第二和第三个分量, 所以

σ23[x1x2x3]=[x1x3x2]=[111][x1x2x3]

显然它不是下三角矩阵, 所以当我们要用行交换时将会发生:

[111112122]=R3R1R2R1ρ111[111111]=R23ρ111σ23[111111]

右边确实是上三角的, 但是左边出问题

ρ111=[11111],σ23=[111],ρ111σ23=[11111]

显然 ρ111σ23 不是下三角的, 这表明LU分解失效了

所以此时的解决办法是PLU分解, 它将一个矩阵分解为一个置换矩阵、一个下三角矩阵和一个上三角矩阵. Rm 上的一个置换矩阵是一个方阵, 其每行每列只有一个元素是 1, 其它元素都是 0. 容易验证这样一个矩阵作用在 R 上只改变各分量的排列顺序, 当作用在 ρ11 的右端时它作用在输入端, 所以造成的影响是交换第二和第三列. 为了让它保持下三角的形状, 同时交换 L 矩阵的第 2,3 行, 也就是 ρ111σ23=σ23σ23ρ111σ23 .(注意 σ23σ23=Im )在这之后 σ23ρ111σ23 变回了下三角, 而 σ23 跑到了左边, 仍然用一个例子来演示:

[11112111233]=R32R1R2R1[111211][11111233]=R23[111211][11111233]=[1111][121111][11111233]=R42R2[1111][1211121][1111111]=R34[1111][1211121][1111111]=[1111][1212111][1111111]

第一步中, 我们正常地用第一行对下方消元(ρ11)

第二步中, 行交换打破了下三角的形状(σ23)

第三步中, 对下三角矩阵的行交换让它恢复了形状

第四步中, 我们正常地用第二行对第四行消元(ρ12)

第五步中, 行交换再一次打破了下三角的形状(σ34)

第六步中, 通过对下三角矩阵的另一个行交换, 我们得到了PLU分解结果

ρ111=[111211],ρ121=[11121]

则这个过程可以写成

φ=ρ111φ1=(ρ111σ23)φ2=σ23(σ23ρ111σ23)φ2=σ23(σ23ρ111σ23ρ121)φ3=σ23(σ23ρ111σ23ρ121σ34)φ4=(σ23σ34)(σ24σ23ρ111σ23ρ121σ34)φ

又或者有的人希望看图:

2-10.svg

通过同时交换行和列, ρ11, σ23ρ11σ23, ρ12σ23ρ11ρ23, σ34ρ12σ23ρ11ρ23σ34 和它们的逆都是下三角的, σii 被扔到了左边, φ 变成了 φ, 所以最终有 P=σ23σ34, L=σ24σ23ρ111σ23ρ121σ34U=φ, 所以LU分解本身有一定缺陷但是PLU分解就没这个问题. 实际上, 所有的数值计算程序都会有更多关于行调整的规则以保证算法的稳定性, 如果你感兴趣可以自己在网上搜. 别的地方和这里记号可能不同, 但是干的事情是一样的.

练习

2.1 设线性映射 φ:R2R, φ(1,1)=0φ(1,1)=2, 找出 φ 并用矩阵表示

2.2 一个映射 φ:R3R2(x1,x2,x3) 投影到 (x1,x2), 用矩阵表示它.

2.3 如果在 R2 上定义内积 x,y=x1y1+x2y2, 则 x, 给出了从 R2R 的线性映射, 将 y 映射到 x,y. 用矩阵表示这个映射.

2.4 R2 上的映射 φ 将每个向量绕着原点旋转 45°, 用矩阵表示它并计算 φ(x) 的结果, 其中 x=(3,1). 通过两种方式计算(行和列的视角)并比较结果.

2.5 对于 R2 上的线性变换, 设 φ=[k11k12k21k22], φ(e1)φ(e2) 何时共线?当二者不共线时, 单位正方形的像是一个平行四边形, 并叙述面积表达式和共线条件有何关系.

2.6φ:RnRm, 则 φ2=φφ 何时有定义?如果 φ=[1011], 计算 φ2, φ3 并猜测 φn 的结果, 请使用归纳法证明这一结果.

2.7φ=[0111], 计算 φ2,φ3,φ4,φ5, 它们表现出什么规律?

2.8 通常情况下, 对函数 fg, fg=gf 几乎不能成立, 例如, 令 f(x)=x2,g(x)=ex, 则 (fg)(x)=e2x, (gf)(x)=ex2, fggf. 对于线性映射也是一样, 初学者很容易误以为 φψ=ψφ 成立. 如果 φ:RnRm, ψ:RmRn 是两个映射, 什么时候它们能同时满足如下三个条件: (1) φψ 有定义; (2) ψφ 有定义 (3) φψψφ 之间的比较有意义(这要求两个矩阵大小相同)

2.9 对于多项式 p(x)=a0+i=1naixiV 上的线性变换 φ, 定义 p(φ)=a0Id+i=1naiφi (与多项式相比, 1 被替换为了 Id, 这是因为恒同映射的作用类似 1 )证明 p(φ)φ 相乘可以交换顺序(即 φp(φ)=p(φ)φ)

2.10u=[123], v=[456],计算 uv, (uv)2(uv)n.

2.11 三个人分别有 x01, x02x03 元, 每一次每个人都把自己的钱分为两半, 给另外两个人一人一半. 如果 xn=(xn1,xn2,xn3) 为他们经过 n 次之后每个人的钱数, 写出从 xnxn+1 的矩阵 φ 并且解释 φn 的含义

2.12 通过两种方式解下面的线性方程:使用和不使用矩阵, 并且比较结果.

2xy=12yz=22zx=3

2.13 如果 φ=[1234], 求 φ1 并解方程 φ(x)=[56].

2.14 如果 φ=[111110110110], 找到若干 y 使 φ(x)=y 无解.

2.15a 为何值时下面的矩阵不可逆?可逆和不可逆时分别解 φ(x)=0, 主元个数 r 分别为多少?

φ=[11111211a]

2.16 假设 φ,ψ:RnRn 的矩阵表示都是下三角矩阵, 证明 φψ 也是下三角矩阵.

2.17σii:RmRm 交换 Rm 中的第 i,i 个分量, 通过矩阵运算的公式证明: σii2=Im

2.18 证明 ψ1ψ2 都是置换矩阵, 通过计算证明 ψ1ψ2 也是置换矩阵(提示:分别计算对每个 ej 的结果)

2.19ρ11=[1c211cm11], 证明 ρ111=2Imρ1.

2.20 证明公式:

[1c211c(m1)11cm11][11c(m1)21cm21][111cm(m1)1]=[1c211c(m1)1c(m1)21cm1cm2cm(m1)1]

2.21 对于交换矩阵 σii, 说明为什么它乘在另一个矩阵右侧时表现为列交换, 乘在另一个矩阵左侧时表现为行交换. 如果有另一个下三角矩阵 L, σiiLσii 并不总是下三角的, 以 R4 上的 σ23L=[1213415671] 为例, 计算 σ23Lσ23 的结果, 说明为什么它不再是下三角矩阵并解释为什么在引入PLU分解时这样的情况没有发生

2.22 对如下矩阵做PLU分解并求出它的核.

[123424791111]

 

第3章 从 RnV —— 基和表示理论

维数这东西真的那么显然吗?

接下来我们将会正式地引入维度, 但在此之前, 我们要先证明一些相关结果. 本章中我们仍然在 Rn 上工作, 如无特别解释, 以下的映射和空间都是线性的.

思考第一个问题:维数是什么?一个点的维数是 0, 直线的维数是 1, 平面维数是 2, 而我们所在的空间维数是 3, 维数描述了空间中有多少个"不同的方向"(这里左右视为一个方向, 上下视为一个方向). 所以我们自然期待 Rn 的维数是 n, 但是对一个一般的空间, 怎么定义维数呢?先看几个例子:

一条直线 {(t,t)|tR}R2 的子空间, 我们不能因为每个向量有两个分量就说它是二维的, 所以显然我们不应该谈论一个向量的维数, 而是一个空间整体的维数. 我们希望这条线的维数是 1, 因为它只是平面上的一条线.

所有 asinx+bcosx 型的函数形成了一个线性空间, 这时我们不能直接把它看成一个空间中的平面, 因为它甚至不是任何一个 Rn 的子空间. 但我们仍然认为它是二维的(如果你没有这个直觉就暂时这么接受下来吧), 这是因为有两个参数决定这个函数.

所有 N+R 的映射(即实数列)形成一个线性空间, 看起来这里有无穷多个"参数": a1,a2,,an 都是互相独立的, 而且它看起来"包含"了 Rn (通过把 Rn 中的元素看作第 n 项之后全部为 0 的有限数列).

所有满足 an+1=an+an+1 的数列 a:N+R 构成一个线性空间, 这时 an+2 完全由 anan+1 决定, 所以整个数列完全决定于它的前两项, 实际上可以自由变化的量只有两个, 这时我们定义它的维数是 2.

当我们说 n 个参数决定(或称之为编码)了空间中的一个向量时, 我们可以用更加数学化的语言说这个空间可以用 Rn 中的向量编码, 也就是说每个向量在 Rn 中有唯一的表示. 更准确地说, VRn 之间存在一个双射. 把维数转到与之存在双射的 Rn 完美地反映了检查需要多少个参数的想法, 同时表明这个空间和 Rn 很像, 在某种意义上我们可以像处理 Rn 一样处理它.

准备工作和基础性质

我有必要强调下标可能用来表示不同的映射, 也有可能表示一个映射的不同分量, 这取决于上下文. 虽然我一直尝试着避免这种情况, 但是我为了少从字母表中引入字母, 我放弃了在整个文章中严格用不同的符号表示不同的概念. 在上一章中, 我一直用 j 作为 n 对应的求和指标, 但是我受够了, 这一章开始我会用 i, 对于我来讲, 这写起来简单多了, 但是我希望不会给读者造成太多困惑.

上一章的想法很好, 但是为了确保维数是"良定义"的, 我们需要解决一些问题.

问题一: V 有没有可能既和 Rm 又和 Rn 同构, 这让它的维数既是 m 又是 n, 从而失败去让它良好定义呢.

事实上这不可能, 假设 VRn 同构, 那 vV 就和 xRn 一一对应. 同时它又和 yRm 一一对应, 所以 xRn 就和 yRn 一一对应, 即给出 RmRn 的双射, 但是这对 mn 并不可能(此结果在上一章中已经证明)所以维度至少不至于是糟糕定义的(指一个空间不会有两个维度).

问题二:一定存在与 V 同构的 Rn 吗?有没有可能 V 不与任何一个 Rn 同构呢?

事实上这是有可能的, 例如实数列 a:N+R 组成的空间就是, 因为它不和任何一个 Rn 同构( n 有限 ), 这时我们称它是无穷维的.

所以当一个实向量空间与 Rn 同构时, 称它的维数为 n, 记作 dimRV=n (没有歧义时下标 R 被省去, 记作 dimV=n ), 特别地, 称 dim0=0 (这里的 0 是只包含零向量的平凡空间), 否则称其维数为无穷, 即 dimV=, 接下来回忆我们上一章的结果: (1) 如果 RnRm 有单射, 则 mn (2) 如果 RnRm 有满射, 则 mn 这一次我们可以更加正式地用维数来叙述这一定理对有限维空间的情况: dimV1=n, dimV2=m, 有: (3) 若 m<n, 则 V1V2 映射不单 (4) 若 m>n, 则 V1V2 映射不满 (3)(4) 是结论 (1)(2) 通过向量空间与 RnRm 的同构自然导出的.

为了加入无穷维的情况, 我们还有必要证明两个结果来表明无穷维空间确实比有限维空间更“大” (5) 如果 dimV1=, dimV2=mN, 则 V1V2 不单 (6) 如果 dimV1=nN, dimV2=, 则 V1V2 不满

这个结论将在下一节证明

向量组, 基底和坐标

我们知道如果 α1 给出了 RnV1 的一个同构, α2 给出了 RmV2 的同构, 那么任何一个 φ:V1V2 都可以用一个 RnRm 的映射, 即 m×n 矩阵表示, 这个映射是由 A=α21φα1 诱导的, 称为 φ 在基 α1,α2 下的表示(基的定义在后面)

对于一个同构 α:RnV, 显然它的值完全由它在 ei 处的值决定, 设 α(ei)=αi, 则 α(x)=α(i=1nxiei)=i=1nxiα(ei)=i=1nxiαi, 从列的角度来看, 这个映射可以被写成:

α=[α1α2αn]

注意到在此我们拓展了矩阵的记号. 狭义地讲, 矩阵每行每列都是数, 但是这里每一列都是一个向量, 而不一定是由数字组成的"列向量".

例如, 在函数空间 {asinx+bcosxa,bR} 中, 我们可以合理地写出:

[sinxcosx][ab]=asinx+bcosx

这里的 sinxcosx 是空间中的向量, 上述的运算仍然遵守矩阵乘法的法则.

既然我们把(广义)矩阵的概念拓展到了研究一组向量, 我们称一个(有序)向量组是一个可以用 1n 编号的向量列表. 有些教材认为向量组是无序的, 但是为了方便, 我们不妨让它是有序的, 这对有限维空间够用了, 于是这个向量组就可以正式地写为:

α=[α1α2αn]

注意到当 V 就是 Rm 时, ai 刚好就是列向量, 所以这成为了我们熟悉的矩阵, 所以我们把(广义)的矩阵概念拓展到了任意空间 V. 显然一个向量组给出了一个 RnV 的映射, 把每个 xRn 映射到 i=1nxiαi, 我们称之为 α 的一个线性组合, 这个运算过程与矩阵是已知的, 按照我们的习惯, 我们要研究它的核和像以了解这个映射, "由 α 张成的空间"指 α 的所有线性组合, 即 α 作为映射的像.

首先看到核.

下面讨论像.

线性代数基本定理

经过这么久, 我们已经研究过了线性方程并定义了什么是向量组, 什么是基底和坐标, 通过这些把有限维向量空间的问题转化到了 Rn 上容易研究的问题. 所以, 线性代数中最重要、最基础也是最精华的定理终于要来了:

线: 如果 V1V2 是向量空间, φ:V1V2 线性且 V1 维度有限, 记 φ 像的维数为其"秩", 即 rankφ=dimImφ, 则有 dimKerφ=dimV1rankφ.

证明:由 Imφ 维度有限(why), 它同构于某个 Rr, 根据定义, r 作为像的维数就是 φ 的秩, φ 是到其像的满射. 所以可以分别取 V1Imφ 的一个基底, 则经过消元刚好有 r 个主元, 否则就不是满射了. 前文所述, 记 nV1 的维数, 则 dimKerA=nr, 证毕.

练习

3.1 用矩阵语言说明为什么当 mnRmRn 不同构(这个结果上一章证过, 这里作为复习)

3.2 证明 C[0,1] 是无穷维空间(回忆一下, C[0,1][0,1] 上的所有连续实函数组成的集合)

3.3 你能叙述 C-维数的定义吗?如果 V=R2, 把它看成 R-线性空间, 它的维数是多少?把它看成 C-线性空间呢?更进一步地, dimQV 有限吗?为什么?( Q 是有理数域)

3.4 证明线性空间 V0 之间唯一的映射是 0 映射, 并说明 0:V0 满, 0:0V 单. 如果 V0 是满射, 则 V 是什么?

3.5 证明一个包含 0 的向量组按照定义是线性相关的.

3.6 如果 n+1 个向量 α1,α2,,αn+1 中线性相关但是其中任意 n 个线性无关, 证明任意一个向量都可以用其它向量的线性组合来表示. 更加具体地, 对如下的 4 个向量:

α1=[3111],α2=[1311],α3=[1131]α4=[1113]

证明其中的任意 3 个线性无关, 但是这 4 个向量线性相关, 把每个向量用其它向量的线性组合表示.

3.7 我们知道通过移除线性相关的向量, 可以把一个包含 n 个向量的向量组 α 变为一个包含 r 个向量的向量组 α. 我们可以优先移除前面的向量, 也可以优先移除后面的向量, 也可以按照任何你喜欢的顺序, 这可能导致留下来的向量不同, 假设一种方式留下了 r1 个向量, 另一种方式留下了 r2 个向量, 证明 r1=r2. 记 r=r1=r2, 证明可以被 α 线性表示的 r+1 个向量 β1,β2,,βr,βr+1 线性相关.

3.8 如果 φ=[123456]. 通过高斯消元为 Kerφ 找到一个基.

3.9 如果 α=[1111111111111111], 在不用消元法的前提下证明 α 是单射.

3.10 如果 α=[111111], 证明 α 是双射, 所以给出了 R3 的一个基, 写出向量 [x1x2x3] 在基 α 下的坐标

3.11 如果 α=[10011001], α 是单射吗? α 是满射吗? 如果 α 不是满射, 向 α ​ 中添加更多向量让它变为满射, 如果你希望让它保持单射, 你最多可以添加多少个向量?从 (Rn,)H —— 内积和正交化

 

第4章 从 (Rn,)H —— 内积和正交化

本章中我将会始终讨论 R 上的向量空间, 而非像之前的章节那样总可以自然地拓展到任何一个域 K 上. 在某些教科书中, 在复空间上定义内积是合理的, 它从某些意义上比实数内积更复杂. 但是简洁起见, 我们只讨论实向量空间. 字母 αβ 可能被用来指代向量或者基底, 这取决于上下文.

什么是内积?

如果 H 是一个实向量空间, 那么一个内积以两个向量作为参数并且得到一个实数, 它反映了两个向量之间的相似或者说同方向性, 我们高中学过的点乘就是一个重要例子. 所以内积从形式上是 ,:H×HR. 在高中, 点乘通常被定义为 αβ=|α||β|cos(α,β), 其中 (α,β) 是两个向量之间的夹角. 如果内积是正的, 这意味着两个向量处在相似的方向(成锐角), 如果内积是负的, 这意味着两个向量处在相反的方向(成钝角), 如果内积是 0, 它们两个向量就是正交的(成直角). 为了用这种方式定义内积, 我们需要两个函数. 第一个是模(或称之为模长、长度、甚至是绝对值) ||:HR0. 第二个是向量间夹角 :H×H[0,π]. 这种方法在欧氏空间中走得通, 但是来到一般的实向量空间时就开始效果堪忧了, 因为这个空间不一定自然拥有模和夹角. 此外这么定义会让一些性质的证明变得困难, 比如说: α(β1+β2)=αβ1+αβ2. 这就是为什么我们需要重新定义一个内积以让我们处理问题更加方便.

重新定义一个概念并不是一件容易的事情, 我们需要确保它和之前的概念兼容. 之前的路线问题出在:一个一般的空间上并不天然拥有有一个度量模长和角度的函数, 而我们最终的解决方案是先定义内积, 然后反过来定义模和角度.

就像我们之前定义向量空间的方法一样, 我们先通过几条规则来定义什么可以称之为内积. 内积是一个 ,:H×HR 的函数, 对任意的 α,βHk1,k2R 满足:

  1. α,β=β,α (对称性)

  2. k1α1+k2α2,β=k1α1,β+k2α2,β (对第一个参数线性)

    注:前两条规则可以推导出 α,k1β1+k2β2=k1β1+k2β2,α=k1β1,α+k2β2,α=k1α,β1+k2α,β2, 所以事实上它也对第二个变量线性, 这个性质被称为双线性

  3. 对于 α0,α,α>0 (正定性)

    注: 0,0=00,0 可以推出 0,0=0

为了和公式 α,α=|α||α|cos(α,α)=|α|2cos0=|α|2 兼容, 我们需要重新定义模长为 |α|=α,α, 并且重新定义角度为 (α,β)=arccosα,β|α||β|. 如果 α,β=0, 称 αβ 正交(垂直), 记作 αβ. 这个定义和某些读者的直觉可能不太相符, 但是众所周知度量角的大小是为了描述一个物体相对另一个物体的定向, 这与内积的目的基本相同. 此外, 在计算中, 计算内积通常比计算角度更加容易. 几何的基本对象是长度和角度, 而二者都可以由内积导出, 所以一个向量空间的"几何"完全由其上定义的内积决定. 这里最重要的一点是:内积取代了长度和角度这些, 成为了最基本的概念.

转置和 Rn 中的标准内积

对于两个向量 x,yH=Rn, 读者可能已经在高中课上学过它们的点积是 xy=i=1nxiyi. 在我们已经重定义了内积的前提下, 为了确认点积确实是一种内积, 我们需要验证它满足内积的三个条件. 这留给读者, 作为练习. 点积也被称作 Rn 上的标准内积, 但是我们只在讨论 Rn 时使用"标准内积"这个说法, 这是因为 Rn 有一组标准的基底 e1,e2,,en, 但是大部分的线性空间并没有.

为了把这个过程看的更清楚, 不妨引入转置的概念. 一个矩阵的转置就是把它的列重新写成行, A 的转置被记作 AT, 例如:

[142536]T=[123456]

所以一个行向量的转置是一个列向量, 而一个列向量的转置是一个行向量. 在引入转置的记号后, Rn 上的标准内积可以被写成 xy=xTy, 也就是说:

xy=[x1x2xn][y1y2yn]=[x1x2xn][y1y2yn]=i=1nxiyi

注:转置的重要性质是 (AB)T=BTAT, 最后一节中将会用到这个性质. 这可以通过把每一项展开证明:设 aik,bkj,cij 分别为 A 的第 (i,k) 项, B(k,j) 项, AB 的第 (i,j) 项, 则 cji=cij=kaikbkj=kbjkaki, 在 (AB)T 中, cji=cij=kaikbkj=kbjkaki. 对每个元素都有 cji=kbjkaki, 这推出 (AB)T=BTAT

非标准内积和正定矩阵

既然我们把熟悉的内积叫做"标准"内积, 你可能在想, 有什么"非标准"的内积吗?事实上, 在内积的新定义下, 有无穷多个内积, 而标准内积只是其中之一. 例如, 考虑 x,y=2xTy, 我们就得到了一个"非标准"的内积. 现在摆在我们面前的有三个问题:

  1. 我们真的需要这些"非标准"的内积吗?

  2. 我们可以找到所有的内积吗?

  3. 这些内积有什么共同点?

以下是我对这些问题的答案

  1. 有如下几个原因:

    (1) 加权内积:加权内积会为向量的不同分量加上不同的权重, 通常用在数值分析或有限元分析中用于模拟具有不同性质的物理现象. 当某些分量比较重要, 而另一个不那么重要的时候, 通常使用"加权"的内积, 给每个变量分配一个权重, 例如, 在 H=R2 上定义的 x,y=2x1y1+x2y2 给第一个分量权重 2, 给第二个分量权重 1

    (2) 内积中的交叉项:基向量并不总是垂直的, 这时可能出现交叉项. 例如, 假设我们在讨论空间 H={xR3|x1+x2=x3}, 映射 α:R2H,(x1,x2)(x1,x2,x1+x2) 是一个同构, 并且给出了 H 的一个基, 其中基向量 α1=α(e1)=(1,0,1), α2=α(e2)=(0,1,1), 所以 (x1,x2,x1+x2) 在基 α 下的坐标为 (x1,x2). 坐标为 (x1,x2) 的向量和坐标为 (y1,y2) 的向量的内积是 (x1,x2,x1+x2)(y1,y2,y1+y2)=2x1y1+2x2y2+x1y2+x2y1. 2 表明基向量的长度不是 1 (实际上长度是 2), 而 x1y2x2y1 这样的交叉项表明基向量并非垂直(实际上角度为 π/3

  2. 为了研究 H×H 上双线性函数的性质, 我们只需要知道它如何作用于基向量就可以了. 先说 Rn, Rn 有一组向量 e1,e2,,en 作为基底, 所以

    x,y=i=1nxiei,j=1nyjej=i=1nxiei,j=1nyjej=i=1nxij=1nyjei,ej=i=1nj=1nei,ejxiyj

    gij=ei,ej, 则一个内积可以写成

    x,y=1i,jngijxiyj

    在展开式子的过程中, 第二条性质(双线性)自动满足了, 所以我们需要验证其它的两条性质. 第一条性质是对称性, 这要求

    x,y=1i,jngijxiyj=y,x=1i,jngijyixj=1i,jngjixiyj

    所以对任意的 1i,jn, 有 gij=gji 成立

    而最后一条性质:正定性, 这要求非零向量和自身的内积是正的, 也就是说对 x0

    x,x=1i,jngijxixj>0

    而内积也可以用矩阵语言来表示

    x,y=xTGy,其中 G=[g11g12g1ng21g22g2ngn1gn2gnn]

    为了看得更清楚, G 可以被视作接受两个向量输入并且给出一个数字作为输出(如下的公式块只是为了便于理解, 并非正式数学语言)

    xTGy[y1y2ynx1g11g12g1nx2g21g22g2nxngn1gn2gnn]全部[g11x1y1g12x1y2g1nx1yng21x2y1g22x2y2g2nx2yngn1xny1gn2xny2gnnxnyn]

    这个矩阵必须对称 ( GT=G, 这是因为 gij=gji ), 此外对 x0xTGx>0. 满足这一条件的矩阵被称作正定矩阵. 需要注意的是 f(x)=xTGx 是关于 x 的齐次二次函数.(不要和线性函数混淆)更多关于正定的内容将会在第6章中呈现, 在此我们只需要对它在 0 处取得极小值有印象就可以了. 所以 Rn 上的内积和正定矩阵一一对应, 矩阵 G 通常被称作度量矩阵.(或度规)特别地, 令 G=In, 即 n×n 单位矩阵, 则它很显然对称, 且 xTGx=xTInx=xTx=x12+x22++xn20, 仅在 0 处取到 0 值, 这恰好就是标准内积. 对于一般的空间, 只需把这里的基底换成对应的基底即可.

  3. 定义内积的时候, 我们只依赖于三条性质:对称性、双线性和正定性, 所以在证明相关性质时我们只有, 实际上也只需要它们. (性质直接从三条规则导出, 不依赖于 Rn )在高中时我们已经学过了关于向量, 特别是关于内积和长度的很多结果:比如柯西不等式告诉我们 αβ|α||β|, 此外还有余弦定理, 三角不等式, 又或许你学过一个向量在另一个向量的投影. 下文将会证明这些结果可以直接拓展到任意的内积空间.

    (1) 柯西不等式

    你是否想过, 在没有验证 |α,β||α||β| 的情况下, 前文为什么能能够贸然取 arccos 呢?接下来我将会使用一点点技巧来证明它确实是对的.

    考虑如下函数

    f(t)=α+tβ,α+tβ=α,α+2tα,β+t2β,β

    由于夹角只对非零向量定义, 这里有 β,β0, 所以它是二次函数. 正定推出 f(t)0, 当且仅当 α+tβ=0 时取等号. 由于这个函数最多有一个实零点, 其 Δ=b24ac=4α,β24α,αβ,β0, 仅在 α+tβ=0 对某个 t 成立时取等号, α,β2α,αβ,β=|α|2|β|2|α,β||α||β| 等号成立当且仅当 αβ 共线

    (2) 余弦定理

    |αβ|=αβ,αβ=α,α+β,β2α,β=|α|2+|β|22|α||β|cosθ

    用我们更为熟悉的语言, 如果在三角形 OAB 中, α=OA,β=OB, 则

    |AB|=|αβ|=|OA|2+|OB|22|OA||OB|cosθ

    特别地, 当 αβ 时, α,β 这一项变为了 0, 得到了勾股定理

    (3) 三角不等式

    |α+β|=|α|2+|β|2+2|α||β|cosθ|α|2+|β|2+2|α||β|=(|α|+|β|)2=|α|+|β|

    (4) 一个向量在其它向量上的投影

    α,βH, 向量 βα 上的投影为 α,βα,αα. 这是因为

    α,βα,αα=|α||β|cos(α,β)|α|2|α|α|α|=(|β|cos(α,β))α|α|

    |β|cos(α,β) 是投影长度, 而 α|α| 是单位方向向量, 为了方便, 记 βα 上的投影为 projα(β).

等距同态和施密特正交化

现在我要讲讲我们的标题了, "从 (Rn,)H" 也可以指一种映射. 众所周知一个线性映射保持了加法和标量乘法, 而现在应该内积空间在向量空间的基础上多了一个内积, 这意味着 H 可以看成一个 4 元组

(H,向量加法,标量乘法,内积)

(Rn,) 是一个特例, 以其上的点积作为内积:

(Rn,向量加法,标量乘法,点积)

如果一个映射保持了"结构", 除了要是线性的, 他还应该保持内积. 这样的一个映射被称作等距同态, 这是由"等距"和"同态"构成的复合词, 反映了它不仅是线性映射(同态), 还保持度量.

初等线性代数和表示论的一个主要目标就是把(有限维)抽象空间中的向量用它们在某个基底下的坐标来坐标, 即 Rn 中的向量表示, 并且通过更为具体的矩阵来研究抽象的映射. 对于一个有限维向量空间 H 的一个基底 α, H 上的度量自然诱导出一个 Rn 上的度量 ( gij=ei,ejα(ei),α(ej) 决定 ). 既然 Rn 上有一个标准内积, 一个好想法是找到一个基底, 使空间的度量诱导出的是 Rn 上的标准内积. 换言之, 对 i=j, gij=1, 对 ij, gij=0. 所以 αi,αi=1, 这表明 |αi|=1, 而对 ij, αi,αj=0, 这表明 αiαj. 这样的一个基 [α1α2αn] 被称为一个标准正交基(或归一正交基)被称作"标准"是因为它诱导出的 Rn 上的内积是标准内积.

回想我们先前如何获得有限维向量空间的一个基底:先找到一组足以"表达"整个空间的向量, 然后逐渐去除线性相关的直到获得一组线性无关的向量. 为了从一个基底得到一个正交基, 我们要做的大体上差不多. 不过这次我们要去除的不是多余的向量, 而是向量中不垂直的多余的"部分". 如下的过程称作施密特正交化:

H 的一个基底 α=[α1α2αn] 开始

  1. β1=α1

    β2=α2projβ1(α2), 则 β2β1

    β3=α3projβ1(α3)projβ2(α3), 则 β3β1β3β2.

    ......

    βn=αnprojβ1(αn)projβ2(αn)projβn1(αn), 则 βnβii<n 成立

  2. 最终把每个向量除以它的模, 以让它们模长为 1, 即归一化

    εi=βi|βi|

    εi,εj={1,i=j0,ijH 的一个归一正交基

在 python 代码中, 这个过程写作(设 αi 均为 Rn 的向量)

你是否认为这个操作看起来很熟悉?在第2章中高斯消元引出了矩阵的LU(或者PLU)分解. 因为我们在高斯消元中做行操作, 我们从左侧分离出了一个下三角矩阵, 它编码了我们操作矩阵的过程. 而在正交化过程中, 我们在对向量操作, 这些向量作为矩阵的列, 应该从右侧分离出一个记录了我们如何操作向量组的矩阵.

同样地, 首先把这个过程改写成矩阵形式(这些向量作为列, 但本身不必是列向量)用 γ1 表示向量之间的相减, γ2 表示除以模长的过程:

[β1α2αn]γ12[β1β2αn]γ1n [β1β2βn]γ2[ε1ε2εn]

对于每个 j2, 在 γ1j 中, αj 被减去每个满足 1i<jβj 的倍数, 记这个系数为 cij=βi,αjβi,βi, 则这些列操作可以为

αγ12: C2c12C1γ13: C3c13C1c23C2

现在来关注 γ1j:

i<j ( 右侧的矢量只有 1 个非零的数字 )

βi=[β1βiαn][010]

对于 i>j ( 右侧的矢量只有 1 个非零的数字 )

αi=[β1αiαn][010]

对于第 j 列, ( 1 上方的数为 c1j,c2j,,c(j1)j, 下方的数字全都是 0 )

βj=[β1αjαn][c1j10]

把它们写到一起, 就得到了 γ1j 的表达式

[β1βjαn]=[β1αjαn][1c1j11]

γ1 实际上就是把这些列操作合并到一起

β=αγ12γ13γ1nγ1=γ12γ13γ1n

但是你会发现合并这些项很困难, 原因和第2章的一样, 解决方案也和第二章的一样:找 γ 的逆, 它会更直接告诉我们关于正交化的信息:

容易验证(读者应当自己验证)

γ1j1=[1c1j11]

其中对角线都是 1, 在第 j 列主对角线上方第 i 行的元素为 cij, 其它所有元素都是 0. 把它们乘到一起得到了

γ11=γ1n1γ1(n1)1γ121=[1c12c1n1c2n1]

这并没有结束, γ2β 中的每个向量除以它的模长让它们归一化, 所以

γ2=[|β1|1|β2|1|βn|1]γ21=[|β1||β2||βn|]

γ1 的表达式

ε=βγ2=αγ1γ2=αγγ=γ1γ2γ1=γ21γ11=[|β1||β2||βn|][1c12c1n1c2n1]=[|β1||β1|c12|β1|c1n|β2||β2|c2n|βn|]

在这么做的过程中 α=εγ1 被分解为一个归一正交基和一个上三角矩阵, 对于 H=Rn 且使用标准内积的情况, 这把一个矩阵分解为两个 M=QR. 其中 Q 中的向量是归一正交的, 每列模长都是 1, 且每两个不同的列都垂直, 这样的矩阵被称为正交阵.( 这与 QTQ=In 等价) R 是一个上三角矩阵, 其中的系数表示出我们是如何操作向量组让它正交的.

例如, α=[110011101]R3 的一个基, 但并非归一正交, 让我们用施密特正交化方法把它正交化:

  1. β1=α1=[101]

    β1,α2β1,β1=12, β2=α212β1=[1/211/2],

    β1,α3β1,β1=12, β2,α3β2,β2=13, β3=α312β113β2=[2/32/32/3]

  2. ε1=|β1|1β1=12β1=12[101]

    ε2=|β2|1β2=23β2=16[121]

    ε3=|β3|1β3=32β3=13[111]

基底 [ε1ε2ε3] 归一正交, 相应的分解出的上三角矩阵 R

R=[23/22/3][11/21/211/31]

一般空间上内积的例子

  1. 区间 [a,b] 上的连续函数构成向量空间, 微积分告诉我们这样的函数总是可积的, 可以定义两个函数的内积为

    f,g=abf(x)g(x)dx

    注意到积分可以视作指标 x 在连续集合内取值时的求和, 此外我们也可以乘以一个连续函数 μ(x) 作为权重以得到 [a,b] 上的加权内积

    f,g=abf(x)g(x)μ(x)dx

    这样定义的内积对泛函分析和信号处理等很有用

  2. 在概率论中, 两个随机变量的内积被定义为乘积的期望值, X,Y=E(XY). 即使你不知道这是什么意思, 它为什么成立也没关系, 你只需要知道线性代数对概率论也很重要

  3. 为了比较两幅图片或者两个离散信号的相似度, 可以把它们视作向量. 内积可以反映它们有多相似.

关于李群的简介 *

初学者如果不熟悉群可以跳过这一节

一个群是带有一个二元运算的集合 (G,)

  1. 运算满足结合律

  2. 存在单位元

  3. 所有元素都存在逆

QRn×n 是正交阵, 则每一列模长都是 1 而不同列正交, 所以 QTQ=In, 即 Q1=QT. 在变换后两个向量的内积是

(Qu)(Qv)=(Qu)T(Qv)=uTQTQv=uTInv=uTv=uv

这表明内积在正交阵作用下保持不变, 所以长度和角度也保持不变. 注意到 ei 的模是 1, 而 eiej 的点积是 0, 所以一个保持内积的矩阵的列模长总是 1 并且互相垂直. 如果 P,Q 都是正交矩阵, 那么 (PQu)(PQv)=(Qu)(Qv)=uv, 所以 PQ 也保持内积不变, 是正交阵, 故正交阵组成的集合在矩阵乘法下封闭, n×n 矩阵全体被称为 Rn 上的正交群, 记作 On, 或者 On(R). 因为元素可以连续取值, 所以这又被称作一个连续群, 或称之为李群 (得名于数学家Marius Sophus Lie, 他是连续群研究中的重要人物).

练习

4.14 个向量 α1=[2121], α2=[2121], α3=[1212], α4=[1212]. 计算两两之间的点积, 哪些向量对是互相垂直的?

4.2 先检验 α1=[110], α2=[011]Ker[111] 的一个基, 然后计算这个基下的度量矩阵, 设在这个基下, v1 坐标为 x1=[21], v2 坐标为 x2=[12], 计算 v1v2 的模和夹角.

4.3 设一个二维的向量空间在某基底 α 下有度量矩阵 G=[3113]. 两个基向量的模长是多少? α1α2 点的距离是多少?根据边长, 计算三角形 0α1α2 的面积(面积可以用长度和角度计算, 所以面积也由内积决定)

4.4 证明 αprojβ(α)β 垂直, 对多项式定义如下内积: f,g=01f(x)g(x)dx. 如果 f(x)=1 是常值函数, g(x)=x, 计算 gprojfg

4.5 (这一问需要一些计算能力) 假设对小于 3 次的多项式(即 a+bx+cx2 形式的多项式)定义如下内积:

f,g=0+f(x)g(x)exdx

显然 α1=1,α2=x,α3=x2 是一个基, 计算这个基下的度量矩阵并且用施密特正交化方法为这个空间找到一个归一正交基.

4.6 注意到 α=εR 把一个向量组 α 写成一个归一正交向量组 ε 的线性组合, 其中 R 作用在右侧作为过渡矩阵. 为这个基变换过程画一个交换图. 如果某向量原来的坐标是 x, 它在归一正交基下的坐标是什么?

 

第5章 从 VV —— 特征值和行列式

笔者评:许多教科书引入行列式的方式莫名其妙

线性变换会在哪里出现

先回顾什么是线性变换:我们称一个把线性空间映射到自身的线性映射称为线性变换, 即一个 V 上的线性变换是一个映射 φ:VV

线性变换作用在一个空间上, 当我们需要输入一个向量并且输出同一个空间内的向量时线性变换就出现了. 比如, 当一个光子碰到一面镜子并且反射的时候, 镜子接受了它的动量并且给了它一个新的动量作为输出, 所以镜子可以看作给出了动量所处空间的线性变换. 对于一个线性递推数列 a:RR ( 递推公式为 an+m=k0an+k1an+1++km1an+m1 ). 去除其前 t 项并且把每一个 an+t 向前移动到 an 并不改变它的递推公式. 注意到所有满足递推公式的数列组成一个线性空间, 且去除前 t 项的操作是线性的 (去除两个数列的和数列 的前几项等价于两个去除了前几项的数列的和)所以去除前 t 项的操作是线性的并且把数列映射到数列. 这是一个满足递推公式的数列空间上的线性变换. 设去除前 t 项的操作为 Rt. 则容易验证 Rt1+t2=Rt1Rt2. 此外, 行变换和列变换作用在矩阵空间上, 我们可以使用它们消元或者完成正交化.

到处都有线性变换, 它们通常会乘在一起或者和自身相乘(这意味着取一个线性变换的幂)

没有哪个基更加特殊 —— 为什么我们需要不变量

在从第三章开始的针对一般的(特别是有限维)线性空间的讨论中, 我们通过把抽象线性空间中的向量"翻译"为它们在某个基底下得到的 Rn 中的坐标. 这让我们感到更加亲切, 也更容易处理. 我们已经讨论过如何在两个基底之间转换, 也学会了如何在给定的内积下从任何一个基底得到一个正交基. 然而, 这一切都建立在一个前提下:你不会为了如何选择基底而感到困难. 然而, 如果空间中并没有什么条件可以告诉你你该怎么选取基底导致你产生选择困难, 你解决问题就会困难起来. 这并不完全是一个笑话, 数学家们总是想要做出"好"的选择并且最终加入了选择公理告诉我们存在这样一个选择函数, 它总是可以从一个非空集合中选择一个元素. (这并非本文的话题, 如果你感兴趣你可以自行搜索以了解更多)

通常有很多种方式为一个向量空间选择基底并且研究映射的性质. 但是随着基向量的变化, 许多性质, 例如某个向量的坐标也会随之变化. 而那些不随基底变化的性质就被称作不变量. 找到和基底选取无关的性质通常很重要, 因为这样的性质反映了映射的本质属性. 换句话说, 当 Alice 和 Bob 从不同角度看一个空间时, 他们能得到什么共同结论?

在继续讨论这个话题之前, 我们需要回忆一些我们学过的关于(有限维)线性空间或者其上的线性映射的不变量:

  1. 线性相关性:一个向量组是否线性相关与基底选取无关

  2. 维数:一个空间的维数不会随着基底的选取而变化, 所以基底可能不同, 但是基向量的数量一定相同, 这就是空间的维数

  3. 秩:秩反映了一个线性映射的像的维数. 对于一个 Rn 到其它空间的映射, 这个映射作为一个向量组, 即使向量组本身可能线性相关, 但是它的秩告诉我们一个向量组中有多少个"有用"的向量

  4. 零化度:此前我没提过这个概念, 一个映射 φ 的零化度就是 dimKerφ. 它通过测量核的大小表明有"多少"向量会被映射到 0. 对于一个从 Rn 到某个空间的映射, 即一个向量组, 这告诉我们有多少种"不同"的方式让它的线性组合为 0 (如果 α 是一个向量组, 其中 α22α1=0α32α2=0, 这时我们不认为 α34α1 是一个"不同的"线性组合因为它可以看作前面两种组合的线性组合), 由于 dimKerφ=nr. 向量组的零化度可以视作其中"无用"的向量的数量. 所以线性代数基本定理又被称为 秩-零化度定理. 对于 RnRm 的情况, 秩和零化度分别对应阶梯头和自由变量的数量.

可以证明对于 φ:V1V2, 其中 dimV1=n, dimV2=m, 秩 r, 与维数 m, n 可以生成所有关于这个线性映射的所有不变量. 这可以通过把所有矩阵都归约到一个标准型来实现. 此处"生成"的意思是所有的其它不变量都可以根据它们来计算. 例如, 零化度可以通过 dimKerφ=nr 计算. 证明这一点并不难但不是我们现在要讨论的话题. 一定程度上, 这是因为你可以自由地选择 V1V2 的基, 然而, 当我们为线性映射加上其它条件时, 可能会出现新的不变量. 在接下来的内容中, 我们把线性映射限制在一个空间上, 变成 φ:VV 并且谈论这是如何带来新性质的.

体积的变化 —— 一步步构建起行列式

第一步 —— 找到线性映射的额外不变量
先自己思考一下

为了找到线性映射有什么额外的性质, 首先考虑一些简单的例子. 比如, 首先考虑 Rn. 但是你要假设你忘掉了它原本的坐标系统, 认为你的基向量是随便选取的, 它不够自然. 第一个例子是 R1=R, 此时所有的线性变换都是一个缩放, 只由一个数字 k 决定, 即 φ(x)=[k](x). 在这里讨论线性无关都没有意义. 所以接下来让我们直接继续考虑 R2. 下图和第二章初见矩阵的图是相同的图. 看看图并想想, 即使我们随便选择一个基, 我们可以知道什么关于它的性质.

几何量

首先, 我们不可能讨论长度、角度或者面积的确定大小, 因为通常来讲这个空间不一定定义了度量, 不同的度量会给出不同的结果. 所以这些结果实际上是度量而非空间本身的性质. 然而我们可以讨论向量关于原来向量的变化. 在一般的空间中, 只有当两个向量线性相关的时候我们才能拿它们直接作比较. 所以如果要这么干我们就需要找到一些向量 v 使得 φ(v)v 共线, 换言之, φ(v)=λv. 这样的值 λ 被称作特征值, 对应的向量被称作特征向量. 我们会在之后详细讨论这些内容.

关于空间中的面积

虽然我们不能讨论向量的长度, 在一个 2 维空间中, 我们总是可以讨论"面积"的变化. 你可能在想, 我们都没有度量, 哪来的面积呢?好消息是, 可以证明面积变化的比例与度量的选取无关, 这可以通过用正方形近似并且证明所有的正方形缩放方式相同来证明. 如果你对此感到困惑, 请移步 3blue1brown 的视频再继续阅读本文, 视频链接:

https://www.bilibili.com/video/BV1ys411472E?p=7

第二步 —— 定义二维空间的有向面积
预备知识

什么是定向?这并不难理解. 简而言之, 定向就是字母 'p' 和 'b' 之间的差异. 或者它是你左手和右手之间的差异. 如果你在一张有弹性的纸上写字母 'p', 无论如何旋转或拉伸纸张, 都无法将其变成字母 'b'. 尽管你可以翻转纸张, 将 'p' 变成 'b', 但这个动作不在原始的纸面二维空间内, 所以可以改变定向. 就手的例子来说, 无论你如何旋转或移动左手, 它都不会变得和右手一样. 在化学中, 这种现象通常被称为手性. 如果存在一个 4 维空间, 理论上, 4 维空间中的生物可以将你“翻转”回到我们的 3 维空间. 但在我们的空间中, 这是不可能的.

可以为任何 n 维空间定义一个"定向". 注意到通过翻转垂直的轴, 字母'p'变成了具有不同定向的字母'b', 但接下来通过翻转水平的轴, 它又变成了字母'd', 可以旋转 180° 与'p'重叠. 因此, 如果我们翻转偶数个轴, 定向保持不变, 而当我们翻转奇数个轴时, 定向会改变. 这看起来和 (1)k 很像, 当 k 是偶数时得到结果 1, 当 k 是奇数时得到结果 1 .

然后让我们谈谈轴的交换. 如果我们绕着直线 y=x 翻转, 这会交换水平和垂直的坐标轴, 字母'p'会变成逆时针旋转了 90° 的字母'b', 它与'p'有不同的定向. 另一次翻转或轴的改变会将其定向还原. 因此, 似乎只有两种定向, 就像我们有两只不同的手一样. 如果一个物体的定向改变了偶数次, 那么与原始定向相比, 它是正定向的 (+1) . 如果一个物体的定向改变了奇数次, 那么与原始定向相比, 它是负定向的 (1) .

我们经常使用的坐标系是右手坐标系, 因此通常认为左手坐标系为负定向.

为什么要有向面积

虽然这一小节我们在讨论 R2, 之后我们将讨论的会是一个一般的二维线性空间

假设 R2 中有一个平行四边形, 其顶点为

A(0,0),B(a,c),C(a+b,c+d),D(b,d)

这是向量 α1=(a,c)α2=(b,d) 根据平行四边形法则确定的平行四边形, 请自己画个图并且计算它的面积. α2α1 的左侧或者右侧会引出不同的结果, 前者的面积为 S=adbc, 而后者的为 S=bcad. 这个公式可以总结为 S=|adbc|. 此外我们还需要排除 α1α2 共线的情况, 这让它不可能成为平行四边形.

定义有向面积的主要原因之一是, 它允许负面积作为负定向出现且允许 0 作为共线出现. 其中通过符号来确定定向只是一个副产物, 不过这也许也有其作用. 例如, 如果我们只是测量 'p' 和 'b 上点间的距离, 我们会发现它们全等, 所以不能区分出它们. 然而通过计算给定两条轴之间的有向面积, 我们可以将二者分开. 有向面积其实就是面积加上了一个符号来表示定向, 它使用 adbc 代替了 |adbc| 并且告诉我们更多关于平行四边形的信息. 唯一的缺陷是, 我们不能自由地交换 α1α2, 因为这会改变定向. 虽然有向面积有一些缺陷, 但瑕不掩瑜, 它仍然是一个好东西. 我们将会像之前定义其它概念一样, 用几条规则来定义有向面积, 解释这些规则的合理性并且得到相关性质.

有向面积遵循的规则和基础性质

这几段定义了有向面积并且给出了一些解释

为了正式定义有向面积(或称作有符号面积), 我们将会从最简单的对象:平行四边形开始. 这里的平行四边形指的并非我们平常的平行四边形, 而是一个向量组 α 中的 α1α2 由平行四边形定则确定的四边形. 有向面积应该满足如下的性质:

有向面积以向量组 α 作为输入, 其输出满足:

  1. 把平行四边形的一条边缩放一个因子 k 且不改变其它边会让最终的面积变为原来的 k 倍, 即

    f(kα1,α2)=f(α1,kα2)=kf(α1,α2)

    注:当 k 为负数时, 平行四边形的定向会发生改变, 所以有向面积会变号, 考虑定向有助于去掉绝对值, 用一种更加线性的方法来考虑问题

  2. 如果一个平行四边形可以通过适当的切割和平移得到其它的四边形, 那么这两个四边形的面积应该是相同的, 然而我们不认为交换两个向量得到的平行四边形是相同的四边形.

如下的图展示了上面的两条规则, S[α1α2] 的有向面积:

这一段讨论了有向面积在列加减中不变

右上角的图告诉我们对常数 k, 当把 α1 改为 α1=α1+kα2 时, 平行四边形改变的方式可以视作把一部分切下来然后平移到另一边得到平行四边形 [α1α2]. 所以 f(α1,α2)=f(α1+kα2,α2). 同样地, 可以证明把 α1 的某个倍数加到 α2 上时结果也成立.

接下来的段落承接上一段, 证明两个共线向量的有向面积为 0. 特别地, 这对一个向量和它自身成立.

α1α2 共线, 例如 α2=kα1, 则

f(α1,α2)=f(α1,kα1)=f(α1,kα1kα1)=f(α1,0)=0f(α1,α1)=0

所以对于两个共线向量, 可以推出面积为 0. 这和我们的直觉一致, 它的核不为 0, 把线性空间压缩到了一条线.

以下段落通过选取适当基底证明了有向面积的多线性,即对每个变量线性

在第一个性质的注中, 我提到了这让有向面积变得线性. 所以我们会期望 f(α1,α2+β)=f(α1,α2)+f(α1,β). 证明分为两部分, 如果 βα2 都与 α1 线性相关, 则三项都为 0, 等式成立. 接下来假设其中一个与 α1 线性无关, 不妨设 α2α1 线性无关, 则 α 包含两个线性无关的向量, 从而成为这个二维空间的一个基. 可以用基 α 的一个线性组合来表示 β. 设 β=x1α1+x2α2. 则左侧的结果为

f(α1,α2+β)=f(α1,x1α1+(x2+1)α2)=f(α1,(x2+1)α2)=(x2+1)f(α1,α2)

右侧的结果是

f(α1,α2)+f(α1,x1α1+x2α2)=f(α1,α2)+f(α1,x2α2)=(x2+1)f(α1,α2)

这一段讨论为什么有向面积在一定程度上比原始的面积有更好的性质

在以上的证明中, 我们不关系 x1,x2 或者 x2+1 的具体符号, 因为有向面积遵循的规则支持我们直接把这些系数提出来. 这对计算来说难道不方便吗?当 α2α1 左侧时, 结果是正的. 而当 α2α1 右侧时, 结果是负的. 在一定程度上, 有向面积比面积本身更加自然. 下面的图是一个图像证明(这个图只是一个二维的图, 不要误以为它是三维的. 这一图像只在 x2>0 的时候才能有效论证结果成立)

有向面积的新符号

本段将 uv 作为 f(u,v) 的别名引入. 这就像我们使用矩阵代替 RnRm 时做的更换记号工作一样, 主要目的是为了简化书写. 请不要默认它像普通乘法一样满足交换律, 否则当你看到反交换的时候会感到非常困惑.

为了方便, 从现在开始我将会用 uv 来表示 f(u,v). 根据前面的段落, 我们已经证明了 f 的多线性, 用 来写就是 (k1u1+k2u2)v=k1u1v+k2u2vu(k1v1+k2v2)=k1uv1+k2uv2 (双线性). 此外我们发现把一个向量的倍数加到其它向量上并不改变结果, 这与双线性可以共同推出

0=(u+v)(u+v)=u(u+v)+v(u+v)=uv+vuvu=uv

你完全可以用 f 的记号来描述这些, 但对我来讲, 写这个会节省时间并且让它更加清晰. 既然 uv 是任意的, 这表明交换两个变量位置会导致计算的结果符号改变. 这被称作反交换性, 也是上文一直强调交换两个向量不同于原本向量的原因.

这一段为有向面积找了一个单位并证明有向面积构成一维线性空间

在前面的讨论中, 我们并未讨论平行四边形面积的具体值是什么, 这是因为如果你把面积函数 f 乘以某个常数, 它应该满足的规则仍然成立, 所以我们只能相对于某个"单位"测量面积. 只有当你选择了单位, 例如 m2, 你才能讨论我们空间中什么东西的面积并且得到它(相对于这个单位)的值. 任意选一个平行四边形, 设它由基 α 定义(这意味着面积非 0, 所以可以作为一个单位), 不妨将其有向面积作为一个单位 α1α2. 设 β1=aα1+cα2, β2=bα1+dα2, 则由 β1β2 定义的平行四边形面积为

β1β2=(aα1+cα2)(bα1+dα2)=aα1(bα1+dα2)+cα2(bα1+dα2)=aα1bα1+aα1dα2+cα2bα1+cα2dα2=ab(α1α1)+ad(α1α2)+bc(α2α1)+cd(α2+α2)=ad(α1α2)+bc(α1α2)=(adbc)(α1α2)

所以任意的有向面积都可以写成 α1α2 的一个倍数, 所以有向面积的空间是一个一维向量空间, 每一个线性变换都可以用一个缩放因子表示(即具有形式 φ()=k(). 为了了解线性变换 φ 作用在有向面积上的结果, 我们只需要观察某个平行四边形 α 的面积 S 并且找到改变后的面积 φ(S). 把它们相处就得到了系数 k=φ(S)/S. 然后可以得到 φ 作用在有向面积上是一个正比例函数, 比例为 k.

注:一般来讲向量相除不是好的运算, 但是在一维空间中是可以的.

第三步 —— 定义二维的行列式
行列式遵循的基本规则

注:Gabriel Cramer 在18世纪引入了行列式, 用于解线性方程, 英文中"determinant"和"determine"是同源词, 它决定了矩阵的一些重要性质. 然而中文的"行列式"可谓是一个奇怪的翻译, 但是既然大家都这么叫, 暂时把它接受下来就好了.

如果有映射 φ:VV, 其中 V 是一个二维向量空间, 它给出了有向面积所属线性空间上的线性映射. 记 detφ=φ(S)/S 并称之为 φ 的行列式. 这个结果对每个非零的有向面积都相同, 所以是良定义的. 所以我们可以随意选取一个基底 α 并且继续用它计算(因为基底不影响结果的选取)

α 是一个基, φ 具有矩阵表示 A. 也就是说 φ(α)=αA. 我们可以通过 A 在基底 α 下的行列式为 detα(A)=det(φ)=det(αAα1). ( 之后我会证明矩阵的行列式与基底无关, 所以可以直接写成 detA ). 更明确地说, 它是这样定义的

detα[xy]=α(x)α(y)α1α2

接下来的段落将会把有向面积的结果翻译为矩阵行列式的结果并且对矩阵行列式得到相同的结果 adbc

我们已经在一些规则的基础上证明了两条重要的性质, 现在我们希望得到行列式的性质, 此外还要加上另外一条.

  1. 多线性

    对于第一个变量,

    (k1u1+k2u2)v=k1u1v+k2u2v

    如果我们把 uv 用基底 α 下的坐标来表示, 我们有

    α(k1x1+k2x2)α(y)=(k1α(x1)+k1α(x2))α(y)=k1α(x1)α(y)+k2α(x2)α(y)

    因为我们定义 detαA=detφ 为面积的比例, 这意味着

    detα[xy]=α(x)α(y)α1α2

    所以 α(x)α(y)=(detα[xy])(α1α2)

    有向面积对第一个变量线性可以写作

    (detα[k1x1+k2x2y])(α1α2)=(k1detα[x1y])(α1α2)+(k2detα[x2y])(α1α2)

    其中 α1α2 可以从等式两边消去(因为它们不共线, 所以面积不为 0

    detα[k1x1+k2x2y]=k1detα[x1y]+k2detα[x2y]

    同理可证

    detα[xk1y1+k2y2]=k1detα[xy1]+k2detα[xy2]

    所以行列式对每个变量线性, 但是注意:

    detα[x1+x2y1+y2]detα[x1y1]+detα[x2y2]

    对每个变量线性意味着你需要一个个地使用线性

    detα[x1+x2y1+y2]=detα[x1y1+y2]+detα[x2y1+y2]=detα[x1y1]+detα[x1y2]+detα[x2y1]+detα[x2y2]

    如果你希望展开它, 你需要做的就像多项式乘法一样.

  2. 反交换性.

    这意味着 vu=uv. 仍然假设 u=α(x),v=α(y), 根据

    α(x)α(y)=(detα[xy])(α1α2)

    可以得到

    vu=(detα[yx])(α1α2)=uv=(detα[xy])(α1α2)

    于是 detα[yx]=detα[xy]

    交换向量会改变定向, 在矩阵中就是说交换矩阵的两列改变行列式的符号.

    如果令 x=y, detα[xx]=detα[xx] 推出一个含有重复的列的矩阵行列式为 0 (此时 αA 中出现重复的向量, 从而线性相关)

  3. 对单位矩阵结果为 1

    虽然我们不能讨论一个面积的绝对大小, 我们至少可以说 α 的面积等于它自己, 也就是说

    1=α1α2α1α2

    注意到 I2 作为单位矩阵作用在 α 上满足 αI2=α, 所以

    detαI2=1

有了这些结果, 我们可以纯粹地用矩阵和行列式的语言重新叙述 adbc 的结果.

detα[abcd]=detα[ab0d]+detα[0bcd]=detα[ab00]+detα[a00d]+detα[0bc0]+detα[00cd]=abdetα[1100]有重复的列+addetα[1001]单位阵                          +bcdetα[0110]列交换后的单位阵+cddetα[0011]有重复的列=adbc

在此过程中, 我们只用到了多线性, 反交换和单位阵行列式为 1 的性质. 虽然这些性质是通过选取了某个基底来证明的, 但是结果最终和特定的基底无关. 所以实际上我们并不需要 det 下的下标 α, 而是可以直接写出 det[abcd]=adbc

所以对于一个线性变换, detφ 是一个不变量, 它不随基底而改变. 同样地, 对于一个矩阵, detA 也是不变量, 且等于它表示的任意线性映射的行列式. 这里"任意它表示的线性映射"是说 A 在基 α 下可能表示映射 φ, 而在基 β 下可能表示映射 ψ, 这些映射可能不同, 但是它们的行列式一定相同.

第四步 —— 把定义拓展到 n
把有向面积的定义推进

你还记得为什么我们选择了二维空间吗?是的, 这是因为它相对简单, 接下来我们将会推广这个结果并且得到 n 维空间中的行列式. 但在此之前, 我们需要找到有向面积的替代品.

在二维空间中, 一个基的定向由第二个向量在第一个向量的左侧还是右侧决定. 假设 α2 在变动, 除非 α2 穿过 α1 所在的直线, 否则基的定向不会改变. 然而在加上一个维度之后我们可以轻易地翻转改变它的方向从而不需要跨过 α1. 因此在 3 维空间中, 你可能已经想到了, 我们应该使用"有向体积", 这时平行四边形变成了平行六面体. 请回忆, 有向面积构成一个向量空间. 如果我们称一个有向面积是一个 2-向量, 并且称有向体积是一个 3-向量, 那么对于 n 维空间, 应当有对应的 n-向量概念. 虽然对于我们来讲想象 n-向量如何变化, 但是我们可以用 2-向量(有向面积)和 3-向量(有向体积)作为例子类比.

如果你感到困惑, 在理解下文的时候把 3-向量这个词换成"有向体积"并且把 uvw 换成 f(u,v,w)

在一个 3 维空间中, 3-向量应当遵循的规则应当包括:

  1. 对每个变量线性, 即

    (k1u1+k2u2)vw=k1u1vw+k2u2vw

    vw 也有相同的公式

    (可以这么解释:从 u1+u2 到平面 vw 的有向距离等于 u1u2 到平面 vw 的有向距离的和)

  2. 反交换性, 如果交换两个向量的位置, 结果改变符号.

    uvw=uwv=vuw=wvu

根据以上两条规则, 任何 3-向量都可以在给定的基 α 下分解, 从而得到 α1α2α3 的某个倍数, 所以三维空间中的 3-向量组成的空间是一个一维空间.

定义 n 维行列式

请回忆:一个 2×2 矩阵的行列式对每一列线性, 满足反交换律且对单位矩阵取值为 1

仍然将 n-向量的比例定义为线性变换 φ 的行列式. 关于 n×n 矩阵的行列式的结果仍然可以从 n-向量运算的方式得出. 这次我们直接通过三条规则来定义 n×n 矩阵的行列式:

矩阵的行列式是一个函数 det:Rn×nR, 满足:

  1. 多线性:对每一列线性, 即对任意的 1in,

    det[k1vi+k2vi]=k1det[vi]+k2det[vi]
  2. 反交换性:对任意 ij,

    det[vivj]=det[vjvi]
  3. detIn=1

接下来回忆我们证明过的更多关于有向面积的性质, 例如, 从一行中加或者减去另一行的若干倍, 结果不变. 也就是说如果列操作 CikCj 把矩阵 A 变为矩阵 B, 则 detA=detB. 证明如下, 其中反交换性推出带有重复行的矩阵行列式为 0

det[vikvjvj]=det[vivj]k[vjvj]=det[vivj]k0=det[vivj]

为了计算一个矩阵的行列式, 我们只需要对它做列变换把它变成单位矩阵算出结果, 又或者得到包含 0 或重复列的矩阵得到 0, 以两个三阶矩阵为例:

det[123456789]=C33C1C22C1det[1004367612]=C32C2det[100430760]=0
det[211121112]=C3C1/2C2C1/2det[20011.50.510.51.5]=C3C2/3det[20011.5010.54/3]=21.5(4/3)det[1000.5100.51/31]=C2C3/3C1C3/24det[1000.510001]=C1C2/24det[111]=4

这个过程是对矩阵的列进行高斯消元. 在此过程中如果有全为 0 的列, 我们马上得到了行列式为 0. (这意味着列并非先行独立, 所以核不为 0). 如果没有出现全为 0 的列, 应该得到一个下三角矩阵. 在此之后我们只需要把对角线上的系数从每一列提出来让对角线全为 1. 接下来总是可以很容易地在不改变对角线 1 的情况下消掉对角线下方的所有元素. 所以行列式会等于这些阶梯头, 即消元后对角线上元素的乘积.(所以事实上我们并不需要关心把它变成下三角矩阵以后的其它过程, 直接把对角线上的元素相乘就可以)

行列式的重要性质
  1. 行列式在基变换下保持不变(从某种意义上这是最重要的性质, 因为我们最开始的目标就是找到一个不变量)所以如果 αβ 都是 V 的基底, 而 φ:VV 在这两个基底下的矩阵表示分别为 AB, 则 detA=detB. 此外, 任意一个可逆矩阵都可以把基 α 变为一个基 αP. 在基 β=αP 下, φ 的表示应该为 β1φβ=(αP)1φ(αP)=P1(α1φα)P=P1AP. 这推出对任意一个矩阵 A 和任意可逆矩阵 P 都有 detP1AP=detA.

  2. 多线性、反交换性和 detIn=1. 这些事我们直接从 n-向量(或称之为 n 维有向体积)推导出的性质.

  3. 在列加减下保持不变.

  4. 如果 A 的列的某个线性组合为 0, 则 detA=0. 换言之, 此时 dimKerA>0, 且 rankA<n.

  5. 4的逆否命题:如果 detA0, 则矩阵的列线性无关且 dimKerA=0. 这意味着每个等式 y=A(x), 其中 yRn 总是有唯一解, 此时 A 是双射, 存在逆矩阵.

  6. 4的逆命题:如果 detA=0, 则 A 中存在线性相关的行. 如果 detA=0, 则它不可能被消元到一个对角线不全为 0 的下三角矩阵, 再此过程中, 完全是 0 的列会出现, 所以 y=A(x) 对有些 y 无解, 而对有些有无穷多解.

  7. det(φφ)=det(φ)det(φ). 这可以通过映射符合的缩放因子等于两次缩放因子的乘积来解释. 因为缩放因子与所选的基底无关, 若 detψ0, 则 ψ(α) 也是一个基底, 所以

    det(φψ)=(φψ)(α1)(φψ)(α2)(φψ)(αn)α1α2αn=φ(ψ(α1))φ(ψ(α2))φ(ψ(αn))ψ(α1)ψ(α2)ψ(αn)ψ(α1)ψ(α2)ψ(αn)α1α2αn=det(φ)det(ψ)

    如果 detψ0, 则 Ker(ψ)0Ker(φψ)0, 所以 det(φψ)=0, 在这种情况下仍然成立. 特别地, 取 V=Rn, 则 φψ 都是 n×n 矩阵, 且 det(AB)=det(A)det(B) 对任意 A,BRn×n 成立

  8. 排列矩阵的行列式是 ±1. 在一个排列矩阵中, 每行每列都仅包含一个 1. 所以我们可以通过交换它的行来重新得到 In. 例如:

    det[1111]=C12det[1111]=C24det[1111]=C34detIn=1

    在每次交换过程中, 我们把第 i 列和第 i 行的 1 所在的列交换, 最终把行列式转变成 detIn=1, 最多相差一个符号.

  9. detA=detAT

    请确保你还记得 PLU 分解, 并且确认自己明白 PTP=In. 如果你忘记了这一点又或者你不关心它是怎么证的, 你可以暂时把 detA=detAT 当作一个既定的结果接受下来并且直接向下读. 这个性质告诉我们可以像做列变换一样做行变换. 也就是说你在不使用列变换的前提下得到一个矩阵的行列式. 此外, 教材中通常更喜欢做行变换, 好处是它让记号更统一, 操作更为一致.

    证明这一点需要一些技巧. 首先先对下三角和上三角矩阵证明这个事实:

    对于一个下三角矩阵, 它的特征值就是对角线上所有元素的乘积. 而对上三角矩阵, 也是这样, 我们总是可以消除对角线上方的所有元素.

    det[114514]=(2) C1C2/45C3/4(1) C2C3/4det[144]=144=16det[115414]=(2) C35C1C3/4(1) C2C1det[144]=144=16

    (如果 0 出现在对角线上, 那么这个三角矩阵的秩就不是 n, 从而特征值为 0)

    所以对下三角和上三角矩阵, 可以写出

    detL=detLT,detU=detUT

    对于任意 n×n 的矩阵, PLU 分解把它分解为

    A=PLUdetA=detPdetLdetU

    由于

    AT=UTLTPTdetAT=detUTdetLTdetPT

    且其中 detL=detLT,detU=detUT. 所以我们只需要证明 detP=detPT.

    由于 PTP=In, 这意味着 detPTdetP=detIn=1. 当 detP=1 时有 detPT=1. 当 detP=1 时有 detPT=1. 这表明 detP=detPT, 完成了证明.

一会我们还会见到行列式的更多性质.

第五步 —— 行列式的第二定义

请不要被这一节吓到, 它的目的是解释某些教材上吓人的公式. 它基本没有提供关于行列式的直觉, 而是把学生淹没在计算的海洋当中.

有些教科书 甚至完全不关心行列式的相似不变性以及一般线性变换的行列式, 它们把一个 n×n 矩阵的行列式定义为

det[a11a12a1na21a22a2nan1an2ann]=j1jn(1)τ(j1,j2,,jn)a1j1a2j2anj2

其中 τ(j1,j2,,jn)=τ(j1)+τ(j2)++τ(jn), 而 τ(ji)ij 之后但是比 ij 小的数计数. 你可能正在想:这什么鬼啊?这个 τ 有意义吗?为什么我们要把这些项加起来还要用一个巨大的跑遍所有 j 排列的求和?它为什么加起来等于 detA. 又或者更确切地说这一大堆东西它真的有意义吗?为了回答这些问题, 让我们回到

det(φ)=φ(α1)φ(α2)φ(αn)α1α2αn

如果 A 的第 (i,j) 个元素是 aij, 且 φ 在基 α 下的表示是 A. 则 φ(α)=αA, 且

φ(α1)=i=1nai1αi,φ(α2)=i=1nai2αi,,φ(αn)=i=1nainαi

所以

det(φ)=(i=1nai1αi)(i=1nai2αi)(i=1nainαi)α1α2αn

接下来把这个公式打开并且把所有的求和提出到括号之外(为了方便, 省去了 1n 的范围)从而得到

det(φ)=i1inai11ai22ainnαi1αi2αinα1α2αn

如果 ip=iq, 则 αipαiq 同时出现在 αi1αi2αin 中, 所以这些项是 0 (因为它们并非线性无关). 只有当 ij 正好取遍 1n 中的每个值一次的时候才能得到非零值. 所以 αi1αi2αinα1α2αn 的一个重排列. 其值为 ±α1α2αn. 符号由其定向决定. 不妨设 αi1αi2αin 的定向为一个函数 ε(i1,i2,,in)=αi1αi2αinα1α2αn. 则 ε 只能取 11, 我们将会在下文中讨论这个符号. 所以我们可以简化等式, 并且把它写成

detA=det(φ)=i1inε(i1,i2,,in)ai11ai22ainn

因为 detA=detAT, 我们可以交换 ij 并且把它等价地变成

detA=detAT=j1jnε(j1,j2,,jn)a1j1a2j2anjn

现在终于该解决 ε(j1,j2,,jn) 的符号了. 为了计算它, 首先看一些例子并且找规律. 最简单的非平凡的例子是, 当 n=2 时,

ε(2,1)=α2α1α1α2=α1α2α1α2=1

接下来, 可以不用 α 来写:

ε(2,1)=ε(1,2)=1

可以用 2×2 行列式来检验这个结果:

det[a11a12a21a22]=ε(1,2)a11a22i1=1,i2=2+ε(2,1)a12a21i1=2,i2=1=a11a22a12a21

如果记 a11=a,a12=b,a21=c,a22=d, 它就是我们熟悉的 adbc.

这里 ε(1,2) 对应到 α1α2, 我们称其为标准排列. 而交换两个数字对应交换 α 中的两个向量, 所以改变定向.

接下来计算对 n=3 所有排列的结果:

ε(1,2,3)=1ε(1,3,2)=ε(1,2,3)=1ε(2,1,3)=ε(1,2,3)=1ε(2,3,1)=ε(1,3,2)=ε(1,2,3)=1ε(3,1,2)=ε(1,3,2)=ε(1,2,3)=1ε(3,2,1)=ε(1,2,3)=1

虽然在第一步中将 1 放在第一位, 然后在下一步中将 2 放在第二位非常方便, 但事实证明如果用这种方法, 在看到一个排列时很难预测会做多少交换(当维数增加时这种现象尤为显著). 为了理解为什么教材上会出现逆序数, 让我们从冒泡排序开始——这是一种不高效但对理解和解决这个问题很有帮助的排序算法.

假设我们有一个序列, 这个序列是 1n 的一个排列. 我们希望重新排列它, 使其变得有序( 1,2,...,n ). 按照以下步骤进行:

从第一个元素开始, 将其与第二个元素进行比较, 如果它大于第二个元素, 则交换它们并将计数加 1 . 继续处理第二个元素, 将其与第三个元素进行比较...直到我们到达最后两个元素, 然后从第一个元素重新开始. 继续这个过程, 直到序列变成有序状态.

以数列 3,1,4,5,2 为例:

  1. 3>11,3,4,5,2, count=1.

    3<41,3,4,5,2, count=1

    4<51,3,4,5,2, count=1

    5>21,3,4,2,5, count=2

  2. 1<31,3,4,2,5, count=2

    3<41,3,4,2,5, count=2

    4>21,3,2,4,5, count=3

  3. 1<31,3,2,4,5, count=3

    3>21,2,3,4,5, count=4

共交换了四次, 所以 ε(3,1,4,2,5)=(1)4=1

对应的python代码是:

让我们关注一种数对:逆序对. 在一个序列中, 如果一个数字放在另一个数字之后, 且比前面一个数字小(这两个数字并不一定直接相邻, 例如 3,1,4,5,2 中的 42 ), 我们称之为逆序对. 请不要急着问为什么我们要这样做. 让我们接着看这个例子:

在序列 3,1,4,5,2 中, 有 4 个逆序对: (3,1),(3,2),(4,2),(5,2) .

我们在冒泡排序的过程中进行了 4 次交换:

交换 13 会去除逆序对 (3,1), 因为它们变成了 (1,3), 不再是逆序.

交换 25 会去除逆序对 (5,2), 因为它们变成了 (2,5), 不再是逆序.

类似地, 其他 2 次交换分别去除了 (4,2)(3,2) .

事实上, 我们共进行了 4 次交换, 每次去除一个逆序对. 这并非巧合. 注意到我们每次只交换相邻的数字. 这只是交换了它们的相对位置, 但它们相对于其他数字的位置并没有改变. 因此, 一次交换对应一个逆序对, 通过计数逆序对, 我们就能知道进行了多少次交换.

最终, 记 τ(ji) 为出现在 ji 之后但是比 ji 小的数的计数(严格意义上应该写作 τj1,j2,,jn(ji), 因为结果不但依赖于 ji 自身, 还和所有的 j1jn 有关). 所以 τ(ji) 计数了所有前一个元素是 ji 的逆序对. 把它对 1n 求和, 总的逆序数应该为 τ(j1,j2,,jn)=τ(j1)+τ(j2)++τ(jn). 由于逆序数计数了通过冒泡排序将数列排序所需的交换数, τ(j1,j2,,jn) 的奇偶性决定了 ε(j1,j2,,jn), 其中 ε=(1)τ. 最终我们可以清楚地得到结果:

det[a11a12a1na21a22a2nan1an2ann]=j1jn(1)τ(j1,j2,,jn)a1j1a2j2anj2

这个公式是通过把 n-向量的所有分量展开得到的, 因为这个定义并不依赖于线性变换, 并且定义行列式的方式更加"明确", 所以包括我们教科书在内的一些人更喜欢用这个定义, 因为它们认为这更直接. 然而, 这个式子的形式意义大于实际意义, 此外使用它计算大于 3×3 的矩阵行列式非常困难. 就我个人来讲, 我更喜欢把这个式子看作 n 维有向体积的和, 这种几何直观对我理解并记住它起到了很大帮助.

代数余子式

这一小节只是为了解释我们教材中的代数余子式, 然而它对理解线性映射的本质并无太大影响, 所以如果你在此过程中感到枯燥, 不妨跳过.

我们知道一个矩阵的行列式对每列线性, 所以如果只让一列变化, 同时固定其它 n1 列, 就得到了一个线性映射, 把这一列线性映射到行列式, 即一个数, 所以它是 RnR 的. 假设矩阵的第 2n 列都确定了, 那么只有 ai1 这些项可以改变, 映射具有形式

det[a11a12a1na21a22a2nan1an2ann]=c1a11+c2a21++cnan1

这里的 ci 是与 A 的第一列无关的常数, 但是它们会随着其它列的改变而改变. 当把其它列都定下来之后它们就成为了常数.

接下来让我们为 ci 找到显式的表达式

det[a11a12a1na21a22a2nan1an2ann]=det[a11a12a1na22a2nan2ann]+det[a12a1na21a22a2nan2ann]++det[a12a1na22a2nan1an2ann]=a11det[1a12a1na22a2nan2ann]+a21det[a12a1n1a22a2nan2ann]++det[a12a1na22a2n1an2ann]

所以

c1=det[1a12a1na22a2nan2ann]=det[1a22a2nan2ann]

显然, 右侧的行列式等于

det[a22a23a2na31a32a3nan2an3ann]

(这时因为对前面的行列式高斯消元不改变第一行第一列, 所以行列式等于右下角的更小的块的行列式乘以对角线上的 1, 它们是一样的)

然而为了计算 c2, 我们有必要把第二行换到第一行并且得到

c2=det[1a12a13a1na32a33a3nan2an2ann]=det[a12a13a1na32a33a3nan2an2ann]

为了计算 c3, 首先交换第二和第三行, 然后交换第一和第二行. 这样让 a3 浮到了顶端, 而同时没有改变其它行之间的相对位置. 这里进行了两次交换, 所以前面的符号又变为了正的.

不难发现这样的规律

ci=(1)i1det[ai1,2ai1,3ai1,nai+1,2ai+1,3ai+1,n]

这里的 (1)i1 意味着进行了 i1 次的行交换, 矩阵原本的第 i 行和第一列被删除了.

当我们想让第 j 列变化而固定其它的列时, 我们发现对应的因子和第一列的类似

cij=(1)i+j2det[ai1,j1ai1,j+1ai+1,j1ai+1,j+1]

(1)i+j2 可以被写为 (1)i+j. 但是此处我写成 (1)i+j2 的原因是为了把第 (i,j) 个元素换到左上角而不改变其它行和列之间的相对位置, 需要经过 (1)i+j2 次交换. 在现在的矩阵中, 第 i 行和第 j 列被删除了. 这个系数 cij 被称作 aij 的代数余子式, 对每个 1jn, 有

detA=i=1naijcij

这是因为固定下除了第 j 列之外的其它列, 行列式变成了第 j 列的线性函数, 其系数分别为 cij. 我们称其为行列式的列展开.

类似的讨论可以导出行列式的行展开, 对每个 1in:

detA=j=1naijcij

线性方程 —— 行列式的另一个角度

Cramer 法则

先回忆一个矩阵 A:RnRm 的行为. 当 m>n 时, A 不可能是满射, 总是有一些 yy=Ax 无解. 而对 n>m, A 不可能是单射, 每个值域中的 y 都对应到很多的 x. 所以 m=n 是最"有趣"的情况, 此时 n 个方程对应 n 个未知数.

我们知道对 A:RnRn, 如果 detA=0, 那么消元会在主对角线上产生 0, 此时就有了自由变量, 于是 A 不可逆. 但是对 detA0, dimKerA=0. 线性代数基本定理告诉我们 dimImA=ndimKerA=n. 这意味着像空间是 Rn. 在本节中, 我们将会为这样的线性方程的解写出显式的表达式.

把一个线性方程写成如下形式, 其中 α1αn 为列向量:

y=x1α1+x2α2++xnαn

例如, 为了解 x1, 我们应该消掉所有其它的变量. 神奇的是, 我们可以通过计算行列式完成这一过程.

det(y,α2,,αn)=det(x1α1+x2α2++xnαn,α2,,αn)

注意到列相减不改变行列式的值, 所以

det(y,α2,,αn)=det(x1α1,α2,,αn)=x1det(α1,α2,,αn)

至少从形式上, 我们可以从 y1 直接解出 x1. (类似地对于 xi 的情况, 分子上的 y 替换的是 αi

x1=det(y,α2,,αn)det(α1,α2,,αn)

分母恰好就是 detA. 这就是 Cramer 法则, 下图展示了 n=2 时 Cramer 法则为什么合理, 对应面积的比等于对应向量长度的比.

线性方程的判别式

本小节讨论的是我个人关于行列式对于线性方程作用的理解.

大部分人对判别式的第一反应可能是 Δ=b24ac. 但是这只是判别式的一部分, 判别式实际上可以对任意多项式 p(x), 甚至可以对多变量多项式定义. 判别式反映的是 p(x)=0 的根的情况. 对于一个二次函数 ax2+bx+c=0, 它"几乎一定"拥有两个根, 或是实的, 或是虚的, 只有当 Δ=b24ac=0 时才会出现例外. 而对一个方阵 A, 如果你随意地在 R 中取它的系数, 它的行列式几乎总是非 0 的. 所以它几乎总是可逆, 此时 Ax=0 有唯一解 x=0. 但是如果 detA 恰好为 0, 则 Ax=0 有无穷多解. 这意味着此时出现了"重根", 所以行列式可以视作是一种类型的判别式, 它表明方程是否有重根.

伴随矩阵

本小节只是为了解释课本中的伴随矩阵概念, 它对理解线性映射的本质并无太大影响. 所以如果你感到无聊, 可以直接跳过它.

我们知道对一个 detA0 的线性方程 y=Ax, 有

x1=det(y,x2,,xn)detA

我们可以用代数余子式把这个式子展开:

x1=(detA)1i=1nyici1=(detA)1[c11c21cn1]y

类似地

xj=(detA)1i=1nyicij=(detA)1[c1jc2jcij]y

实际上在这个过程中我们已经用 y 解出了 x

x=[x1x2xn]=(detA)1[c11c21cn1c12c22cn2c1nc2ncnn]y

于是我们得到了一个把 A1 用余子式表示的显式表达式.

A1=(detA)1[c11c21cn1c12c22cn2c1nc2ncnn]

这里有 (A1)ji=(detA)1cij (注意此处下标的顺序). 右侧的矩阵被称作伴随矩阵, 记作 adjA (或 A ). 对于 detA0, A1=(detA)1adjA, 这可以推出

AadjA=(adjA)A=(detA)In

然而这个矩阵乘以其伴随的性质并不依赖于 detA0. 由余子式的定义, 容易验证 AadjA=(detA)In=0detA=0 成立, 所以这个式子对所有方阵 A 成立.

特征值和特征向量

本章中我们将会在 C 上讨论, 因为一个 n 次的多项式在 C 中总有 n 个根(计重数)

最初的想法

先回忆, 当我们希望比较一个变化前和变化后的向量时我们需要找到一些向量, 满足线性变换作用在它们上时表现的像一个伸缩. 这给了我们另外一种看待线性变换的角度并且可以帮助我们找到一个好的基底来表示它. 线性变换像一个伸缩一样意味着对某个非零向量 v, 有 φ(v)=λv. 注意到 λ 倍的恒同映射总是把 v 映射到 (λId)(v)=λv. 所以只需要把两个式子相减, 就存在某些非零向量满足

(λIdφ)(v)=0

这样一组 (λ,v) 被称作特征值和一个对应的特征向量. 对有限维空间而言, 这意味着 det(λIdφ)=0. 这是关于 λ 的多项式方程, 我们可以先解出 λ, 然后通过解 (λIdφ)(v)=0 得到 v.

更具体地说, 首先选一个基并写出 φ 的矩阵表示 A. 则 λIdφ 的矩阵表示为 λInA. 它们的行列式相同. 然后只需要解出 (λInA)x=0, 就可以找到所有特征向量的坐标, 例如, 假设

A=[3164]

为了找到 λx 使 Ax=λx. 先计算

det(λI2A)=det(λ[11][3164])=det([λ316λ4])=(λ3)(λ4)16=λ27λ+126=(λ1)(λ6)

多项式 p(λ)=(λ1)(λ6) 称作特征多项式, p(λ)=0 被称作特征方程. 解特征方程可得 λ1=1,λ2=6. 对 λ1=1, 有 (λ1I2A)x=0x=t[21]. 取 u1=[21] 为一个特征向量. 对 λ2=6, (λ2I2A)x=0x=t[13], 取 u2=[13] 为另一个特征向量, 则对所有的 x=tu1, Ax=λ1x, 而对所有的 x=tu2, Ax=λ2x. 所以我们找到了所有的特征值和特征向量.

对于一个 n 维空间, degp=n. 代数基本定理告诉我们一个 n 次多项式总可以被因式分解为 p(λ)=(λλ1)(λλ2)(λλn), 这里每个 λi 都是一个复数.

没有重根的情况

最一般的情况是多项式没有重根, 此时对 ijλiλj. 这给出我们 n 个特征值, 所以可以从 (λiInA)x=0 中解出 n 个特征向量 u1un. 矩阵可以写作如下形式:

A[u1u2un]=[u1u2un][λ1λ2 λn]

可以通过归纳法证明 u1un 总是先行独立的, 所以 [u1u2un] 作为过渡矩阵(基变换矩阵)把原先选定的基底 α 变成一个新的基底 β, 使得基 β 下的矩阵表示是一个对角矩阵.

Λ=[λ1λ2 λn]

这一过程称作"对角化". 这对没有重根出现的情况总是适用. 注意到行列式不依赖于基变化, 所以特征多项式实际上是一个不变量, 从中解出的特征值也是不变量, 这会把每个基底都变到一个只与线性变换 φ 有关的基 β (最多相差一个特征向量乘的系数, 因为特征向量的倍数也是特征向量)

有重根的情况

在讨论之前, 我们先定义一个叫特征子空间的概念. 对于向量空间 V 上线性变换 φ 的某个特征值 λ. 称对应的特征子空间为 Vλ={vV|φ(v)=λv}. 这确实是一个子空间, 因为它可以写成 Vλ=Ker(λIdφ). 它包含了所有对应于特征值 λ 的特征向量以及 0 向量.

不幸的是, 当重根出现时, 不一定总能找到一组特征向量组把它们作为基. 这是因为 det(λIdφ)=0 只能确存在特征向量 v 满足 φ(v)=λv, 也就是说对应的特征子空间维数至少是 1 维的. 但是当重根出现时, 不能保证重数一定等于子空间的维数. 例如, 矩阵 A=[0100] 的特征方程是 λ2=0λ=0. 然而方程 Ax=0 的解只有 x=[t0]. 这意味着子空间是 1 维的, 然而特征值 λ=0 作为根的重数是 2. 这意味着没有足够的向量构成一个基, 矩阵因此不可对角化.

也有时即使出现了特征值, 但是矩阵仍然可以对角化. 例如, 所有的非零向量都是恒同映射 Id 特征值为 1 的特征向量. 所以 λ=1 对应的子空间是整个空间. 设空间维数为 n. 由于没有其它的特征值, 所以对应的特征多项式是 p(λ)=(λ1)n. 任意取一个 V 的基底, 则有 n 个基向量, 这个线性映射可以被对角化为一个对角线上全为 1 而其它位置全为 0 的矩阵(即单位矩阵)

称特征方程中特征值 λ 的重数为代数重数, 而特征子空间维数 dimVλ 为几何重数. 可以给出估计 1几何重数代数重数, 这里略去结果的证明. 如果没有重根, 则所有的代数重数都是 1, 由不等式可知必须有每个特征值对应的特征子空间维数都为 1. 而当出现重根时, 代数重数大于 1. 只有当所有的几何重数都等于代数重数时这个线性变换才能对角化.

练习

5.1 注意到行变换和列变换都是矩阵空间上的线性变换, 先验证下面 4 个矩阵组成 R2×2 的一个基

e11=[1000],e12=[0100],e21=[0010],e22=[0001]

如果记 T:R2×2R2×2 为将第二行减掉两倍的第一行的变换, 它在基 e11,e12,e21,e22 下的矩阵表示是什么?

5.2 先验证所有满足 an+2=an+an+1 的数列构成线性空间, 并且证明这两个数列 s1:1,0,1,1,2,3,s2:0,1,1,2,3,5, 构成线性空间的一个基. 由于去除前 t 项的操作 Rt 是这个空间上的线性映射, 写出 R1,R2,R3 的矩阵表示 A1,A2,A3. 并且叙述 A1,A2,A3 之间有何联系.

5.3 计算 R2 中顶点为 (0,0),(3,1),(9,5),(6,4) 的平行四边形通常的(即不包含定向的)面积.

5.4 使用 (uv)(uv)=0 证明 uv=vu.

5.5 如果 [β1β2β3]=[α1α2α3]A, 也就是说

β1=a11α1+a21α2+a31α3β2=a12α1+a22α2+a32α3β3=a13α1+a23α2+a33α3

β1β2β3 的表达式展开并把它用 α1α2α3 表示. 观察其中有多少非零的项, 并把它们的符号和所有三个数字排列的定向比较.

5.6 分别通过消元和你在 5.5 中得到的结果计算如下行列式:

det[311131113]

5.7 由于 detA=detAT. 对正交矩阵 Q, 证明 |detQ|=1.

5.8 计算 ε(3,1,5,2,4) 并计算下列矩阵的行列式:

det[31524]

5.9 计算如下的行列式, 结果会是关于向量 x 的线性函数, x 的每个分量前的系数分别是什么?如果使用 R3 上的标准内积, 它可以表示成哪个向量和 x 的内积, 结果何时为 0

det[x114x225x336]

5.10 分别使用 Cramer 法则和消元解下列方程:

[314]=[111]x1+[122]x2+[123]x3

5.11R2 找一个基 U 以对角化 A=[112]. 则 AU=UΛA=UΛU1. 根据 A=UΛU1 计算 A127, 你可以从中体会到对角化为什么让计算矩阵的幂更加方便.

5.12 证明如果一个线性映射 φ 可对角化, 则 detφ=λ1λ2λn. (提示:行列式无关于基底选取)

5.13 证明一个方阵不可逆当且仅当它有 0 特征值, 为什么这个结果成立.

5.14 如果 λφ 的一个特征值, 证明 λ2φ2=φφ 的一个特征值, 且 v 仍然是 φ2 的一个特征向量.

5.15 如果 p(λ) 是某个可对角化矩阵 A 的特征多项式, 根据 A=UΛU1 证明 p(A)=0. 这里 p(A) 的定义是 p(A)=p0In+p1A+p2A2++pn1An1+pnAn. 齐总 piλi 项的系数

5.16 如果 ARm×m,BRn×n,CRm×n. 证明 det[ACB]=detAdetB. (提示:把问题分成两半: detA=0detA0

5.17 A=[11111] 可对角化吗?计算 A2,A3,A4 并猜想 Ak 的结果.

5.18 证明除了恒同映射以外, 没有线性映射可以被相似对角化为单位矩阵.