一、完美的對稱矩陣
\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)