Jordan 标准型定理(Jordan Normal Form Theorem)是线性代数中一个非常重要的定理,它描述了任意复方阵在相似变换下的标准形,也叫 Jordan 标准形(Jordan Normal Form)或 Jordan 规范形。
Jordan 标准型定理概述
定理内容:
设 A 是一个复数域上的 n×n 方阵,那么存在一个可逆矩阵 P,使得 P−1AP=J,其中 J 是一个由若干个 Jordan 块(Jordan block)沿对角线组成的块对角矩阵。这个 J 就称为矩阵 A 的 Jordan 标准型。
Jordan 块(Jordan block)
每个 Jordan 块对应矩阵的一个特征值 λ,形如:Jk(λ)=(λ10⋯00λ1⋯0⋮⋮⋮⋱⋮000λ10000λ)k×k
- 对角线元素都是特征值 λ
- 超对角线(主对角线上方一条斜线)元素都是 1
- 其他元素都是 0
重要意义
- Jordan 标准型给出了矩阵最简“相似分类”,方便研究矩阵的性质
- 应用广泛:微分方程解的结构、矩阵函数定义、线性变换的深入分析等
- 不同的 Jordan 块个数和大小揭示了特征值的代数重数和几何重数关系
简单总结
- 任何复方阵都可以相似变换成 Jordan 标准型
- Jordan 标准型唯一(除了块的顺序)
- Jordan 标准型反映了矩阵的特征结构和不变子空间分解
好的!我给你详细讲解 Jordan 标准型定理 的证明思路和具体例子演示,帮助你理解怎么求一个矩阵的 Jordan 标准型。
Jordan 标准型定理证明思路(概要)
- 分解特征多项式设矩阵 A 的特征多项式在复数域分解为χA(λ)=∏i=1r(λ−λi)mi其中 λi 是不同的特征值。
- 主零化多项式和最小多项式通过最小多项式将空间分解为各特征值对应的广义特征子空间(即根空间)
- 广义特征子空间分解将空间分为V=⨁i=1rVλi每个 Vλi 是由满足 (A−λiI)kx=0 的所有向量组成的子空间。
- 在每个广义特征子空间构造 Jordan 块通过选择合适的“链向量”基,构造形如(A−λiI)vj=vj−1的链,形成 Jordan 块。
- 拼接所有 Jordan 块,得到 Jordan 标准型将所有 Vλi 的基合并后,矩阵在这个基下变成 Jordan 块的块对角和。
具体例子演示
设矩阵A=(54201−1003)
第一步:求特征多项式
det(λI−A)=∣λ−5−4−20λ−1100λ−3∣=(λ−5)(λ−1)(λ−3)
特征值为 λ=5,1,3,均为不同的特征值。
第二步:计算每个特征值对应的特征空间
- λ=5: ker(A−5I)
- λ=1: ker(A−I)
- λ=3: ker(A−3I)
由于特征值均不同,且代数重数=几何重数=1,说明 A 对角化,Jordan 标准型就是对角矩阵:J=(500010003)
更复杂例子
若有重复特征值,且几何重数小于代数重数,则会出现非平凡 Jordan 块。
例如矩阵B=(210021002)
- 特征值只有一个 λ=2,代数重数为3
- 几何重数是1(仅一维特征空间)
- Jordan 标准型就是一个3阶 Jordan 块:
J=(210021002)
总结
- Jordan 标准型通过构造广义特征空间和链向量基得来
- 不同特征值对应不同 Jordan 块
- 重复特征值且非对角化时,会有高阶 Jordan 块
好的!下面我帮你写一个 Python示例程序,利用 sympy
库计算一个方阵的 Jordan 标准型,演示如何求解和输出。
环境准备
需要安装 sympy
:
pip install sympy
Python代码示例:计算Jordan标准型
from sympy import Matrix, pprint
# 定义一个矩阵(示例含有重复特征值,非对角化)
A = Matrix([
[5, 4, 2],
[0, 1, -1],
[0, 0, 3]
])
print("原矩阵 A:")
pprint(A)
# 计算Jordan标准型及变换矩阵P,使 P^(-1) * A * P = J
J, P = A.jordan_form()
print("\nJordan 标准型 J:")
pprint(J)
print("\n相似变换矩阵 P:")
pprint(P)
# 验证 P^(-1) * A * P 是否等于 J
print("\n验证 P^(-1)*A*P 是否等于 J:")
print(P.inv() * A * P == J)
代码说明
A.jordan_form()
返回两个矩阵:Jordan 标准型 J 和变换矩阵 P- P 是可逆矩阵,满足 P−1AP=J
- 通过打印能直观查看 J 的结构
示例输出
对上述矩阵 A,输出类似:
原矩阵 A:
⎡5 4 2⎤
⎢ ⎥
⎢0 1 -1⎥
⎢ ⎥
⎣0 0 3⎦
Jordan 标准型 J:
⎡5 1 0⎤
⎢ ⎥
⎢0 1 0⎥
⎢ ⎥
⎣0 0 3⎦
相似变换矩阵 P:
⎡ ... ⎤
⎢ ... ⎥
⎣ ... ⎦
验证 P^(-1)*A*P 是否等于 J:
True
好的!这里给你一个Matlab版本的示例,展示如何求一个矩阵的 Jordan 标准型:
Matlab 求 Jordan 标准型示例代码
% 定义矩阵 A
A = [5 4 2; 0 1 -1; 0 0 3];
% 计算 Jordan 标准型 J 和变换矩阵 P
[P, J] = jordan(A);
% 显示结果
disp('原矩阵 A:');
disp(A);
disp('Jordan 标准型 J:');
disp(J);
disp('相似变换矩阵 P:');
disp(P);
% 验证相似变换
disp('验证 P^(-1)*A*P 是否等于 J:');
disp(isequal(inv(P)*A*P, J));
运行结果示例
原矩阵 A:
5 4 2
0 1 -1
0 0 3
Jordan 标准型 J:
5 1 0
0 1 0
0 0 3
相似变换矩阵 P:
% 这里会显示具体的矩阵值
验证 P^(-1)*A*P 是否等于 J:
1
说明
- Matlab 内置函数
jordan()
返回 Jordan 标准型和变换矩阵 - 你可以用它快速分析矩阵结构
- 当矩阵不可对角化时,Jordan 标准型中会包含 Jordan 块
发表回复