参考:通义千问
一、目标
给定:
- I∈Rn×nI \in \mathbb{R}^{n \times n}I∈Rn×n 是单位矩阵;
- u,v∈Rn\mathbf{u}, \mathbf{v} \in \mathbb{R}^nu,v∈Rn 是列向量(非零);
- 定义矩阵:
A=I+uv⊤ A = I + \mathbf{u} \mathbf{v}^\top A=I+uv⊤
我们要找出 AAA 的所有特征值。
二、关键观察:秩-1扰动只改变一个方向
矩阵 uv⊤\mathbf{u} \mathbf{v}^\topuv⊤ 是秩为 1 的矩阵,它的作用是:
- 将任意向量 x\mathbf{x}x 映射到 u(v⊤x)\mathbf{u} (\mathbf{v}^\top \mathbf{x})u(v⊤x),即:结果总在 u\mathbf{u}u张成的一维子空间中;
- 所以它只在一个方向上有"非平凡"作用,其余 n−1n-1n−1 个正交方向上为零。
因此,对 A=I+uv⊤A = I + \mathbf{u} \mathbf{v}^\topA=I+uv⊤ 来说:
- 在与 v\mathbf{v}v 正交的子空间中,v⊤x=0\mathbf{v}^\top \mathbf{x} = 0v⊤x=0,所以Ax=xA\mathbf{x} = \mathbf{x}Ax=x;
- 只有在 v\mathbf{v}v(或 u\mathbf{u}u)方向上,特征值会偏离 1。
三、正式推导
步骤 1:找 n−1n-1n−1 个特征值为 1 的特征向量
考虑任意满足
v⊤x=0 \mathbf{v}^\top \mathbf{x} = 0 v⊤x=0
的非零向量 x∈Rn\mathbf{x} \in \mathbb{R}^nx∈Rn。
那么:
Ax=(I+uv⊤)x=x+u(v⊤x)=x+u⋅0=x A \mathbf{x} = (I + \mathbf{u} \mathbf{v}^\top) \mathbf{x} = \mathbf{x} + \mathbf{u} (\mathbf{v}^\top \mathbf{x}) = \mathbf{x} + \mathbf{u} \cdot 0 = \mathbf{x} Ax=(I+uv⊤)x=x+u(v⊤x)=x+u⋅0=x
所以:
- x\mathbf{x}x 是 AAA 的特征向量;
- 对应的特征值是 λ=1\lambda = 1λ=1。
而满足 v⊤x=0\mathbf{v}^\top \mathbf{x} = 0v⊤x=0 的向量构成一个 n−1n-1n−1 维子空间 (因为 v≠0\mathbf{v} \ne \mathbf{0}v=0),所以:
特征值 1 至少有重数 n−1n-1n−1。
步骤 2:找剩下的那个特征值
由于 AAA 是 n×nn \times nn×n 矩阵,共有 nnn 个特征值(计入重数,不考虑奇异情况)。我们已经找到 n−1n-1n−1 个是 1,还剩一个未知,记作 λ\lambdaλ。
我们可以用两种方法求它:
方法 A:利用迹
矩阵的迹等于所有特征值之和:
tr(A)=tr(I+uv⊤)=tr(I)+tr(uv⊤) \operatorname{tr}(A) = \operatorname{tr}(I + \mathbf{u} \mathbf{v}^\top) = \operatorname{tr}(I) + \operatorname{tr}(\mathbf{u} \mathbf{v}^\top) tr(A)=tr(I+uv⊤)=tr(I)+tr(uv⊤)
- tr(I)=n\operatorname{tr}(I) = ntr(I)=n
- tr(uv⊤)=v⊤u\operatorname{tr}(\mathbf{u} \mathbf{v}^\top) = \mathbf{v}^\top \mathbf{u}tr(uv⊤)=v⊤u(这是标量,也是外积矩阵的迹)
所以:
tr(A)=n+v⊤u \operatorname{tr}(A) = n + \mathbf{v}^\top \mathbf{u} tr(A)=n+v⊤u
另一方面,特征值之和为:
(n−1)⋅1+λ=n−1+λ (n-1) \cdot 1 + \lambda = n - 1 + \lambda (n−1)⋅1+λ=n−1+λ
令两者相等:
n−1+λ=n+v⊤u⇒λ=1+v⊤u n - 1 + \lambda = n + \mathbf{v}^\top \mathbf{u} \quad \Rightarrow \quad \lambda = 1 + \mathbf{v}^\top \mathbf{u} n−1+λ=n+v⊤u⇒λ=1+v⊤u
✅ 所以最后一个特征值是 1+v⊤u1 + \mathbf{v}^\top \mathbf{u}1+v⊤u。
方法 B:直接验证 u\mathbf{u}u 是特征向量(当 u≠0\mathbf{u} \ne 0u=0)
计算:
Au=(I+uv⊤)u=u+u(v⊤u)=(1+v⊤u)u A \mathbf{u} = (I + \mathbf{u} \mathbf{v}^\top) \mathbf{u} = \mathbf{u} + \mathbf{u} (\mathbf{v}^\top \mathbf{u}) = (1 + \mathbf{v}^\top \mathbf{u}) \mathbf{u} Au=(I+uv⊤)u=u+u(v⊤u)=(1+v⊤u)u
所以:
- 若 u≠0\mathbf{u} \ne \mathbf{0}u=0,则 u\mathbf{u}u 是特征向量;
- 对应特征值就是 1+v⊤u1 + \mathbf{v}^\top \mathbf{u}1+v⊤u。
⚠️ 注意:如果 u=0\mathbf{u} = \mathbf{0}u=0,那 A=IA = IA=I,所有特征值都是 1 ------ 这是退化情况。