文章目录
- 1 特征值和特征向量
- 2 对角化
- 3 Schur定理和正规矩阵
- 4 Python求解
1 特征值和特征向量
-
定义
设 σ \sigma σ为数域 F F F上线性空间 V V V上的一个线性变换,一个非零向量 v ∈ V v\in V v∈V,如果存在一个 λ ∈ F \lambda \in F λ∈F使得 σ ( v ) = λ v \sigma(v)=\lambda v σ(v)=λv,则 λ \lambda λ称为 σ \sigma σ的特征值。 σ \sigma σ的特征值的集合称为 σ \sigma σ的谱。并称 v v v为 σ \sigma σ的属于(或对应于)特征值$\lambda $的特征向量。
-
特征值和特征向量的求法
设 V V V是数域 F F F上的 n n n维线性空间, v 1 , ⋯ , v n v_1,\cdots,v_n v1,⋯,vn是 V V V的一组基,线性变换 σ \sigma σ在这组基下的矩阵为 A A A,如果 λ \lambda λ是 σ \sigma σ的特征值, α \alpha α是相应的特征向量。则
α = ( v 1 , ⋯ , v n ) ( x 1 ⋮ x n ) \alpha=(v_1,\cdots,v_n)\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix} α=(v1,⋯,vn) x1⋮xn
将上式代入 σ ( v ) = λ v \sigma(v)=\lambda v σ(v)=λv得到
σ ( α ) = ( v 1 , ⋯ , v n ) A ( x 1 ⋮ x n ) λ α = λ ( v 1 , ⋯ , v n ) ( x 1 ⋮ x n ) \sigma(\alpha)=(v_1,\cdots,v_n)A\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix}\\ \lambda \alpha=\lambda (v_1,\cdots,v_n)\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix}\\ σ(α)=(v1,⋯,vn)A x1⋮xn λα=λ(v1,⋯,vn) x1⋮xn
由于 v 1 , ⋯ , v n v_1,\cdots,v_n v1,⋯,vn线性无关,所以
A ( x 1 ⋮ x n ) = λ ( x 1 ⋮ x n ) A\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix}=\lambda \begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix} A x1⋮xn =λ x1⋮xn
则说明特征向量 α \alpha α的坐标 x = ( x 1 ⋮ x n ) x=\begin{pmatrix}x_1\\\vdots\\x_n\end{pmatrix} x= x1⋮xn 满足齐次线性方程组 ( λ I − A ) x = 0 (\lambda I-A)x=0 (λI−A)x=0。因为 α ≠ 0 \alpha\neq 0 α=0,则 x ≠ 0 x\neq 0 x=0,即齐次线性方程组 ( λ I − A ) x = 0 (\lambda I-A)x=0 (λI−A)x=0有非零解。有非零解的充要条件是它的系数矩阵它的系数矩阵行列式 ∣ λ I − A ∣ = 0 |\lambda I-A|=0 ∣λI−A∣=0。
-
相关定义
设 A A A是数域 F F F上的 n n n阶矩阵, λ \lambda λ是一个符号,也是未知的特征值,矩阵 λ I − A \lambda I-A λI−A称为 A A A的特征矩阵,其行列式 ∣ λ I − A ∣ |\lambda I-A| ∣λI−A∣称为 A A A的特征多项式。方程 ∣ λ I − A ∣ = 0 |\lambda I-A|=0 ∣λI−A∣=0称为 A A A的特征方程,它的根(即 λ \lambda λ的值)称为 A A A的特征根(或特征值)。以 A A A的特征值 λ \lambda λ代入 A x = λ x Ax=\lambda x Ax=λx中所得到的非零解 x x x称为 A A A对应于 λ \lambda λ的特征向量。
-
定理
设 A A A为 n × n n\times n n×n矩阵, λ \lambda λ是一个数值,以下命题等价:
- λ \lambda λ是 A A A的特征值
- ( λ I − A ) x = 0 (\lambda I-A)x=0 (λI−A)x=0有一个非平凡的解(即有非零向量的解)
- N ( λ I − A ) ≠ { 0 } N(\lambda I-A)\neq\{0\} N(λI−A)={0}
- λ I − A \lambda I-A λI−A矩阵是奇异矩阵
- det ( λ I − A ) = 0 \det(\lambda I-A)=0 det(λI−A)=0
-
特征多项式的系数
如果
p ( λ ) = det ( λ I − A ) = λ n + ∑ k = 1 n ( − 1 ) k c k λ n − k = λ n − c 1 λ n − 1 + ⋯ + ( − 1 ) n − 1 c n − 1 λ + ( − 1 ) n c n p(\lambda)=\det(\lambda I-A)=\lambda^n+\sum_{\\k=1}^n(-1)^kc_k\lambda^{n-k}\\=\lambda ^n-c_1\lambda^{n-1}+\cdots+(-1)^{n-1}c_{n-1}\lambda+(-1)^nc_n p(λ)=det(λI−A)=λn+k=1∑n(−1)kckλn−k=λn−c1λn−1+⋯+(−1)n−1cn−1λ+(−1)ncn
则 c k ( 1 ≤ k ≤ n ) c_k(1\leq k\leq n) ck(1≤k≤n)是所有 k k k阶主子式(选择 k k k行 k k k列形成的行列式)的和,特别的, c 1 = t r ( A ) , c n = det ( A ) c_1=tr(A),c_n=\det(A) c1=tr(A),cn=det(A)。 -
定理
-
设 A ∈ C n × n A\in C^{n\times n} A∈Cn×n,如果 A A A有特征值 λ 1 , ⋯ , λ n \lambda_1,\cdots,\lambda_n λ1,⋯,λn,则
t r ( A ) = ∑ i = 1 n λ i , det ( A ) = ∏ i = 1 n λ i tr(A)=\sum_{\\i=1}^n\lambda_i,\det(A)=\prod_{i=1}^n\lambda_i tr(A)=i=1∑nλi,det(A)=i=1∏nλi -
如果 A A A相似 B B B,则两个矩阵有相同的特征值和特征多项式。
-
设 A ∈ C m × n A\in C^{m\times n} A∈Cm×n,则 A H A A^HA AHA和 A A H AA^H AAH特征值都是非负实数,且它们都有相同的非零特征值和相同的重数,并且非零特征值(包含重数)的数量等于KaTeX parse error: Undefined control sequence: \rank at position 1: \̲r̲a̲n̲k̲(A)。
-
2 对角化
-
定义
设矩阵 A ∈ F n × n A\in F^{n\times n} A∈Fn×n,如果存在一个非奇异矩阵 P ∈ F n × n P\in F^{n\times n} P∈Fn×n和一个对角矩阵 D ∈ F n × n D\in F^{n\times n} D∈Fn×n,使得 P − 1 A P = D P^{-1}AP=D P−1AP=D,则称 A A A可被对角化。
-
定理
- A A A可以被对角化当且仅当 A A A有 n n n个线性无关的特征向量
- λ 1 , ⋯ , λ k \lambda_1,\cdots,\lambda_k λ1,⋯,λk是 A A A的不同的特征值,则对应的特征向量 x 1 , ⋯ , x k x_1,\cdots,x_k x1,⋯,xk它们是线性无关的
- 由以上两条定理即可推出如果 A A A有 n n n个不同的特征值,则 A A A可被对角化
- 不同特征值对应的特征向量的集合的并集是线性无关的。即取每个特征值的所有特征向量,无论这些向量属于哪个特征值,它们的并集都是线性无关的。
-
代数重数
设 A ∈ F n × n A\in F^{n\times n} A∈Fn×n,如果 det ( λ I − A ) = ( λ − λ i ) r 1 ⋯ ( λ − λ k ) r k \det(\lambda I-A)=(\lambda -\lambda_i)^{r_1}\cdots(\lambda-\lambda_k)^{r_k} det(λI−A)=(λ−λi)r1⋯(λ−λk)rk,其中 λ 1 , ⋯ , λ k \lambda_1,\cdots,\lambda_k λ1,⋯,λk是 A A A的特征值,它们是不同的。则特征值 λ i \lambda_i λi的代数重数是 r i r_i ri,即特征值 λ i \lambda_i λi出现的次数。
-
几何重数
与特征值 λ i \lambda_i λi对应的特征子空间是 N ( λ i I − A ) N(\lambda_i I-A) N(λiI−A),则特征值 λ i \lambda_i λi的几何重数为 dim ( N ( λ i I − A ) ) \dim(N(\lambda_i I-A)) dim(N(λiI−A))。
几何重数$\leq $代数重数
-
几何重数看可对角化
矩阵 A ∈ F n × n A\in F^{n\times n} A∈Fn×n可对角化当且仅当 A A A中不同特征值的几何重数和等于 n n n(即每个特征值的代数重数都要等于几何重数)
3 Schur定理和正规矩阵
-
酉(正交)相似定义
设 A ∈ C n × n ( R n × n ) A\in C^{n\times n}(R^{n\times n}) A∈Cn×n(Rn×n),如果存在一个酉(正交)矩阵 U U U使得 U H A U = B ( U H = U − 1 ) U^HAU=B\space\space\space(U^H=U^{-1}) UHAU=B (UH=U−1),则可称 A A A酉(正交)相似 B B B
-
Schur定理
∀ A ∈ C n × n \forall A\in C^{n\times n} ∀A∈Cn×n, A A A都与上三角矩阵相似,且存在酉矩阵 U U U和上三角矩阵 T T T使得 U H A U = U − 1 A U = T U^HAU=U^{-1}AU=T UHAU=U−1AU=T。
仅适用于复数域,实数域上不一定适用
-
正规矩阵定义
设 A ∈ C n × n A\in C^{n\times n} A∈Cn×n,如果 A A A满足 A H A = A A H A^HA=AA^H AHA=AAH,则称 A A A是正规矩阵。
Hermite矩阵,酉(正交)矩阵都是正规矩阵
-
谱定理
设 A ∈ C n × n A\in C^{n\times n} A∈Cn×n,如果 A A A是Hermite矩阵,则 A A A酉相似于一个实对角矩阵,换句话说,Hermite矩阵的特征值都是实数。
-
引理
设 A ∈ C n × n A\in C^{n\times n} A∈Cn×n, A A A是正规矩阵当且仅当 ∀ λ , x \forall \lambda,x ∀λ,x使得 ∣ ∣ A x − λ x ∣ ∣ = ∣ ∣ A H x − λ ˉ x ∣ ∣ ||Ax-\lambda x||=||A^Hx-\bar{\lambda}x|| ∣∣Ax−λx∣∣=∣∣AHx−λˉx∣∣。
-
同时对角化
设 A , B A,B A,B都是相同阶数的正规矩阵,则存在一个酉矩阵可以同时酉对角化 A , B A,B A,B当且仅当 A B = B A AB=BA AB=BA
4 Python求解
import numpy as np
from sympy import symbols, Matrix
import pprint# 定义符号变量
lambda_ = symbols('lambda')A = np.array([[0, 2, 1], [-2, 0, 3], [-1, -3, 0]])
A = Matrix(A)# 求特征矩阵
characteristic_matrix = A - lambda_ * np.eye(3)
pprint.pprint("关于 lambda 的特征矩阵:")
pprint.pprint(characteristic_matrix)# 计算特征多项式
characteristic_polynomial = A.charpoly(lambda_)
pprint.pprint("关于 lambda 的特征多项式:")
pprint.pprint(characteristic_polynomial)# 求特征值
eigenvalues = A.eigenvals()
# 打印特征值、其代数重数、特征向量和几何重数for k, v in eigenvalues.items():pprint.pprint("特征值 %s 的代数重数为 %s" % (k, v))pprint.pprint("特征值 %s 的几何重数为 %s" % (k, A.eigenvects()[list(eigenvalues.keys()).index(k)][1]))pprint.pprint("特征值 %s 的特征向量为 %s" % (k, A.eigenvects()[list(eigenvalues.keys()).index(k)][2]))# 判断A是否可对角化,如果可以,打印出对角化矩阵
if A.is_diagonalizable():pprint.pprint("A可对角化")pprint.pprint("对角化矩阵为:")pprint.pprint(A.diagonalize()[0])# 求A的行空间、列空间、零空间
pprint.pprint("A的行空间为:")
pprint.pprint(A.rowspace())
pprint.pprint("A的列空间为:")
pprint.pprint(A.columnspace())
pprint.pprint("A的零空间为:")
pprint.pprint(A.nullspace())