线性代数(八)对称矩阵与二次型
Chen Kai BOSS

对称矩阵是线性代数中最"美好"的矩阵——它们有实特征值、正交特征向量,可以完美对角化。理解对称矩阵,是掌握主成分分析、优化理论、物理振动分析等众多领域的关键一步。

引言:对称性的力量

在数学和物理中,对称性往往预示着美好的性质。想想雪花的六重对称、蝴蝶翅膀的镜像对称——这些对称性不仅带来视觉上的美感,更蕴含着深刻的物理规律。线性代数中也不例外:对称矩阵拥有最优雅的性质。

想象你在分析一个物理系统的能量,或者在机器学习中优化一个目标函数。你会发现,这些问题最终都归结为对称矩阵的分析。为什么?因为:

  • 能量总是用二次型表示
  • 协方差矩阵总是对称的
  • 海森矩阵(二阶导数)总是对称的

生活类比:对称矩阵就像一面镜子——你从左边看到的和从右边看到的是一样的。这种"对称性"带来了巨大的数学便利:计算更简单、性质更优美、应用更广泛。

对称矩阵的基本性质

定义与直觉

矩阵对称的,如果:

即: 对所有 成立。

几何意义:对称矩阵对应的线性变换在某种意义上是"均匀"的——它沿着主轴方向拉伸或压缩,但不扭曲空间。就像你用两只手均匀地拉伸一块橡皮泥,而不是扭曲它。

生活案例:弹簧系统

想象两个质点通过三根弹簧连接。如果你推动第一个质点,它会通过弹簧影响第二个质点;反过来,第二个质点也会以相同的方式影响第一个。这种"相互作用的对称性"正是对称矩阵的本质。

例子:协方差矩阵

由于,所以 对称。这告诉我们: 的影响程度和 的影响程度是一样的。

对称矩阵的特殊性质

定理 1:对称矩阵的特征值都是实数

这是一个非常重要的性质。一般矩阵的特征值可能是复数(比如旋转矩阵),但对称矩阵保证所有特征值都是实数。

证明

是特征值, 是对应的特征向量(可能是复向量)。

取共轭转置:

由于

右乘第二个式子,用 左乘第一个式子:

因为,所以,即 是实数。 直觉解释:复特征值表示旋转,而对称矩阵只做拉伸/压缩,不做旋转。没有旋转 = 没有复数部分。

定理 2:对称矩阵的不同特征值对应的特征向量相互正交

证明

是两个不同的特征值, 是对应的特征向量。

计算

另一方面,利用

因此:

由于,必有

生活类比:想象一个足球场,你可以沿着球场长度方向跑(特征向量 1),也可以沿着宽度方向跑(特征向量 2)。这两个方向是垂直的,互不干扰——这就是特征向量的正交性。

谱定理( Spectral Theorem)

这是对称矩阵最重要的定理:

谱定理:任何实对称矩阵都可以被正交对角化

其中: -正交矩阵),列为单位特征向量 -对角矩阵,对角元为特征值

意义: 1. 对称矩阵在其特征向量构成的正交基下,表现为简单的对角矩阵 2. 任何对称矩阵都可以看作是沿着正交方向的拉伸/压缩 3. 这是主成分分析( PCA)、谱聚类等算法的理论基础

生活类比:想象你要搬一个形状奇怪的家具通过一个门框。谱定理告诉你:只要找到家具的"主轴"方向,就可以简化问题——沿着这些方向,家具的尺寸是最简单的。

推论(谱分解):对称矩阵可以写成特征值和特征向量的外积和:

这称为谱分解( spectral decomposition)。

为什么叫"谱"? 在物理学中,光谱是将白光分解为不同颜色(频率)的过程。类似地,谱分解是将矩阵分解为不同"频率"(特征值)的过程。每个特征值对应一个"纯净"的方向(特征向量),就像每种颜色对应一个纯净的光波。

二次型

二次型的定义

二次型是关于变量 的二次齐次多项式:

可以用矩阵形式表示:

其中 是对称矩阵(可以总是取为对称,因为)。

生活案例:能量

在物理中,弹性势能是一个典型的二次型:

对于两个自由度的系统:

这就是二次型!其中 表示两个自由度之间的耦合。

例子 1:二元二次型

对应矩阵:

注意:交叉项系数 4 被平分为两个 2,这样才能保证矩阵对称。

验证

二次型的几何意义

二次型 的几何意义取决于 的特征值:

情况 1: 正定(所有) - 二次曲面:椭球 - 等高线:同心椭圆 - 最小值在原点(

生活类比:这就像一个碗的形状——无论你从哪个方向走,都是向上的。小球放在碗底会稳定地停在那里。

情况 2: 负定(所有) - 二次曲面:向下的碗 - 最大值在原点

生活类比:这像一个倒扣的碗——小球会从顶点滚落。

情况 3: 不定(有正有负特征值) - 二次曲面:鞍面(马鞍形) - 原点是鞍点

生活类比:这就像马鞍——沿着马背方向向上弯曲,沿着马肚方向向下弯曲。骑马时你坐在鞍点上,这个点既不是最高点也不是最低点。

情况 4: 半正定,至少一个为 0) - 退化情况:抛物柱面等 - 沿着某个方向是"平"的

二次型的标准化

目标:通过坐标变换,将二次型化为标准形式(只含平方项)。

主轴定理:对于二次型,存在正交变换 使得:

步骤

  1. 的特征值
  2. 求对应的单位特征向量
  3. 正交变换:,其中

几何意义:新坐标系 是二次曲面的主轴方向。

详细例子

考虑二次型 步骤 1:写出矩阵

步骤 2:求特征值

特征值:

步骤 3:求特征向量

对于

对于

步骤 4:正交变换

,则:

这是标准形式!在新坐标系中,椭圆的方程变成了

二次型的分类

根据矩阵 的特征值符号,二次型分为:

特征值情况 二次型名称 标准形 几何形状
全正 正定二次型 椭球
全负 负定二次型 向下椭球
有正有负 不定二次型 鞍面
非负,至少一个 0 半正定 部分 退化椭球

正定矩阵

定义与判定

对称矩阵正定的( positive definite),如果对所有非零向量

几何意义:二次型 总是正的(除了原点)。

相关概念: - 半正定( positive semidefinite): - 负定( negative definite): - 不定( indefinite):既有正值又有负值

生活类比: - 正定:碗底——无论从哪个方向偏离原点,能量都增加 - 负定:山顶——无论从哪个方向偏离原点,能量都减少 - 不定:马鞍——某些方向增加,某些方向减少 - 半正定:有一个方向是平的谷底

判定正定的方法

有多种等价的判定方法:

方法 1:特征值判定法 正定 所有特征值 证明

由谱定理

其中。由于 正交, 意味着

这个和 当且仅当所有 方法 2:主子式判定法( Sylvester 判据) 正定 所有顺序主子式 顺序主子式是左上角子矩阵的行列式:

例子

所以 正定。

直觉: Sylvester 判据实际上是在逐步检查——先检查一维情况、再检查二维情况……每一步都要求"正能量"。

方法 3:Cholesky 分解判定法 正定 可以 Cholesky 分解: 是下三角矩阵,对角元为正)

方法 4:能量判定法

在物理和工程中,正定矩阵对应正能量系统。如果 表示一个系统的刚度矩阵, 正定意味着系统稳定。

生活案例:建筑结构的稳定性

想象一座桥。工程师需要确保桥的刚度矩阵是正定的——这意味着任何外力作用下,桥都会产生正的弹性势能,而不是"塌陷"。如果刚度矩阵不正定,桥可能会在某个方向上失稳。

正定矩阵的性质

  1. 可逆:正定矩阵一定可逆(所有特征值,行列式

  2. 对角元为正(取,得

  3. 行列式为正

  4. 逆矩阵也正定:如果 正定,则 也正定

  5. 和的正定性:如果 正定,则 正定

  6. 乘积的正定性 不一定正定(除非),但 正定

  7. 平方根存在:正定矩阵有唯一的正定平方根

主轴定理与应用

主轴定理

定理:对于二次型 对称),存在正交变换 将其化为标准形:

其中: - 的特征值 - 的列是对应的单位特征向量(主轴方向) - 是新坐标

几何解释: - 原坐标系:二次曲面可能是倾斜的椭球 - 主轴坐标系:椭球的轴与坐标轴对齐 - 主轴长度由 决定

应用 1:确定二次曲线/曲面的类型

问题:判断 是什么曲线?

  1. 矩阵:

  2. 特征值:
    (都为正)

  3. 结论:正定,表示椭圆

  4. 标准形:在主轴坐标系中,方程变为:

即:

这是标准椭圆方程,长轴,短轴

应用 2:瑞利商与优化

问题:求 在约束 下的极值。

:使用拉格朗日乘数法:

即:

这正是特征值问题!

结论: - 最大值是最大特征值 - 最小值是最小特征值 - 极值点是对应的特征向量

这是瑞利商( Rayleigh quotient)的结果:

生活类比:想象一个椭球形的山。你站在山上,想知道从山顶出发,哪个方向最陡峭?答案是沿着椭球的短轴方向——这就是最大特征值对应的特征向量方向。

应用 3:协方差矩阵与主成分分析

在统计中,协方差矩阵 是对称正半定矩阵。其特征值和特征向量给出:

  • 特征值:主成分的方差(数据在该方向上的分散程度)
  • 特征向量:主成分方向(数据变化最大的方向)

主成分分析( PCA)就是对协方差矩阵进行谱分解!

生活案例:人脸识别

假设你有一组人脸图片,每张图片是 维的向量。直接处理这么高维的数据很困难。 PCA 帮你找到人脸变化最大的方向("特征脸"),只保留前几个主成分,就能有效降维,同时保留大部分信息。

Cholesky 分解

定义

对于正定矩阵Cholesky 分解是:

其中下三角矩阵,对角元为正。

唯一性:如果 正定, Cholesky 分解唯一存在。

与谱分解的区别: - 谱分解: 正交) - Cholesky: 下三角)

Cholesky 分解计算更快(vs),更适合数值计算。

直觉: Cholesky 分解就像是给正定矩阵"开平方"——就像,正定矩阵

计算方法

对于 矩阵:

展开得:

一般公式(按行计算):

详细例子

计算 的 Cholesky 分解。

所以

验证:

应用

1. 求解线性方程组

求解

步骤 1: Cholesky 分解 步骤 2:前向替换解 步骤 3:后向替换解 比高斯消元快约 2 倍!而且数值更稳定。

2. 判定正定性

如果 Cholesky 分解成功(不需要开负数的平方根),则 正定。在数值计算中,这是判定正定性最可靠的方法。

3. 生成正态分布随机数

生成随机向量: - 生成(独立标准正态) - 计算,其中 为什么有效? 因为

椭圆和双曲线的几何

二维情况

二次方程 的几何形状由判别式 决定:

判别式 矩阵特征 几何形状
正定或负定 椭圆
不定 双曲线
半定 抛物线/平行线

直觉:这就像判断一个碗是朝上的(椭圆)、马鞍形的(双曲线)、还是槽形的(抛物线)。

椭圆的几何性质

椭圆方程(假设):

  • 半长轴(沿 方向)
  • 半短轴(沿 方向)
  • 焦点,其中
  • 离心率

与矩阵的关系

对于 正定),椭圆的半轴长度是,方向是特征向量

生活案例:行星轨道

行星绕太阳的轨道是椭圆。太阳位于椭圆的一个焦点上。地球轨道的离心率约,几乎是圆形;冥王星轨道的离心率约,明显是椭圆。

双曲线的几何性质

双曲线方程

  • 实轴(沿 方向)
  • 虚轴(沿 方向)
  • 焦点,其中
  • 渐近线

生活案例:超音速飞机

当飞机超音速飞行时,产生的音爆波前是圆锥面。这个圆锥与地面的交线是双曲线的一支。

三维情况

三维二次曲面更加丰富:

特征值符号 曲面类型 方程(标准形)
椭球
单叶双曲面
双叶双曲面
椭圆柱面
双曲柱面

矩阵的平方根

定义

对于正定对称矩阵,其平方根 是满足以下条件的矩阵:

存在性:正定对称矩阵的平方根存在且唯一(如果要求平方根也对称正定)。

计算方法

方法 1:谱分解法

其中

方法 2: Cholesky 分解

如果,则 的一个平方根(但不是对称的)。

对称平方根:用谱分解得到的 是对称的。

应用:白化变换

在机器学习中,白化( whitening)是将相关数据变为不相关、方差为 1 的数据。

给定协方差矩阵,白化变换:

使得(单位矩阵)。

为什么需要白化? 很多机器学习算法假设特征是独立的、同方差的。白化预处理可以满足这个假设,提高算法性能。

生活类比:想象你在分析学生的成绩数据,数学和物理成绩高度相关。白化就是找到一个新的坐标系,使得新坐标下的"成绩"彼此独立——这样更容易分析每个"能力"的独立贡献。

实际应用案例

应用 1:物理中的小振动

在经典力学中,多自由度系统在平衡点附近的振动可以用二次型描述。

动能 是质量矩阵,正定)

势能 是刚度矩阵,正定)

振动频率:由广义特征值问题 决定

生活案例:乐器弦的振动

吉他弦的振动可以分解为多个"谐振模式",每个模式对应一个特征频率。基频决定音高,泛音决定音色。这些频率和模式就是刚度矩阵的特征值和特征向量!

应用 2:图像处理中的椭圆拟合

给定一组数据点,拟合最佳椭圆是计算机视觉中的常见任务。

方法:最小化残差平方和,得到二次曲线方程

通过分析二次部分的矩阵 的特征值,可以判断拟合结果是椭圆、双曲线还是抛物线。

应用 3:机器学习中的正则化

在岭回归( Ridge Regression)中,目标函数是:

解为:

添加 确保 正定,从而可逆且数值稳定。

直觉:原始的 可能接近奇异(条件数很大),加上 相当于给每个特征值加上,使矩阵"更正定",数值计算更稳定。

应用 4:金融中的投资组合优化

Markowitz 投资组合理论中,最小化风险:

约束:(权重和为 1),(期望收益为

其中 是资产收益的协方差矩阵(正定)。

直觉 是投资组合的方差(风险)。我们要在给定收益目标下,找到风险最小的组合。这是一个带约束的二次规划问题。

应用 5:信号处理中的协方差估计

在雷达、声纳等信号处理应用中,估计信号的协方差矩阵是关键步骤。由于协方差矩阵必须是正定的(至少半正定),实际估计时需要特殊处理:

  • 使用收缩估计( shrinkage estimation)确保正定性
  • 使用对数欧几里得度量( log-Euclidean metric)处理协方差矩阵空间

总结与展望

本章关键要点

  1. 对称矩阵的特殊性质
    • 特征值都是实数
    • 特征向量相互正交
    • 可以正交对角化
  2. 谱定理 - 最重要的分解定理之一
    • 揭示了对称矩阵的本质结构
  3. 正定矩阵
    • 定义: - 判定:特征值全正 / 主子式全正 / Cholesky 分解存在
    • 意义:正能量、稳定系统、可逆性
  4. 二次型
    • 标准形: - 分类:正定、负定、不定、半正定
    • 几何:椭球、鞍面等二次曲面
  5. 主轴定理
    • 找到二次曲面的主轴方向
    • 应用于优化、物理、数据分析
  6. Cholesky 分解 - 正定矩阵的快速分解
    • 数值稳定,计算高效
  7. 几何应用
    • 椭圆和双曲线的标准化
    • 二次曲面的分类

概念关联图

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
对称矩阵

├─→ 谱定理 ─→ A = Q Λ Q^T
│ │
│ ├─→ 二次型标准化
│ ├─→ 主成分分析(PCA)
│ └─→ 瑞利商优化

├─→ 正定性 ─→ Cholesky 分解
│ │
│ ├─→ 求解方程组
│ ├─→ 生成随机数
│ └─→ 数值优化

└─→ 应用
├─→ 物理:振动分析
├─→ 几何:椭圆/双曲线
├─→ 统计:协方差矩阵
├─→ 优化:二次规划
└─→ 机器学习:正则化、白化

深入思考

为什么对称矩阵如此重要?

  1. 自然性:许多物理量天然是对称的(能量、协方差、度量张量)

  2. 数学美:对称性带来优美的性质(实特征值、正交特征向量)

  3. 计算效率:对称矩阵的算法更快、更稳定

  4. 普遍性:即使矩阵不对称,也常通过 等构造对称矩阵

下一章预告

《奇异值分解 SVD 》

  • 任意矩阵(不一定对称)的"谱分解"
  • SVD 是对称矩阵谱定理的推广
  • 伪逆、最佳低秩逼近
  • 应用:图像压缩、推荐系统、自然语言处理

SVD 被称为"线性代数的皇冠"——我们将看到为什么!

练习题

基础题

1. 判断下列矩阵是否对称、正定:

(a) (b) (c) 2. 对二次型,写出对应的矩阵,并判断其正定性。

3. 计算 的 Cholesky 分解。

4. 求矩阵 的特征值和特征向量,并写出谱分解。

5. 判断二次曲线 的类型(椭圆/双曲线/抛物线)。

进阶题

6. 证明:如果 正定,则 也正定。

7. 证明:如果都是 正定矩阵,则 也是正定矩阵。

8. 对二次型: - 求其矩阵 的特征值 - 判断正定性 - 化为标准形 - 画出等高线 的草图

9. 证明 Sylvester 判据: 正定当且仅当所有顺序主子式。(提示:用数学归纳法)

10. 证明:对称矩阵 的迹等于特征值之和,行列式等于特征值之积。

11. 实矩阵(不一定对称)。证明 是半正定矩阵。什么时候 正定?

编程题

12. 实现 Cholesky 分解算法(不使用 numpy 内置函数):

1
2
3
4
5
6
def cholesky(A):
"""
对正定矩阵 A 进行 Cholesky 分解,返回下三角矩阵 L 使得 A = L @ L.T
"""
# 你的代码
pass

13. 用 Python 验证谱定理:对一个随机生成的对称矩阵,计算其谱分解,并验证

14. 实现二次型的可视化:给定二维对称矩阵,绘制其等高线图,标出特征向量(主轴)方向。

15. 实现 PCA 降维: - 生成一组二维相关数据 - 计算协方差矩阵 - 进行谱分解 - 可视化主成分方向 - 投影到第一主成分

16. 实现白化变换,并验证白化后数据的协方差矩阵接近单位矩阵。

应用题

17.

振动分析:两质点(质量各为)用三个弹簧(刚度)连接。刚度矩阵为: (a) 证明 是正定矩阵(假设所有) (b) 求振动频率和振动模式

18.

投资组合:两资产的协方差矩阵为,期望收益为

  1. 验证 正定
  2. 求最小方差投资组合(约束:权重和为 1)
  3. 求有效前沿( efficient frontier)上的几个点

19.

椭圆拟合:给定下列数据点,用最小二乘法拟合椭圆方程。

x 1 2 3 2 1 0 -1 0
y 2 2 0 -2 -2 -1 0 1

20.

图像压缩(预习 SVD):虽然 SVD 是下一章的内容,但协方差矩阵的特征分解已经可以用于简单的图像压缩。用 PCA 对一组人脸图像进行降维,只保留前 个主成分,观察重建质量随 变化的情况。

思考题

21. 为什么机器学习中的正则化项通常是 而不是?从二次型和正定性的角度解释。

22. 为什么协方差矩阵一定是半正定的?什么时候它是正定的?

23. 如果矩阵 不对称,能否进行"谱分解"?需要什么条件?(这引出了正规矩阵的概念)

24. 半正定矩阵的 Cholesky 分解是否存在?如果存在,是否唯一?

25. 为什么说"对称矩阵是最好的矩阵"?从计算复杂度、数值稳定性、理论优美性三个角度分析。

练习题答案

基础题答案

第 1 题:判断对称性和正定性

(a)

  • 对称性,对称 ✓
  • 正定性判定(方法1:特征值):

解得,均为正 ⇒ 正定

  • 验证(方法2:Sylvester判据): - ✓ -

(b)

  • 对称性,对称 ✓
  • 正定性判定

解得,有负特征值 ⇒ 不定

(c)

  • 对称性,对称 ✓
  • 正定性判定(Sylvester判据): - ✓ - ✓ -

所以 正定


第 2 题:二次型

矩阵形式

(注意:交叉项系数 要平分为

正定性判定: - ✓ -

所以 正定,二次型在原点取得最小值 0。


第 3 题:Cholesky 分解

,则

展开比较: - - -

答案

验证:


第 4 题:谱分解

1. 求特征值

2. 求特征向量

对于

解得,单位化:

对于

解得,单位化:

3. 谱分解

或写成:


第 5 题:二次曲线

矩阵形式

判定类型(看特征值正负): (都为正)

结论:两个特征值都为正 ⇒ 椭圆

标准形:


进阶题答案

第 6 题:证明:若 正定,则 正定

证明

对任意,令

由于 可逆且,所以

计算:

因为 正定且,所以

因此 正定。


第 7 题:证明:若 正定,则 正定

证明

对任意

因为 正定,

因为 正定,

所以

因此 正定。


第 8 题:二次型

(a) 矩阵及特征值

(b) 正定性:两个特征值都为正 ⇒ 正定

(c) 标准形

在主轴坐标系 中:

其中坐标变换为 由单位特征向量构成。

(d) 等高线草图,这是椭圆: - 长半轴:沿 方向,长度 - 短半轴:沿 方向,长度


第 9 题:证明 Sylvester 判据

定理 对称矩阵 正定 ⇔ 所有顺序主子式

证明(数学归纳法):

基础步骤): 正定 ⇔

归纳假设:假设对 矩阵成立

归纳步骤:设 矩阵,分块为:

必要性 正定 ⇒ 所有): - 若 正定,则左上角子矩阵 也正定(限制到子空间) - 由归纳假设, - 由(所有特征值为正),得

充分性(所有 正定): - 由 和归纳假设, 正定 - 可以证明存在配方: - 其中,两项都非负,和为正(当

因此 正定。


第 10 题:证明迹和行列式性质

定理:对对称矩阵

证明

由谱定理,,其中

(利用了 的循环性)

行列式

(因为


第 11 题:证明 半正定,何时正定

证明半正定

对任意

所以 半正定。

何时正定 正定 ⇔ 对所有

对所有

列满秩

直觉 是 Gram 矩阵,其奇异性等价于 的列向量线性相关。


编程题答案

第 12 题:实现 Cholesky 分解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import numpy as np

def cholesky(A):
"""
对正定矩阵 A 进行 Cholesky 分解,返回下三角矩阵 L 使得 A = L @ L.T
"""
n = A.shape[0]
L = np.zeros_like(A)

for i in range(n):
for j in range(i + 1):
if i == j:
# 对角元素
L[i, i] = np.sqrt(A[i, i] - np.sum(L[i, :i]**2))
else:
# 非对角元素
L[i, j] = (A[i, j] - np.sum(L[i, :j] * L[j, :j])) / L[j, j]

return L

# 测试
A = np.array([[4, 2], [2, 3]])
L = cholesky(A)
print("L =")
print(L)
print("\n验证 L @ L.T =")
print(L @ L.T)

输出

1
2
3
4
5
6
7
L =
[[2. 0. ]
[1. 1.41421356]]

验证 L @ L.T =
[[4. 2.]
[2. 3.]]


第 13 题:验证谱定理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import numpy as np

# 生成随机对称矩阵
n = 4
A_rand = np.random.randn(n, n)
A = (A_rand + A_rand.T) / 2 # 对称化

print("原矩阵 A:")
print(A)

# 谱分解
eigenvalues, Q = np.linalg.eigh(A)
Lambda = np.diag(eigenvalues)

print("\n特征值:")
print(eigenvalues)

print("\n正交矩阵 Q(列为特征向量):")
print(Q)

# 重建矩阵
A_reconstructed = Q @ Lambda @ Q.T

print("\n重建矩阵 Q @ Λ @ Q^T:")
print(A_reconstructed)

# 验证
print("\n误差(应接近 0):")
print(np.linalg.norm(A - A_reconstructed))

# 验证正交性
print("\nQ^T @ Q(应为单位矩阵):")
print(Q.T @ Q)

第 14 题:二次型可视化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import numpy as np
import matplotlib.pyplot as plt

# 设定对称矩阵
A = np.array([[3, 1], [1, 2]])

# 特征分解
eigenvalues, eigenvectors = np.linalg.eigh(A)

# 创建网格
x = np.linspace(-2, 2, 400)
y = np.linspace(-2, 2, 400)
X, Y = np.meshgrid(x, y)

# 计算二次型值
Z = A[0,0]*X**2 + 2*A[0,1]*X*Y + A[1,1]*Y**2

# 绘图
plt.figure(figsize=(10, 8))
plt.contour(X, Y, Z, levels=20, cmap='viridis')
plt.colorbar(label='$f(x,y) = x^TAx$')

# 标记特征向量(主轴)
origin = np.array([[0, 0], [0, 0]])
plt.quiver(*origin, eigenvectors[0], eigenvectors[1],
color=['red', 'blue'], scale=2, width=0.01,
label=['第1主轴 ($\\lambda_1$=%.2f)' % eigenvalues[0],
'第2主轴 ($\\lambda_2$=%.2f)' % eigenvalues[1]])

plt.axis('equal')
plt.grid(True, alpha=0.3)
plt.xlabel('$x$')
plt.ylabel('$y$')
plt.title('二次型等高线与主轴方向')
plt.legend()
plt.show()

第 15 题:PCA 降维实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import numpy as np
import matplotlib.pyplot as plt

# 1. 生成相关数据
np.random.seed(42)
n = 200
# 真实数据在一条线附近,有噪声
t = np.random.randn(n)
X = np.vstack([t + 0.3*np.random.randn(n),
2*t + 0.3*np.random.randn(n)]).T

# 2. 中心化
X_mean = X.mean(axis=0)
X_centered = X - X_mean

# 3. 计算协方差矩阵
Cov = (X_centered.T @ X_centered) / (n - 1)
print("协方差矩阵:")
print(Cov)

# 4. 谱分解
eigenvalues, eigenvectors = np.linalg.eigh(Cov)
# 按特征值降序排列
idx = eigenvalues.argsort()[::-1]
eigenvalues = eigenvalues[idx]
eigenvectors = eigenvectors[:, idx]

print("\n特征值:", eigenvalues)
print("解释方差比:", eigenvalues / eigenvalues.sum())

# 5. 投影到第一主成分
PC1 = eigenvectors[:, 0]
X_proj = (X_centered @ PC1).reshape(-1, 1) * PC1

# 6. 可视化
plt.figure(figsize=(12, 5))

plt.subplot(1, 2, 1)
plt.scatter(X_centered[:, 0], X_centered[:, 1], alpha=0.5)
plt.quiver(0, 0, eigenvectors[0, 0]*3, eigenvectors[1, 0]*3,
color='red', width=0.01, scale=1, label='PC1')
plt.quiver(0, 0, eigenvectors[0, 1]*2, eigenvectors[1, 1]*2,
color='blue', width=0.01, scale=1, label='PC2')
plt.axis('equal')
plt.grid(True, alpha=0.3)
plt.xlabel('$x_1$')
plt.ylabel('$x_2$')
plt.title('原始数据与主成分方向')
plt.legend()

plt.subplot(1, 2, 2)
plt.scatter(X_centered[:, 0], X_centered[:, 1], alpha=0.3, label='原始')
plt.scatter(X_proj[:, 0], X_proj[:, 1], alpha=0.5, label='投影到PC1')
for i in range(0, n, 10):
plt.plot([X_centered[i, 0], X_proj[i, 0]],
[X_centered[i, 1], X_proj[i, 1]],
'k-', alpha=0.2, linewidth=0.5)
plt.axis('equal')
plt.grid(True, alpha=0.3)
plt.xlabel('$x_1$')
plt.ylabel('$x_2$')
plt.title('投影到第一主成分')
plt.legend()

plt.tight_layout()
plt.show()

第 16 题:白化变换实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
import numpy as np
import matplotlib.pyplot as plt

# 1. 生成相关数据
np.random.seed(42)
mean = [0, 0]
cov = [[3, 1.5], [1.5, 2]] # 相关协方差矩阵
X = np.random.multivariate_normal(mean, cov, 500)

# 2. 白化变换
Sigma = np.cov(X.T)
print("原始协方差矩阵:")
print(Sigma)

# 方法1:使用 Sigma^{-1/2}
eigenvalues, eigenvectors = np.linalg.eigh(Sigma)
Sigma_inv_sqrt = eigenvectors @ np.diag(1/np.sqrt(eigenvalues)) @ eigenvectors.T

X_whitened = X @ Sigma_inv_sqrt.T

# 验证白化后的协方差
Sigma_whitened = np.cov(X_whitened.T)
print("\n白化后协方差矩阵(应接近单位矩阵):")
print(Sigma_whitened)

# 3. 可视化
fig, axes = plt.subplots(1, 2, figsize=(14, 6))

# 原始数据
axes[0].scatter(X[:, 0], X[:, 1], alpha=0.5)
axes[0].set_aspect('equal')
axes[0].grid(True, alpha=0.3)
axes[0].set_title(f'原始数据\n协方差: [[{Sigma[0,0]:.2f}, {Sigma[0,1]:.2f}], [{Sigma[1,0]:.2f}, {Sigma[1,1]:.2f}]]')
axes[0].set_xlabel('$x_1$')
axes[0].set_ylabel('$x_2$')

# 白化后数据
axes[1].scatter(X_whitened[:, 0], X_whitened[:, 1], alpha=0.5, color='orange')
axes[1].set_aspect('equal')
axes[1].grid(True, alpha=0.3)
axes[1].set_title(f'白化后数据\n协方差: [[{Sigma_whitened[0,0]:.2f}, {Sigma_whitened[0,1]:.2f}], [{Sigma_whitened[1,0]:.2f}, {Sigma_whitened[1,1]:.2f}]]')
axes[1].set_xlabel('$z_1$')
axes[1].set_ylabel('$z_2$')

plt.tight_layout()
plt.show()

print("\n验证:白化后协方差与单位矩阵的误差:", np.linalg.norm(Sigma_whitened - np.eye(2)))

应用题答案

第 17 题:振动分析

(a) 证明 正定

用 Sylvester 判据: -(因为)✓ -(三项都为正)✓

所以 正定。

物理意义:正定性保证系统稳定(势能有最小值)。

(b) 振动频率和模式

振动方程:,其中

,得广义特征值问题:

的特征值和特征向量:

数值例子:设,则:

特征值:

振动频率:

振动模式(特征向量): - 模式1(高频):(反相振动) - 模式2(低频):(同相振动)


第 18 题:投资组合优化

给定:

(a) 验证 正定

- ✓ -

所以 正定 ✓

(b) 最小方差投资组合

优化问题:

用 Lagrange 乘数法:

利用约束

计算

最小方差组合:资产1配置 77.8%,资产2配置 22.2%

(c) 有效前沿

有效前沿上的点由不同期望收益 约束下的最小方差组合构成。

给定期望收益,优化问题:

解(用 Lagrange 乘数法):

其中

最小方差为:

这是关于 的抛物线(在- 图中是双曲线的右半支)。


第 19 题:椭圆拟合

一般椭圆方程:

将数据点代入,得超定线性方程组:

用约束 避免零解,这是约束最小二乘问题。

解法:对设计矩阵 进行 SVD,最小奇异值对应的右奇异向量即为解。

Python 实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import numpy as np

# 数据点
x = np.array([1, 2, 3, 2, 1, 0, -1, 0])
y = np.array([2, 2, 0, -2, -2, -1, 0, 1])

# 构造设计矩阵
X = np.column_stack([x**2, x*y, y**2, x, y, np.ones_like(x)])

# SVD
U, s, Vt = np.linalg.svd(X)
params = Vt[-1] # 最小奇异值对应的右奇异向量

a, b, c, d, e, f = params
print(f"拟合椭圆:{a:.3f}x² + {b:.3f}xy + {c:.3f}y² + {d:.3f}x + {e:.3f}y + {f:.3f} = 0")

第 20 题:图像压缩(PCA)

思路: 1. 将人脸图像展平为向量(如 64×64 图像 → 4096 维向量) 2. 收集 张人脸,构成 数据矩阵 3. 计算协方差矩阵 4. 谱分解得到主成分("特征脸") 5. 只保留前 个主成分重建图像 6. 观察重建误差随 的变化

代码框架

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from sklearn.datasets import fetch_olivetti_faces
import numpy as np
import matplotlib.pyplot as plt

# 加载人脸数据
faces = fetch_olivetti_faces()
X = faces.data # (400, 4096)
X_mean = X.mean(axis=0)
X_centered = X - X_mean

# 协方差矩阵的特征分解(实际用SVD更高效)
U, s, Vt = np.linalg.svd(X_centered, full_matrices=False)
components = Vt # 主成分(特征脸)

# 不同 k 值的重建
fig, axes = plt.subplots(2, 5, figsize=(15, 6))
k_values = [1, 5, 10, 20, 50, 100, 200, 300, 400]
for i, k in enumerate(k_values[:10]):
# 投影到前 k 个主成分
X_proj = X_centered @ components[:k].T
# 重建
X_reconstructed = X_proj @ components[:k] + X_mean

# 显示第一张脸的重建
ax = axes[i//5, i%5]
ax.imshow(X_reconstructed[0].reshape(64, 64), cmap='gray')
ax.set_title(f'k={k}')
ax.axis('off')

plt.tight_layout()
plt.show()

思考题答案

第 21 题:为何正则化用 而非

从二次型角度

  1. 可微性 处处可微,梯度为;而 在原点不可微

  2. 正定性:损失函数 中,正则项是正定二次型,使整体损失函数为凸函数,保证唯一全局最小值

  3. 闭式解:对于线性回归, 正则化(Ridge)有闭式解: 项使 正定,保证可逆和数值稳定

  4. 几何意义 定义球面(各向同性),而 定义菱形(导致稀疏性)

总结 正则化的优势在于其二次型结构带来的数学便利性和凸优化保证。


第 22 题:协方差矩阵为何半正定?何时正定?

证明半正定

协方差矩阵

对任意向量

(期望值的非负性)

何时正定 正定 ⇔ 对所有

⇔ 随机向量 的任意非平凡线性组合都有正方差

的各分量线性无关(没有确定性的线性关系)

例子: - 若(完全相关),则 奇异(半正定但不正定) - 若 独立同分布,则 正定


第 23 题:非对称矩阵的"谱分解"

一般矩阵的对角化 可对角化 ⇔ 存在可逆矩阵 使得

条件 个线性无关的特征向量

问题: - 特征向量一般不正交( 不是正交矩阵) - 可能有复特征值和复特征向量 - 数值不稳定( 可能病态)

正规矩阵

定义:正规的(normal),如果 是共轭转置)

谱定理(正规矩阵) 正规 ⇔ 可酉对角化: 酉矩阵)

例子: - 对称矩阵: ✓ - 斜对称矩阵: ✓ - 酉矩阵: ✓ - 非对称但正规:


第 24 题:半正定矩阵的 Cholesky 分解

存在性

半正定矩阵修正 Cholesky 分解,但 的某些对角元可能为 0

例子

唯一性

  • 正定,Cholesky 分解唯一(要求 对角元为正)
  • 半正定但奇异,分解不唯一

数值算法

标准 Cholesky 算法会在遇到 0 主元时失败。修正算法: - 枢轴选择(pivoting) - 或用更稳定的 分解( 是对角矩阵,可有 0 元素)


第 25 题:为何对称矩阵是"最好的矩阵"?

1. 计算复杂度

  • 存储:只需存储 个元素(节省一半)
  • 特征分解 复杂度,但常数因子更小;且可以用高效的分治算法
  • Cholesky 分解(正定情况):,比 LU 分解快一倍

2. 数值稳定性

  • 实特征值:避免复数运算和浮点误差累积
  • 正交特征向量:条件数为 1(),谱分解数值稳定
  • 正定性:保证算法收敛(如共轭梯度法)

3. 理论优美性

  • 谱定理:完美对角化,
  • 几何直观:对应椭球、椭圆等规则形状
  • 变分性质:Rayleigh 商有明确极值意义
  • 普遍性:Gram 矩阵、协方差矩阵、Hessian 矩阵(在极值点)等重要对象都对称

Strang 教授名言

"The eigenvalues of a symmetric matrix are real. The eigenvectors can be chosen to be perpendicular. These are the best matrices to have!"

实际应用

  • 优化算法优先利用对称性(如 BFGS、共轭梯度)
  • PDE 离散化常产生对称矩阵(如有限元法)
  • 机器学习中尽量构造对称问题(如核方法中的 Gram 矩阵)

参考资料

  1. Strang, G. (2019). Introduction to Linear Algebra. 5th ed. Chapter 6.
    • 对称矩阵和正定性的经典讲解
  2. Horn, R. A., & Johnson, C. R. (2012). Matrix Analysis. 2nd ed. Cambridge University Press.
    • 深入的矩阵理论,包括正定性的各种判据
  3. Boyd, S., & Vandenberghe, L. (2004). Convex Optimization. Cambridge University Press.
    • 正定矩阵在优化中的应用
  4. Golub, G. H., & Van Loan, C. F. (2013). Matrix Computations. 4th ed. Johns Hopkins University Press.
    • Cholesky 分解等数值算法的权威参考
  5. 3Blue1Brown. Essence of Linear Algebra series. YouTube.
    • 特征值和二次型的优秀可视化讲解

本文是《线性代数的本质与应用》系列的第 8 章。

  • 本文标题:线性代数(八)对称矩阵与二次型
  • 本文作者:Chen Kai
  • 创建时间:2019-02-12 10:00:00
  • 本文链接:https://www.chenk.top/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0%EF%BC%88%E5%85%AB%EF%BC%89%E5%AF%B9%E7%A7%B0%E7%9F%A9%E9%98%B5%E4%B8%8E%E4%BA%8C%E6%AC%A1%E5%9E%8B/
  • 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
 评论