一、完美的对称矩阵
\quad 满足A = A T A=A^T A = A T 的矩阵为对称矩阵。有如下性质:
对称矩阵的特征值一定是实数
对称矩阵的几何重数等于代数重数
对称矩阵一定有n个线性无关的特征向量
对称矩阵一定可以对角化
对称矩阵可以正交对角化
证明:对称矩阵可以正交对角化
对称矩阵所有不同的特征值所对应的特征向量相互垂直。
假设矩阵A A A 的两个特征向量V 1 , V 2 V_1,V_2 V 1 , V 2 对应不同的特征值λ 1 , λ 2 \lambda_1,\lambda_2 λ 1 , λ 2 ,证明:V 1 ⋅ V 2 = 0 V_1\cdot V_2=0 V 1 ⋅ V 2 = 0 。
( λ 1 V 1 ) ⋅ V 2 = ( λ 1 V 1 ) T V 2 = ( A V 1 ) T V 2 = V 1 T A T V 2 = V 1 T A V 2 = V 1 T λ 2 V 2 = λ 2 V 1 T V 2 = λ 2 V 1 ⋅ V 2 (\lambda_1V_1)\cdot V_2=(\lambda_1V_1)^TV_2=(AV_1)^TV_2=V_1^TA^TV_2=V_1^TAV_2=V_1^T\lambda_2V_2=\lambda_2V_1^TV_2=\lambda_2V_1\cdot V_2 ( λ 1 V 1 ) ⋅ V 2 = ( λ 1 V 1 ) T V 2 = ( A V 1 ) T V 2 = V 1 T A T V 2 = V 1 T A V 2 = V 1 T λ 2 V 2 = λ 2 V 1 T V 2 = λ 2 V 1 ⋅ V 2 ,故( λ 1 − λ 2 ) ( V 1 ⋅ V 2 ) = 0 (\lambda_1-\lambda_2)(V_1 \cdot V_2)=0 ( λ 1 − λ 2 ) ( V 1 ⋅ V 2 ) = 0 ,故V 1 ⋅ V 2 = 0 V_1 \cdot V_2=0 V 1 ⋅ V 2 = 0 。
如果有相同的特征值,则因为对称矩阵的几何重数等于代数重数,因此也能找到互相垂直的特征向量。进而得到对称矩阵一定有n个线性无关的特征向量的结论。
对称矩阵一定可以被对角化A = P D P − 1 A=PDP^{-1} A = P D P − 1 ,而且因为其特征向量相互垂直,因此能找到标准正交矩阵Q Q Q ,使得A = Q D Q − 1 = Q D Q T A=QDQ^{-1}=QDQ^T A = Q D Q − 1 = Q D Q T (对于标准正交矩阵而言Q − 1 = Q T Q^{-1}=Q^T Q − 1 = Q T )。
证明:如果一个矩阵能被正交对角化则该矩阵一定是对称矩阵
A = Q D Q T , A T = ( Q D Q T ) T = Q D Q T = A A=QDQ^T,A^T=(QDQ^T)^T=QDQ^T=A A = Q D Q T , A T = ( Q D Q T ) T = Q D Q T = A ,故A A A 是对称矩阵
二、奇异值
\quad 因为对称矩阵是完美的,具有上述如此多优美的性质,因为我们想:能不能将一个普通的矩阵也转化为对称矩阵呢?答案很简单,构造一下即可:假设A A A 是一个m ∗ n m*n m ∗ n 的矩阵,则A T A A^TA A T A 是一个n ∗ n n*n n ∗ n 的方阵,且是个对阵矩阵。故A T A A^TA A T A 具有如下性质:
对称矩阵的特征值一定是实数
对称矩阵一定有n个线性无关的特征向量
对称矩阵可以正交对角化
证明:A T A A^TA A T A 的特征值全部非负
假设A T A A^TA A T A 的特征值为λ 1 , ⋯ , λ n \lambda_1,\cdots,\lambda_n λ 1 , ⋯ , λ n ,特征向量为V 1 , ⋯ , V n V_1,\cdots,V_n V 1 , ⋯ , V n 。
∣ ∣ A V i ∣ ∣ 2 = ( A V i ) ⋅ ( A V i ) = ( A v i ) T ⋅ ( A v i ) = v i T A T A v i = v i T ( A T A v i ) = v i T ( λ i v i ) = λ i v i T v i = λ i ∣ ∣ V i ∣ ∣ 2 = λ i ||AV_i||^2=(AV_i)\cdot (AV_i)=(Av_i)^T\cdot (Av_i)=v_i^TA^TAv_i=v_i^T(A^TAv_i)=v_i^T(\lambda_iv_i)=\lambda_iv_i^Tv_i =\lambda_i||V_i||^2=\lambda_i ∣ ∣ A V i ∣ ∣ 2 = ( A V i ) ⋅ ( A V i ) = ( A v i ) T ⋅ ( A v i ) = v i T A T A v i = v i T ( A T A v i ) = v i T ( λ i v i ) = λ i v i T v i = λ i ∣ ∣ V i ∣ ∣ 2 = λ i ,因此∣ ∣ A V i ∣ ∣ 2 = = λ i ||AV_i||^2==\lambda_i ∣ ∣ A V i ∣ ∣ 2 = = λ i ,故而λ i ≥ 0 \lambda_i \ge 0 λ i ≥ 0 。
σ i = λ i \sigma_i=\sqrt\lambda_i σ i = λ i ,σ i \sigma_i σ i 称为A A A 的奇异值。即A A A 的奇异值为A T A A^TA A T A 的特征值开根号后的结果。
σ i \sigma_i σ i 是向量A V i AV_i A V i 的长度
三、矩阵的SVD分解
\quad SVD为Singular Value Decomposition,即矩阵的奇异值分解。任意矩阵均有SVD分解。若A A A 是m ∗ n m*n m ∗ n 的矩阵,则可以分解为A = U Σ V T A=U\Sigma V^T A = U Σ V T ,其中U = m ∗ m , Σ = m ∗ n , V = n ∗ n U=m*m,\Sigma=m*n,V=n*n U = m ∗ m , Σ = m ∗ n , V = n ∗ n 。
V V V 是A T A A^TA A T A 的特征向量进行标准化后的结果,故V V V 是标准正交矩阵
U U U 是标准正交矩阵
Σ \Sigma Σ 是奇异值矩阵
\quad python的scipy库封装好了矩阵的SVD分解,调用方法如下:
import numpy as np
from scipy. linalg import svd
if __name__ == '__main__' :
A = np. array( [ [ 1 , 2 ] ,
[ 3 , 4 ] ,
[ 5 , 6 ] ] )
U, s, VT = svd( A)
print U
print s
print VT
Sigma = np. zeros( A. shape)
for i in range ( len ( s) ) :
Sigma[ i] [ i] = s[ i]
print U. dot( Sigma) . dot( VT)