矩阵的对角化(SVD分解)
矩阵的SVD分解是矩阵对角化的方法之一.
特征值、向量的定义
设 TTT 是线性空间 VVV 上的一个线性变换,若存在一非零向量 v⃗\vec{v}v,使得 Tv⃗=λv⃗T\vec{v}=\lambda \vec{v}Tv=λv,则称 λ\lambdaλ 为线性变换 TTT 的一个「特征值」, v⃗\vec{v}v(v⃗≠0⃗\vec{v} \neq \vec{0}v=0)为线性变换 TTT 的「属于特征值 λ\lambdaλ 的特征向量」。根据线性变换与矩阵的对应关系,设 {v1⃗,v2⃗...,vn⃗}\{\vec{v_1},\vec{v_2}...,\vec{v_n}\}{v1,v2...,vn} 是线性空间 VVV 的一个基,线性变换 TTT 在这组基下的矩阵是 AAA,λ\lambdaλ 为线性变换 TTT 的一个特征值,λ\lambdaλ 的一个特征向量 v⃗\vec{v}v 在这个基下的坐标“向量”为 x\boldsymbol{x}x,则可证明:Ax=λxA\boldsymbol{x}=\lambda \boldsymbol{x}Ax=λx。特征值和特征向量的几何含义:在特定的向量 v⃗\vec{v}v(v⃗≠0⃗\vec{v} \neq \vec{0}v=0)方向上输出的 Tv⃗T\vec{v}Tv 会平行于 v⃗\vec{v}v,即为 Tv⃗=λv⃗T\vec{v}=\lambda \vec{v}Tv=λv;使用矩阵和坐标的形式来描述线性变换这一过程即:Ax=λxA\boldsymbol{x}=\lambda \boldsymbol{x}Ax=λx
①特征向量不为零向量;②每一个特征值的所有特征向量 + 零向量可以构成一个线性空间,称其为特征值 λλλ 的「特征子空间」,由此也可以看到,特征向量不唯一,可以取特征子空间中的任意互相线性无关的非零向量;对每一个特征值而言,几何重数(λi\lambda_iλi 对应的特征子空间的维数) ≤\leq≤ 代数重数;③称 (λI−A)(λI- A)(λI−A) 为矩阵 AAA 的「特征矩阵」、称 det(λI−A)det(λI- A)det(λI−A) 为矩阵 AAA 的「特征多项式」。Tips:如果 0 是矩阵的特征值,则有 Ax=0x=0A\boldsymbol{x}=0 \boldsymbol{x}=\boldsymbol{0}Ax=0x=0,则特征值 0 所对应的向量生成了矩阵的零空间 N(A)N(A)N(A);故如果矩阵 AAA 为不可逆矩阵,即零空间 N(A)N(A)N(A) 不是只含 0\boldsymbol{0}0 的空间,则 0 是矩阵 AAA 的特征值之一.
注意:在后续的所有讨论中,(向量)x\boldsymbol{x}x 就代表线性空间中一个向量 v⃗\vec vv 的坐标。为线性空间选定一个基后,我们将用矩阵和坐标“向量”x\boldsymbol{x}x 分别“代替”线性变换中抽象的 TTT 和 v⃗\vec{v}v.
特征值、向量的计算
根据特征值、特征向量定义:
Ax=λx⟹Ax−λx=0⟹(λI−A)x=0
A\boldsymbol{x} =\lambda\boldsymbol{x} \\
\Longrightarrow A\boldsymbol x-\lambda\boldsymbol x =\boldsymbol{0} \\
\Longrightarrow (\lambda I - A)\boldsymbol{x}=\boldsymbol{0}
Ax=λx⟹Ax−λx=0⟹(λI−A)x=0
即特征矩阵为(2x2矩阵举例示范):
λI−A=[λ−abcλ−d]
\lambda I-A=\begin{bmatrix}\lambda -a&b\\c&\lambda -d\end{bmatrix}
λI−A=[λ−acbλ−d]
特征向量不能为 0\boldsymbol{0}0,故上面方程有非零解,即列向量所构成的向量组线性相关(非满秩),即特征矩阵的行列式(特征多项式)值为 000:
det(A−λI)=0
\det(A-\lambda I)=0
det(A−λI)=0
其是一个关于 λ\lambdaλ 的 nnn 次多项式(nnn为矩阵阶数),因此可以解出所有的特征值 λ\lambdaλ;然后将每一个特征值 λi\lambda_iλi 代入 (λI−A)x=0(\lambda I -A)\boldsymbol{x}=\boldsymbol{0}(λI−A)x=0,解出这个方程(矩阵)的零空间(即属于这个特征值 λi\lambda_iλi 的特征向量构成的特征子空间),因此得到属于每个特征值 λi\lambda_iλi 的特征向量;
相似变换对角化(矩阵的SVD分解)
如果我们知道一个矩阵的特征值和特征向量(即使不知道该矩阵本身),那我们就知道“定义域”线性空间中任意一个坐标“向量”x\boldsymbol{x}x,其被矩阵 AAA 这一线性变换作用后的得到的坐标“向量”AxA\boldsymbol{x}Ax。也就是说,特征值、特征向量其实就刻画了一个线性变换后生成的空间,即矩阵 AAA 可以被分解为(等价于)特征值和特征向量构成的形式,称这一过程为矩阵 AAA 的SVD(Singular Value Decomposition)分解.
根据是矩阵是一个线性变换,因此可以将向量先根据一个基(特征向量形成的基)分解得到线性组合系数,再变换这个基(特征向量形成的基)得到新基,然后再将新基由原来的线性组合的系数进行合成,得到 AxA\boldsymbol{x}Ax 。具体做法:
-
先将坐标“向量” x\boldsymbol{x}x 分解为由特征向量(假设 v1⃗、v2⃗...\vec{v_1}、\vec{v_2}...v1、v2...)的坐标进行线性表示的形式(不妨设特征向量的坐标组成矩阵 CCC ):
x=Cx′ \boldsymbol{x} = C \boldsymbol{x'} x=Cx′
即线性组合系数 x′\boldsymbol{x'}x′ 为:
x′=C−1x \boldsymbol{x'} = C^{-1}\boldsymbol{x} x′=C−1x -
我们知道线性变换 AAA 会对特征向量进行缩放 λ\lambdaλ 倍(由特征值、特征向量的定义可知),因此每一个特征向量 xi\boldsymbol{x_i}xi 都将被缩放它对应的特征值倍,即 λi\lambda_iλi 倍。这一线性变换可以用特征值构成的对角矩阵 Λ\LambdaΛ 形式描述:
C[λ10...00λ2...000...000...λn] C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix} Cλ10000λ200............000λn
其中 CCC 是特征向量的坐标构成的矩阵 -
最后,我们对原基(特征向量构成的矩阵 CCC )变换后的新基(即第2步的那个矩阵)进行线性组合,其中组合系数是向量 x′⃗\vec{x'}x′ ,即:
C[λ10...00λ2...000...000...λn]x′=C[λ10...00λ2...000...000...λn]C−1x C\begin{bmatrix}λ_1 & 0 & ... & 0\\0 & λ_2 & ... & 0\\0 & 0 & ... & 0\\0 & 0 & ... & λ_n\end{bmatrix} \boldsymbol{x'}= C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix}C^{-1} \boldsymbol{x} Cλ10000λ200............000λnx′=Cλ10000λ200............000λnC−1x
这样,我们就通过特征值、特征向量,得到了原坐标向量 x\boldsymbol{x}x,其被矩阵 AAA 这一线性变换作用后的得到的新坐标向量 AxA\boldsymbol{x}Ax,即:
Ax=C[λ10...00λ2...000...000...λn]C−1x A\boldsymbol{x} = C \begin{bmatrix} λ_1 & 0 & ... & 0\\ 0 & λ_2 & ... & 0\\ 0 & 0 & ... & 0\\ 0 & 0 & ... & λ_n \end{bmatrix} C^{-1} \boldsymbol{x} Ax=Cλ10000λ200............000λnC−1x
综上:线性变换的矩阵 AAA 等价于用特征值、特征向量描述的变换,即对 AAA 进行特征分解(SVD分解,Singular Value Decomposition):
A=C[λ10...00λ2...000...000...λn]C−1
A =
C
\begin{bmatrix}
λ_1 & 0 & ... & 0\\
0 & λ_2 & ... & 0\\
0 & 0 & ... & 0\\
0 & 0 & ... & λ_n
\end{bmatrix}
C^{-1}
A=Cλ10000λ200............000λnC−1
这也称为相似变换对角化(矩阵 AAA 和特征值组成的对角阵 Λ\LambdaΛ 相似,C−1AC=ΛC^{-1}AC = \LambdaC−1AC=Λ)。这种分解的一个显而易见的好处之一是,方便求矩阵 AAA 的 nnn 次方。
n 阶矩阵一定有 n 个线性无关的特征向量吗(即任何一个矩阵都可以进行SVD分解吗)?否
SVD 分解的充要条件
定理:属于不同特征值的特征向量是线性无关的(特征子空间之间的关系,类似于直和的情况)。SVD分解的充要条件定理:nnn 阶方阵 AAA 可通过相似变换对角化的充要条件是它具有 nnn 个线性无关的特征向量;由此可以推论若 nnn 阶方阵有 nnn 个互异的特征值,则必可对角化(因为每个特征值至少有一个特征向量,这里显然每一个不同的特征值都有一个特征向量)
附录:相似矩阵
前面证明过,互为相似的矩阵是同一线性变换在不同基下的矩阵。在这里,相似矩阵有相同的特征多项式(假设 B=P−1APB = P^{-1}APB=P−1AP):
∣λI−B∣=∣λI−P−1AP∣=∣P−1(λI−A)P∣=∣P−1∣⋅∣λI−A∣⋅∣P∣=∣λI−A∣
\begin{aligned}
\left|\lambda I-B\right|& =\begin{vmatrix}\lambda I-P^{-1}AP\end{vmatrix}=\begin{vmatrix}P^{-1}(\lambda I-A)P\end{vmatrix} \\
&=\left|P^{-1}\right|\cdot\left|\lambda I-A\right|\cdot\left|P\right| \\
&=\left|\lambda I-A\right|
\end{aligned}
∣λI−B∣=λI−P−1AP=P−1(λI−A)P=P−1⋅∣λI−A∣⋅∣P∣=∣λI−A∣
因此有相同的特征值;但特征向量(坐标)不相同(这应该是因为描述线性空间的基不同)。从这个角度来看,对所有的互为相似的矩阵 AAA、BBB 进行SVD分解后,Λ\LambdaΛ 这个对角阵是一样的。也就是说,在将一个坐标向量使用坐标特征向量进行分解后,相似矩阵所代表的线性变换,就是对坐标特征向量进行伸缩变换且伸缩的倍数相同,然后再利用变换后的坐标特征向量进行线性组合…从相似矩阵有着相同的 Λ\LambdaΛ 对角阵,似乎也可以佐证互为相似的矩阵是同一线性变换.
附录:矩阵的迹与行列式
定义矩阵的迹为所有对角元素之和,即 trA=∑i=1naii\mathrm{tr}A=\sum_{i=1}^na_{ii}trA=∑i=1naii
定理1:trA=∑i=1nλi\mathrm{tr}A=\sum_{i=1}^n\lambda_itrA=∑i=1nλi,即矩阵 AAA 的迹等于矩阵 AAA 的特征值之和;定理2:detA=∏i=1nλi\det A=\prod_{i=1}^n\lambda_idetA=∏i=1nλi,即矩阵 AAA 的行列式等于矩阵 AAA 的特征值之积(从“几何”意义上理解,行列式的值等于矩阵变换后的“体积”与原“体积”的比值,特征值是矩阵在特征向量方向上的缩放因子);
定理3:从上面可知,相似矩阵有相同的特征多项式,因此,有相同的特征值,且有相同的迹和行列式(相似矩阵有相同的特征值,因此特征值之和、积都相等,故迹、行列式也相等);
1814





