Skip to content

第 6 章:正交矩阵为什么能选出,以及 Gram–Schmidt 如何操作 ​

返回目录

关键在于:并不是我们随便构造一个 Q,它就一定是正交矩阵,而是因为 A 是实对称矩阵,我们总能选出一组正交归一的特征向量来构造 Q。

这里需要证明两件事:

  1. 不同特征值对应的特征向量相互正交。
  2. 相同特征值对应的特征向量,也可以选成相互正交的。

一、先理解 Q 为什么与正交有关 ​

假设:

Q=
\begin{bmatrix}
|&|\\
\mathbf q_1&\mathbf q_2\\
|&|
\end{bmatrix}

矩阵 Q 的两列分别是两个特征向量。

那么:

Q^TQ=
\begin{bmatrix}
\mathbf q_1^T\\
\mathbf q_2^T
\end{bmatrix}
\begin{bmatrix}
\mathbf q_1&\mathbf q_2
\end{bmatrix}

展开得到:

\boxed{
Q^TQ=
\begin{bmatrix}
\mathbf q_1^T\mathbf q_1&\mathbf q_1^T\mathbf q_2\\
\mathbf q_2^T\mathbf q_1&\mathbf q_2^T\mathbf q_2
\end{bmatrix}
}

注意,每一个元素都是两个向量的内积。

如果两个向量长度均为 1,并且互相垂直:

\mathbf q_1^T\mathbf q_1=1,\quad
\mathbf q_2^T\mathbf q_2=1
\mathbf q_1^T\mathbf q_2=\mathbf q_2^T\mathbf q_1=0

于是:

\boxed{
Q^TQ=
\begin{bmatrix}
1&0\\
0&1
\end{bmatrix}=I
}

这就是正交矩阵的定义。

所以问题变成了:为什么实对称矩阵的特征向量能够满足这些条件?

二、证明不同特征值对应的特征向量正交 ​

假设:

A^T=A

有两个不同的特征值 \lambda_1\ne\lambda_2,对应特征向量:

A\mathbf q_1=\lambda_1\mathbf q_1
A\mathbf q_2=\lambda_2\mathbf q_2

考虑这个标量:

\mathbf q_1^TA\mathbf q_2

我们可以用两种方式计算它。

第一种:先计算 A\mathbf q_2

\mathbf q_1^TA\mathbf q_2
=
\lambda_2\mathbf q_1^T\mathbf q_2

第二种:利用矩阵的对称性

由于 A^T=A:

\mathbf q_1^TA\mathbf q_2
=
(A\mathbf q_1)^T\mathbf q_2

所以:

\mathbf q_1^TA\mathbf q_2
=
\lambda_1\mathbf q_1^T\mathbf q_2

两种计算结果必然相等:

\lambda_2\mathbf q_1^T\mathbf q_2
=
\lambda_1\mathbf q_1^T\mathbf q_2

移项:

(\lambda_2-\lambda_1)\mathbf q_1^T\mathbf q_2=0

因为:

\lambda_2-\lambda_1\ne0

所以只能是:

\boxed{\mathbf q_1^T\mathbf q_2=0}

证毕:实对称矩阵不同特征值对应的特征向量一定相互正交。

三、如果两个特征值相同呢? ​

这是一个容易忽略的细节。

例如单位矩阵:

A=
\begin{bmatrix}
1&0\\
0&1
\end{bmatrix}

因为 A\mathbf x=\mathbf x,所以任何非零向量都是特征值为 1 的特征向量。

例如:

\mathbf v_1=
\begin{bmatrix}1\\0\end{bmatrix},
\qquad
\mathbf v_2=
\begin{bmatrix}1\\1\end{bmatrix}

显然:

\mathbf v_1^T\mathbf v_2=1\ne0

所以,相同特征值对应的特征向量,不一定天然正交。

但是,我们可以选择另一组:

\mathbf q_1=
\begin{bmatrix}1\\0\end{bmatrix},
\qquad
\mathbf q_2=
\begin{bmatrix}0\\1\end{bmatrix}

它们同样都是特征向量,而且相互正交。

对于高维情况,可以通过 Gram–Schmidt 正交化,在同一特征值对应的特征子空间中选出正交归一基。

之所以这样操作不会破坏特征向量性质,是因为相同特征值对应的特征向量的线性组合,仍然是该特征值的特征向量。

Gram–Schmidt 正交化(Gram–Schmidt Orthogonalization) 的核心思想很简单:

从第二个向量中,减去它在第一个向量方向上的分量,剩下的向量就与第一个向量垂直了。

我们先用二维向量推导,再推广到任意维度,最后解释为什么它不会破坏特征向量的性质。

一、先看最简单的二维例子 ​

假设有两个线性无关、但不垂直的向量:

\mathbf v_1=\begin{bmatrix}1\\0\end{bmatrix},
\qquad
\mathbf v_2=\begin{bmatrix}1\\1\end{bmatrix}

显然,它们的内积:

\mathbf v_1^T\mathbf v_2=1\ne0

所以它们不正交。

我们的目标是找到两个新向量 \mathbf q_1,\mathbf q_2,满足:

\boxed{
\mathbf q_1^T\mathbf q_2=0,\quad
\|\mathbf q_1\|=\|\mathbf q_2\|=1
}

第一步:保留第一个向量,并归一化

定义:

\mathbf q_1=\frac{\mathbf v_1}{\|\mathbf v_1\|}

本例中 \|\mathbf v_1\|=1,因此:

\mathbf q_1=\begin{bmatrix}1\\0\end{bmatrix}

第二步:计算第二个向量在第一个方向上的投影

向量投影的公式是:

\boxed{
\operatorname{proj}_{\mathbf q_1}\mathbf v_2
=
(\mathbf q_1^T\mathbf v_2)\mathbf q_1
}

注意,这里 \mathbf q_1 已经是单位向量。

代入:

\mathbf q_1^T\mathbf v_2
=
\begin{bmatrix}1&0\end{bmatrix}
\begin{bmatrix}1\\1\end{bmatrix}=1

所以投影为:

\operatorname{proj}_{\mathbf q_1}\mathbf v_2
=
\begin{bmatrix}1\\0\end{bmatrix}

第三步:减去投影

\boxed{
\mathbf u_2=\mathbf v_2-
(\mathbf q_1^T\mathbf v_2)\mathbf q_1
}

代入:

\mathbf u_2=
\begin{bmatrix}1\\1\end{bmatrix}
-
\begin{bmatrix}1\\0\end{bmatrix}
=
\begin{bmatrix}0\\1\end{bmatrix}

检验:

\mathbf q_1^T\mathbf u_2
=
\begin{bmatrix}1&0\end{bmatrix}
\begin{bmatrix}0\\1\end{bmatrix}=0

所以它们已经正交。

最后再归一化:

\mathbf q_2=\frac{\mathbf u_2}{\|\mathbf u_2\|}
=\begin{bmatrix}0\\1\end{bmatrix}

最终:

\boxed{
Q=
\begin{bmatrix}
1&0\\
0&1
\end{bmatrix}
}

我们成功把原本不正交的两个向量,转换成了一组正交归一向量。


二、为什么减去投影后,一定会垂直? ​

这是 Gram–Schmidt 最重要的数学原理。

假设 \mathbf q_1 是单位向量,我们想从 \mathbf v_2 中减去某个倍数的 \mathbf q_1:

\mathbf u_2=\mathbf v_2-c\mathbf q_1

现在要求 \mathbf u_2 与 \mathbf q_1 垂直,也就是:

\mathbf q_1^T\mathbf u_2=0

将表达式代入:

\mathbf q_1^T(\mathbf v_2-c\mathbf q_1)=0

展开:

\mathbf q_1^T\mathbf v_2
-c\mathbf q_1^T\mathbf q_1=0

因为 \mathbf q_1 是单位向量:

\mathbf q_1^T\mathbf q_1=1

所以:

\boxed{c=\mathbf q_1^T\mathbf v_2}

这就严格推导出了投影公式。

因此,减去投影并不是一种经验技巧,而是直接根据「两个向量内积等于零」这个正交条件求出来的。

三、如果有三个向量怎么办? ​

假设有三个线性无关的向量:

\mathbf v_1,\mathbf v_2,\mathbf v_3

处理流程如下。

首先:

\mathbf q_1=\frac{\mathbf v_1}{\|\mathbf v_1\|}

然后:

\mathbf u_2=\mathbf v_2-
(\mathbf q_1^T\mathbf v_2)\mathbf q_1
\mathbf q_2=\frac{\mathbf u_2}{\|\mathbf u_2\|}

到了第三个向量,关键来了。

\mathbf v_3 既要去掉沿 \mathbf q_1 的分量,也要去掉沿 \mathbf q_2 的分量。

因此:

\boxed{
\mathbf u_3
=
\mathbf v_3
-(\mathbf q_1^T\mathbf v_3)\mathbf q_1
-(\mathbf q_2^T\mathbf v_3)\mathbf q_2
}

再归一化:

\mathbf q_3=\frac{\mathbf u_3}{\|\mathbf u_3\|}

这时候:

\mathbf q_1^T\mathbf q_3=0
\mathbf q_2^T\mathbf q_3=0

而前面已经有:

\mathbf q_1^T\mathbf q_2=0

所以三个向量两两正交。

推广到第 k 个向量:

\boxed{
\mathbf u_k=
\mathbf v_k-
\sum_{j=1}^{k-1}
(\mathbf q_j^T\mathbf v_k)\mathbf q_j
}
\boxed{
\mathbf q_k=\frac{\mathbf u_k}{\|\mathbf u_k\|}
}

前提是原始向量线性无关,这样每一步的 \mathbf u_k 都不是零向量。

四、为什么对特征向量做这个操作,不会破坏特征向量性质? ​

这就回到了你上一条关于实对称矩阵的问题。

假设:

A\mathbf v_1=\lambda\mathbf v_1
A\mathbf v_2=\lambda\mathbf v_2

注意:这两个特征向量对应同一个特征值 \lambda。

通过 Gram–Schmidt 得到:

\mathbf u_2=\mathbf v_2-c\mathbf v_1

那么:

A\mathbf u_2=A(\mathbf v_2-c\mathbf v_1)

利用矩阵乘法的线性性质:

=A\mathbf v_2-cA\mathbf v_1

代入特征值关系:

=\lambda\mathbf v_2-c\lambda\mathbf v_1

提出 \lambda:

=\lambda(\mathbf v_2-c\mathbf v_1)

因此:

\boxed{A\mathbf u_2=\lambda\mathbf u_2}

这证明了:对同一特征值对应的特征向量进行线性组合,得到的非零向量仍然是同一个特征值对应的特征向量。

归一化也只是乘一个非零标量,因此同样不会破坏特征向量性质。

但如果两个特征向量对应不同特征值,它们的线性组合通常就不再是特征向量。不过实对称矩阵的不同特征值对应的特征向量本来就正交,因此也不需要跨特征值进行 Gram–Schmidt。


五、最后把它和 Q 联系起来 ​

对于实对称矩阵 A,我们可以在各个特征子空间中通过 Gram–Schmidt 选取正交归一基,再将它们组合起来:

Q=
\begin{bmatrix}
\mathbf q_1&\mathbf q_2&\cdots&\mathbf q_n
\end{bmatrix}

就有:

\boxed{Q^TQ=I}

并且:

\boxed{AQ=Q\Lambda}

最终:

\boxed{A=Q\Lambda Q^T}

所以,你可以把 Gram–Schmidt 理解为一个非常具体的操作:

每加入一个新向量,就把它与之前所有正交方向重叠的分量全部减掉,最后把剩余向量的长度调整为 1。

它不仅用于矩阵特征向量的正交化,也是线性代数中 QR 分解、最小二乘计算等方法的基础。

补充:非零性、张成空间和循环论证 ​

第 k 步若 u_k=0,则 v_k 属于前 k-1 个 q_j 的张成空间。归纳可知它等于前 k-1 个 v_j 的张成空间,与原向量组线性无关矛盾。因此每一步可归一化,并保持前 k 个向量的张成空间。

但 Gram–Schmidt 不能凭空补出缺失的特征向量。不同特征值的正交性,加上同一特征空间内的正交化,并没有单独证明特征向量总数达到 n。这项存在性要由第 9—10 章的谱定理证明完成,不能先假定可对角化再拿它证明可对角化。

例如对非对称矩阵 \begin{bmatrix}1&1\\0&1\end{bmatrix},唯一特征值为 1,特征空间仅一维;再熟练的正交化也无法把它变成二维特征基。

保留每一次追问,认真走完每一步证明。