Series · Linear Algebra · Chapter 7

正交性与投影 -- 当向量互不干扰

正交性是 GPS 定位、降噪耳机和 JPEG 压缩的数学基础。本章从正交向量与投影的几何直觉出发,一路讲到 Gram-Schmidt 正交化、QR 分解和最小二乘 -- 现代科学计算的脊梁。

为什么正交性如此重要

两个向量"正交",说的是它们彼此互不干扰:一个方向上的信息不会泄漏到另一个方向。这一句简单的话背后,藏着 GPS 定位、降噪耳机、JPEG 压缩、推荐系统,以及绝大多数数值线性代数。

正交性是线性代数中最大的一类计算捷径。一般的基下,求坐标要解线性方程组;换成正交基之后,每个坐标只需要一个点积——同样的问题,换个角度看,就从难变成了易。

本章会从"垂直"这个最朴素的直觉出发,一路推到科学计算的几大主力:正交投影、Gram-Schmidt 正交化、QR 分解、最小二乘。

你将学到

  • 为什么"点积为零"等价于几何意义上的"垂直"
  • 正交基与标准正交基为何能让坐标计算变得平凡
  • 向量投影:影子的数学
  • 子空间投影与投影矩阵$P=A(A^TA)^{-1}A^T$- Gram-Schmidt 正交化:一步一步造出一组正交基
  • QR 分解:Gram-Schmidt 的矩阵外壳
  • 最小二乘:当方程根本无解时,怎么办

前置知识

  • 点积与向量范数(第 1 章)
  • 线性独立性与基(第 2 章)
  • 矩阵-向量乘法与列空间(第 3、5 章)

从直觉出发:什么是正交

生活中的"互不干扰"

先别急着写公式,感受一下"正交"在生活里是什么样子。

城市街道。 曼哈顿的街道呈方格网,南北向与东西向互相垂直。你往东走 3 个街区,南北方向的位置一动不动。两个方向,零干扰,这就是正交。

电视遥控器。 音量键和频道键,按音量永远不会换台。两个旋钮,互不影响。

调味料。 盐控制咸度,糖控制甜度。在合理范围内,加盐不会让菜更甜(请烹饪老师们原谅这个简化)。

反复出现的模式是:正交方向承载的是彼此独立的信息

正交的数学定义

两个向量$\vec{u}$、$\vec{v}$正交,当且仅当:$\vec{u}\cdot\vec{v}=0$用分量写出来就是:$u_1v_1+u_2v_2+\cdots+u_nv_n=0$为什么"点积为零"就是"垂直"? 回忆点积的几何形式:$\vec{u}\cdot\vec{v}=\|\vec{u}\|\|\vec{v}\|\cos\theta$当$\theta=90^\circ$时$\cos\theta=0$,整个点积为零。

正交向量与一般向量对比

几个值得记住的特殊情况:

  • 零向量与任何向量都正交($\vec{0}\cdot\vec{v}=0$恒成立)。
  • 标准基向量两两正交:$\vec{e}_i\cdot\vec{e}_j=0$($i\neq j$)。
  • 一个非零向量不可能与自己正交($\vec{v}\cdot\vec{v}=\|\vec{v}\|^2>0$)。

更深一层:信息独立

正交性的本质,其实是信息独立:当两个向量正交时,知道其中一个方向上的分量,对另一个方向上的分量没有任何提示。它们各自度量着各自的事。

举个语言上的小例子。描述一个人:

  • “身高"和"体重"高度相关,并不正交。
  • “身高"和"眼睛颜色"几乎正交——一个完全预测不了另一个。

数据分析中,我们常常专门去找一组正交特征,因为它们承载的是非冗余信息。这就是主成分分析(PCA)的核心思想,本章末尾会再回到这个话题。


正交集与正交基

定义

向量集合$\{\vec{v}_1,\ldots,\vec{v}_k\}$是正交集,如果其中任意两个不同的向量都正交:$\vec{v}_i\cdot\vec{v}_j=0\quad(\,i\neq j\,)$$\mathbb{R}^3$中的标准基$\{\vec{e}_1,\vec{e}_2,\vec{e}_3\}$是最经典的例子:三根互相垂直的坐标轴。

正交集自动线性独立

定理。 任何一个不含零向量的正交集都是线性独立的。

直觉。 三根互相垂直的木棍指向完全不同的方向。你不可能用其中两根的组合"模拟"出第三根——它们之间没有任何重叠可供拼凑。

一行证明。 假设$c_1\vec{v}_1+\cdots+c_k\vec{v}_k=\vec{0}$,两边同时与$\vec{v}_i$点积。所有$\vec{v}_j\cdot\vec{v}_i$($j\neq i$)项都为零,剩下$c_i\|\vec{v}_i\|^2=0$。因为$\vec{v}_i\neq\vec{0}$,所以$c_i=0$。对每个$i$都成立,证毕。

正交性顺手就送了你线性独立。

标准正交基

如果一组正交向量每个都是单位向量,就叫标准正交集;如果它还张成整个空间,就是标准正交基

对标准正交基$\{\vec{q}_1,\ldots,\vec{q}_n\}$而言:$\vec{q}_i\cdot\vec{q}_j=\delta_{ij}=\begin{cases}1,&i=j\\0,&i\neq j\end{cases}$### 正交基为什么这么好用

给一个向量$\vec{v}$和一组基$\{\vec{u}_1,\ldots,\vec{u}_n\}$,要找坐标$c_1,\ldots,c_n$使得$\vec{v}=c_1\vec{u}_1+\cdots+c_n\vec{u}_n$。

  • 一般基。 解线性方程组$U\vec{c}=\vec{v}$,高斯消元,$O(n^3)$次运算。
  • 正交基。 每个坐标都是一个点积:$c_i=\frac{\vec{v}\cdot\vec{u}_i}{\|\vec{u}_i\|^2}$- 标准正交基。 更简单:$c_i=\vec{v}\cdot\vec{q}_i$每个坐标只需要$O(n)$次运算,不需要解方程,也不会因为消元出现灾难性抵消。

打个比方:用一组正交基做分解,就像称量一堆行李。基不正交就像把所有行李堆在一起称,再反过来推每件多重;基正交,就是一件一件分开称。


向量投影:影子的数学

把 b 投影到 a 上,误差与 a 垂直

一维投影

想象正午阳光垂直照下,一根斜放的棍子在地上投出影子。这个影子,就是棍子在地面方向上的投影

向量$\vec{b}$在向量$\vec{a}$上的正交投影定义为:$\mathrm{proj}_{\vec{a}}\vec{b}=\frac{\vec{a}\cdot\vec{b}}{\vec{a}\cdot\vec{a}}\,\vec{a}$慢慢拆开看:

-$\vec{a}\cdot\vec{b}$度量了$\vec{b}$沿$\vec{a}$方向有多少"分量”; -$\vec{a}\cdot\vec{a}=\|\vec{a}\|^2$是用来"归一化”$\vec{a}$的长度平方;

  • 比例是一个标量,再乘上$\vec{a}$,就得到了投影向量。

标量投影——投影的有向长度——是:$\mathrm{comp}_{\vec{a}}\vec{b}=\frac{\vec{a}\cdot\vec{b}}{\|\vec{a}\|}$当$\vec{b}$大致背离$\vec{a}$时,这个值会是负的。

投影 = 最近点

这里有一个深刻的几何事实:$\mathrm{proj}_{\vec{a}}\vec{b}$是直线$\mathrm{span}\{\vec{a}\}$上离$\vec{b}$最近的点

为什么?记投影为$\hat{\vec{b}}$,误差为$\vec{e}=\vec{b}-\hat{\vec{b}}$。由构造,$\vec{e}\perp\vec{a}$。对直线上任何另一点$t\vec{a}$,由勾股定理:$\|\vec{b}-t\vec{a}\|^2=\|\vec{e}\|^2+\|t\vec{a}-\hat{\vec{b}}\|^2\geq\|\vec{e}\|^2$当且仅当$t\vec{a}=\hat{\vec{b}}$时取到等号。投影自动让距离最小。

正交分解

任何向量$\vec{b}$都可以唯一地分解成沿$\vec{a}$方向的分量和垂直于$\vec{a}$方向的分量:$\vec{b}=\underbrace{\mathrm{proj}_{\vec{a}}\vec{b}}_{\text{平行}}+\underbrace{(\vec{b}-\mathrm{proj}_{\vec{a}}\vec{b})}_{\text{垂直}}$两块互相正交。物理里斜面上重力分解成沿斜面和垂直斜面两个分量,正是正交分解的经典应用。


子空间投影:从直线到平面

一般情形

如果不是把向量投影到一条直线,而是投影到一个平面或更高维的子空间$W$呢?$\vec{b}$在$W$上的投影$\hat{\vec{b}}$由下式定义:$\vec{b}-\hat{\vec{b}}\,\perp\,W$误差向量与$W$中所有向量都正交,不止一个。

把向量 b 投影到平面 W 上

投影矩阵

当$W=\mathrm{Col}(A)$且$m\times n$矩阵$A$的列线性独立时,投影有一个干净的闭式解:$\hat{\vec{b}}=A(A^TA)^{-1}A^T\vec{b}$投影矩阵就是:$P=A(A^TA)^{-1}A^T$有三条性质值得背下来:

  1. 幂等性:$P^2=P$。影子已经在地上了,再投一次还是它自己。
  2. 对称性:$P^T=P$。正交投影是对称的;非正交(斜投影)则不是。
  3. 秩:$\mathrm{rank}(P)=n=\dim W$。

这三条合在一起,恰好唯一刻画了正交投影矩阵。

正规方程

满足$\hat{\vec{b}}=A\hat{\vec{x}}$的坐标向量$\hat{\vec{x}}$,是正规方程的解:$A^TA\hat{\vec{x}}=A^T\vec{b}$推导很短:正交条件$\vec{b}-A\hat{\vec{x}}\perp\mathrm{Col}(A)$等价于$A^T(\vec{b}-A\hat{\vec{x}})=\vec{0}$,整理就是上式。

正交补空间

子空间$W\subseteq\mathbb{R}^n$的正交补,是所有与$W$正交的向量构成的集合:$W^{\perp}=\{\vec{v}\in\mathbb{R}^n:\vec{v}\cdot\vec{w}=0,\ \forall\vec{w}\in W\}$

正交补与唯一分解

任何向量都能唯一分解为$\vec{v}=\vec{v}_W+\vec{v}_{W^{\perp}}$,其中$\vec{v}_W\in W$,$\vec{v}_{W^{\perp}}\in W^{\perp}$。我们记作$\mathbb{R}^n=W\oplus W^{\perp}$。

矩阵$A$的四大基本子空间满足:

-$\mathrm{Col}(A)^{\perp}=\mathrm{Null}(A^T)$(列空间的正交补是左零空间) -$\mathrm{Null}(A)^{\perp}=\mathrm{Row}(A)$(零空间的正交补是行空间)

这就是 Strang 老爷子在每节课结尾都要画在黑板下方的"正交结构图"。


Gram-Schmidt:手工制造正交基

问题

你有一组线性独立的向量$\vec{a}_1,\ldots,\vec{a}_n$,但它们正交。能不能调整一下,把它们变成一组正交向量,且张成的空间不变?

可以。Gram-Schmidt 算法一次构造一根轴,依次完成。

Gram-Schmidt:歪歪扭扭的输入变成正交基

算法

依次构造正交向量$\vec{u}_1,\ldots,\vec{u}_n$。

第 1 步。 第一个向量原封不动:$\vec{u}_1=\vec{a}_1$。

第 2 步。 从$\vec{a}_2$中减去它沿$\vec{u}_1$方向的部分:$\vec{u}_2=\vec{a}_2-\frac{\vec{u}_1\cdot\vec{a}_2}{\vec{u}_1\cdot\vec{u}_1}\,\vec{u}_1$第 3 步。 从$\vec{a}_3$中减去它沿前两根轴的分量:$\vec{u}_3=\vec{a}_3-\frac{\vec{u}_1\cdot\vec{a}_3}{\vec{u}_1\cdot\vec{u}_1}\,\vec{u}_1-\frac{\vec{u}_2\cdot\vec{a}_3}{\vec{u}_2\cdot\vec{u}_2}\,\vec{u}_2$一般公式:$\vec{u}_k=\vec{a}_k-\sum_{j=1}^{k-1}\frac{\vec{u}_j\cdot\vec{a}_k}{\vec{u}_j\cdot\vec{u}_j}\,\vec{u}_j$如果想要标准正交基,再把每个$\vec{u}_k$归一化:$\vec{q}_k=\vec{u}_k/\|\vec{u}_k\|$。

直觉解释

可以把它想成一根一根搭建正交坐标系:

  • 第一根轴。 随便选一个方向。
  • 第二根轴。 找一个"大致指向别处"的向量,把它沿第一根轴的分量扣掉。剩下的部分必然垂直于第一根轴。
  • 第三根轴。 再找一个向量,把它沿前两根轴的分量都扣掉。剩下的就同时垂直于前两根。

每一步都是在"清除前面方向带来的污染",只保留真正的新信息。

数值稳定性:改进版 Gram-Schmidt

经典算法在浮点运算下有一个隐患。每一次减法都会带入小误差,向量数量一多,误差会累积,靠后的$\vec{u}_k$就慢慢偏离了"和前面正交"的状态。

改进版 Gram-Schmidt 把同样的运算重新排列,使工作向量在每次投影后立刻被更新,数值上要稳得多:

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

def modified_gram_schmidt(A):
    """改进版 Gram-Schmidt:数值更稳定的正交化算法"""
    m, n = A.shape
    Q = A.copy().astype(float)
    R = np.zeros((n, n))
    for j in range(n):
        R[j, j] = np.linalg.norm(Q[:, j])
        Q[:, j] = Q[:, j] / R[j, j]
        for k in range(j + 1, n):
            R[j, k] = Q[:, j] @ Q[:, k]
            Q[:, k] = Q[:, k] - R[j, k] * Q[:, j]
    return Q, R

工业级实现一般用 Householder 反射numpy.linalg.qr 内部就是它),稳定性还要更好。


QR 分解:Gram-Schmidt 的矩阵外壳

QR 分解:A 的列在标准正交基 Q 下的坐标

定义

任何列线性独立的$m\times n$矩阵$A$都可以分解为:$A=QR$其中$Q$是$m\times n$、列标准正交($Q^TQ=I$),$R$是$n\times n$上三角且对角元为正。

Q 和 R 是怎么来的

$Q$的列就是对$A$的列做 Gram-Schmidt 得到的标准正交向量。$R$的元素则记录了投影系数:$r_{ij}=\vec{q}_i\cdot\vec{a}_j$为什么$R$是上三角的? 因为$\vec{a}_j$只能用前$j$个$\vec{q}$来表达——它从不需要"后来才出现"的正交向量。对角线下方的位置都是$\vec{a}_j$在编号靠后的$\vec{q}_k$($k>j$)上的系数,必然为零。

换句话说:$\vec{a}_j$生活在前$j$根标准正交轴张成的子空间里,$R$是从$\vec{q}$回到$\vec{a}$的"换基矩阵"。

QR 为什么这么有用:稳定的最小二乘

正规方程$A^TA\hat{\vec{x}}=A^T\vec{b}$在数值上有一个老问题:构造$A^TA$会让条件数平方:$\kappa(A^TA)=\kappa(A)^2$。数据稍微共线一点,结果就崩了。

QR 分解可以绕过这一关。把$A=QR$代入:$R^TQ^TQR\hat{\vec{x}}=R^TQ^T\vec{b}$因为$Q^TQ=I$、$R^T$可逆,整个式子化简成:$R\hat{\vec{x}}=Q^T\vec{b}$这是一个上三角方程组,回代求解只需要$O(n^2)$次运算——又快又稳。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
def qr_decomposition(A):
    """通过改进版 Gram-Schmidt 实现 QR 分解"""
    m, n = A.shape
    Q = np.zeros((m, n))
    R = np.zeros((n, n))
    for j in range(n):
        v = A[:, j].copy()
        for i in range(j):
            R[i, j] = Q[:, i] @ A[:, j]
            v = v - R[i, j] * Q[:, i]
        R[j, j] = np.linalg.norm(v)
        Q[:, j] = v / R[j, j]
    return Q, R

A = np.array([[1, 1], [1, 0], [0, 1]], dtype=float)
Q, R = qr_decomposition(A)
print("Q =\n", Q)
print("R =\n", R)
print("验证 A = QR:\n", Q @ R)

最小二乘:方程无解的时候

最小二乘 = 把 b 投影到 Col(A) 上

问题

现实中的数据总有噪声。想用一条直线去拟合 5 个测量点?这就是 5 个方程、2 个未知数——超定方程组。除非这 5 个点恰好共线,否则没有任何$\vec{x}$能精确满足$A\vec{x}=\vec{b}$。

我们不放弃,只是换一个问题。

最小二乘思想

既然没法精确求解$A\vec{x}=\vec{b}$,那就找一个$\hat{\vec{x}}$,让误差平方和最小:$\min_{\vec{x}}\|A\vec{x}-\vec{b}\|^2$几何解释。 当$\vec{x}$在所有可能的取值中变化时,$A\vec{x}$会跑遍列空间$\mathrm{Col}(A)$。最小化$\|A\vec{x}-\vec{b}\|$就是要在$\mathrm{Col}(A)$中找离$\vec{b}$最近的点——这恰好就是正交投影!于是$\hat{\vec{x}}$满足$A\hat{\vec{x}}=\hat{\vec{b}}$,其中$\hat{\vec{b}}$是$\vec{b}$在$\mathrm{Col}(A)$上的投影。

上图左边是熟悉的"散点 + 最佳拟合直线"画面,右边是同一件事的几何视角:把$\vec{b}$投影到代表列空间的那个平面。两幅画面,同一个问题。

正规方程(再来一遍)

正交条件$\vec{b}-A\hat{\vec{x}}\perp\mathrm{Col}(A)$给出$A^T(\vec{b}-A\hat{\vec{x}})=\vec{0}$,也就是:$A^TA\hat{\vec{x}}=A^T\vec{b}$用微积分也能推:展开$\|A\vec{x}-\vec{b}\|^2$,对$\vec{x}$求梯度并令其为零,结果一字不差。

线性回归示例

用$y=\beta_0+\beta_1 x$拟合数据点$(1,2.1),(2,3.9),(3,6.2),(4,7.8),(5,10.1)$:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.array([2.1, 3.9, 6.2, 7.8, 10.1])

A = np.column_stack([np.ones(len(x)), x])  # 设计矩阵

# 推荐的 QR 解法
Q, R = np.linalg.qr(A)
coeffs = np.linalg.solve(R, Q.T @ y)
print(f"最佳拟合: y = {coeffs[0]:.4f} + {coeffs[1]:.4f}x")

加权最小二乘

如果不同测量点的可信度不一样,就给它们不同的权重$w_i$:$\min_{\vec{x}}\sum_i w_i(\vec{a}_i^T\vec{x}-b_i)^2$正规方程相应变成$A^TWA\hat{\vec{x}}=A^TW\vec{b}$,其中$W=\mathrm{diag}(w_1,\ldots,w_m)$。


正交矩阵:保几何

定义

方阵$Q$是正交矩阵,如果:$Q^TQ=I$等价地$Q^{-1}=Q^T$。转置就是逆——这正是正交矩阵"求逆几乎不要钱"的原因。

正交矩阵保住了一切

它们是"刚体变换",保留:

  • 长度:$\|Q\vec{x}\|=\|\vec{x}\|$- 内积:$(Q\vec{x})\cdot(Q\vec{y})=\vec{x}\cdot\vec{y}$- 角度: 内积一保,角度自然保

旋转 vs. 反射

正交矩阵的行列式必然是$\pm 1$:

-$\det Q=+1$:旋转,保左右手定则。 -$\det Q=-1$:反射,翻转左右手定则。

二维旋转矩阵是经典例子:$R(\theta)=\begin{pmatrix}\cos\theta&-\sin\theta\\\sin\theta&\cos\theta\end{pmatrix}$Householder 反射是另一类重要的正交矩阵,是工业 QR 算法的核心积木。

为什么数值计算偏爱正交矩阵

正交矩阵的条件数恰好是 1:$\kappa(Q)=\frac{\sigma_{\max}}{\sigma_{\min}}=1$用正交矩阵做的运算永远不会放大误差。这就是为什么高质量数值算法(QR、SVD、Householder、Givens)几乎都围绕正交矩阵展开。


应用举例

傅里叶分析

离散傅里叶变换(DFT)从数学上看就是把信号换到一组复指数构成的正交基下。每个频率分量都可以被独立地处理,因为基向量之间互不干扰——这正是滤波能成立的根本原因。

降噪耳机

麦克风采到外界噪声,处理器用 FFT 把它分解成正交的频率分量,生成相位相反的信号,再送到扬声器。因为正交分量彼此独立,噪声可以被精确抵消,而你想听的音乐丝毫不受影响。

图像压缩(JPEG)

JPEG 用的是离散余弦变换(DCT),DFT 的实数版本。每个$8\times 8$像素小块被表示成一组余弦正交基的系数。自然图像里高频系数往往很小,于是被粗暴量化或干脆丢掉,从而把文件压小。正交性保证了"丢一些系数不会污染剩下的"。

CDMA 移动通信

每个用户分到一个"码字",不同用户的码字两两正交。多个用户共用同一频段同时收发。要从混合信号里恢复用户 A 的内容,接收端只需把收到的信号点积上 A 的码字;用户 B 的贡献会因为$\vec{c}_A\cdot\vec{c}_B=0$而归零。

PCA:找最重要的方向

主成分分析在数据中寻找方差最大的若干正交方向。具体做法:把中心化的数据矩阵$X$的协方差$\Sigma=\frac{1}{n-1}X^TX=Q\Lambda Q^T$做特征分解。$Q$的列就是主轴(互相正交),$\Lambda$的特征值代表每个方向上承载的方差。保留前$k$列就完成了"最优"线性降维。

要求正交,是为了让各主成分独立——每一个都在捕获新的结构,而不是重复前一个已经讲过的话。


Python 工具箱

Gram-Schmidt 正交化

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

def gram_schmidt(A):
    """经典 Gram-Schmidt 正交化

    A:矩阵,列为待正交化的向量
    返回 Q:列为标准正交向量的矩阵
    """
    m, n = A.shape
    Q = np.zeros((m, n))
    for j in range(n):
        v = A[:, j].copy()
        for i in range(j):
            v -= (Q[:, i] @ A[:, j]) * Q[:, i]
        Q[:, j] = v / np.linalg.norm(v)
    return Q

A = np.array([[1, 1, 0],
              [1, 0, 1],
              [0, 1, 1]], dtype=float).T
Q = gram_schmidt(A)
print("Q^T Q(应当为单位阵):\n", np.round(Q.T @ Q, 10))

QR 解最小二乘

1
2
3
4
5
6
7
8
9
def least_squares_qr(A, b):
    """用 QR 分解求解最小二乘(数值稳定)"""
    Q, R = np.linalg.qr(A)
    return np.linalg.solve(R, Q.T @ b)

x = np.array([1, 2, 3, 4, 5])
y = np.array([2.1, 3.9, 6.2, 7.8, 10.1])
A = np.column_stack([np.ones(len(x)), x])
print(least_squares_qr(A, y))

投影可视化

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
import matplotlib.pyplot as plt

a = np.array([3.0, 1.0])
b = np.array([1.0, 3.0])
proj = (a @ b) / (a @ a) * a
err = b - proj

fig, ax = plt.subplots(figsize=(7, 7))
ax.quiver(0, 0, *a, angles='xy', scale_units='xy', scale=1, color='blue', label='a')
ax.quiver(0, 0, *b, angles='xy', scale_units='xy', scale=1, color='green', label='b')
ax.quiver(0, 0, *proj, angles='xy', scale_units='xy', scale=1, color='red', label='proj')
ax.quiver(*proj, *err, angles='xy', scale_units='xy', scale=1, color='orange', label='error')
ax.set_xlim(-1, 5); ax.set_ylim(-1, 5); ax.set_aspect('equal'); ax.grid(True); ax.legend()
plt.show()

习题

热身

  1. 验证$\vec{u}=(1,2,-1)$与$\vec{v}=(2,-1,0)$是否正交。如果是,再把它们单位化。
  2. 计算$\vec{b}=(3,4)$在$\vec{a}=(1,0)$上的投影,并验证误差向量与$\vec{a}$正交。
  3. 对$\vec{a}_1=(1,1,0)$、$\vec{a}_2=(1,0,1)$做 Gram-Schmidt,并验证结果正交。

进阶

  1. 证明:不含零向量的正交集一定是线性独立的。
  2. 证明$P=A(A^TA)^{-1}A^T$满足$P^2=P$。从几何上解释为什么"投影的投影还是它自己"。
  3. 手算$A=\begin{pmatrix}1&1\\1&0\\0&1\end{pmatrix}$的 QR 分解,并验证$A=QR$。
  4. 用最小二乘法把$(1,1),(2,3),(3,2),(4,4)$拟合到直线$y=\beta_0+\beta_1 x$。
  5. 证明两个正交矩阵的乘积仍然是正交矩阵。

编程题

  1. 实现改进版 Gram-Schmidt,并在近似线性相关的向量(例如 Hilbert 矩阵的列)上比较它和经典版本的正交性误差。
  2. 模拟一个 3 用户的 CDMA 系统:长度为 4 的正交码、3 个用户各发一个比特、混合信号用各自的码字点积分离。验证正交性带来的"零干扰"。

本章总结

概念关键公式一句话直觉
正交$\vec{u}\cdot\vec{v}=0$向量"互不干扰"
一维投影$\mathrm{proj}_{\vec{a}}\vec{b}=\dfrac{\vec{a}\cdot\vec{b}}{\vec{a}\cdot\vec{a}}\vec{a}$直线上的影子
子空间投影$\hat{\vec{b}}=A(A^TA)^{-1}A^T\vec{b}$子空间中的最近点
正规方程$A^TA\hat{\vec{x}}=A^T\vec{b}$最小二乘的核心
Gram-Schmidt反复减去投影清除前轴的"污染"
QR 分解$A=QR$正交化的稳定矩阵形式
正交矩阵$Q^TQ=I$保长保角,条件数为 1

系列导航

参考资料

  • Strang, G. (2019). Introduction to Linear Algebra, 第 4、10 章。
  • Trefethen, L. N. & Bau, D. (1997). Numerical Linear Algebra, Lectures 7–11。
  • 3Blue1Brown. Essence of Linear Algebra, 第 9、11 集。
  • Golub, G. H. & Van Loan, C. F. (2013). Matrix Computations, 第 5 章。

Liked this piece?

Follow on GitHub for the next one — usually one a week.

GitHub