# ty_ordschur
在舒尔分解中将特征值重新排序
函数库: TyMath
# 语法
US,TS = ty_ordschur(U,T,select)
US,TS = ty_ordschur(U,T,keyword)
US,TS = ty_ordschur(U,T,clusters)
# 说明
US,TS = ty_ordschur(U,T,select) 对 T,U = schur(X) 生成的 Schur 分解
US,TS = ty_ordschur(U,T,keyword) 设置选定的组以包含 keyword 指定的区域中的所有特征值。示例
US,TS = ty_ordschur(U,T,clusters) 同时对多个组重新排序。ty_ordschur 沿 TS 的对角线按降序排列指定的组,具有最高索引的组位于左上角。
# 示例
重新排序 Schur 分解
计算一个矩阵的 Schur 分解因子,然后根据指定的特征值顺序对因子进行重新排序。
计算矩阵 X 的 Schur 分解。Schur 分解生成上拟三角矩阵 T 和酉矩阵 U,从而使得
using TyMath
X = magic(6);
T,U = schur(X);
T = 6×6 Matrix{Float64}:
111.0 3.94381e-14 -1.44251e-14 1.28541e-15 2.04404e-14 -1.27145e-14
0.0 27.0 6.79416e-26 -28.3164 -15.5885 -13.0454
0.0 0.0 -27.0 18.0 22.0454 -12.7279
0.0 0.0 0.0 9.79796 -3.18162e-15 6.9282
0.0 0.0 0.0 0.0 -2.76705e-15 2.03879e-15
0.0 0.0 0.0 0.0 0.0 -9.79796
U = 6×6 Matrix{Float64}:
0.408248 -0.288675 0.408248 0.574915 0.5 -0.0529729
0.408248 0.57735 0.408248 -0.333333 1.18373e-16 -0.471405
0.408248 -0.288675 0.408248 -0.241582 -0.5 0.524377
0.408248 0.288675 -0.408248 0.574915 -0.5 -0.0529729
0.408248 -0.57735 -0.408248 -0.333333 -2.77631e-16 -0.471405
0.408248 0.288675 -0.408248 -0.241582 0.5 0.524377
由于 T 是三角矩阵,因此 T 的对角线包含原始矩阵 X 的特征值。
对 Schur 分解进行重新排序,使特征值位于两个组中,负特征值组在 TS 的对角线上先出现。
US,TS = ty_ordschur(U,T,"lhp")
US = 6×6 Matrix{Float64}:
0.408248 -0.288675 -0.274621 0.408248 0.482644 0.524377
0.408248 -0.288675 -0.298996 0.408248 -0.521261 -0.471405
0.408248 0.57735 0.573617 0.408248 0.0386168 -0.0529729
-0.408248 0.288675 -0.207451 0.408248 -0.515098 0.524377
-0.408248 0.288675 -0.366165 0.408248 0.476481 -0.471405
-0.408248 -0.57735 0.573617 0.408248 0.0386168 -0.0529729
TS = 6×6 Matrix{Float64}:
-27.0 -19.0919 -18.6997 2.19032e-14 9.78876 12.7279
0.0 -2.76705e-15 0.379968 3.53971e-14 15.6493 15.5227
0.0 0.0 -9.79796 8.94669e-15 -2.4773 -8.71848
0.0 0.0 0.0 111.0 -3.05483e-14 -8.66501e-15
0.0 0.0 0.0 0.0 27.0 26.36
0.0 0.0 0.0 0.0 0.0 9.79796
验证结果正确性:
isapprox(X,US*TS*US')
ans = true
# 输入参数
U — 酉矩阵矩阵
酉矩阵,指定为由 T,U = schur(X) 返回的矩阵 U。矩阵 U 满足属性
如果 U 和 T 不能形成有效的 Schur 分解,则 ty_ordschur 不会报错,但返回的结果不正确。
数据类型: Number
复数支持: 是
T — Schur 矩阵逻辑向量
select — 组选择器逻辑向量
组选择器,指定为逻辑向量,其长度等于特征值的数量。特征值沿 T,U = schur(X) 生成的矩阵 T 的对角线排列。
数据类型: Bool
keyword — 特征值区域关键字"lhp" | "rhp" | "udi" | "udo"
特征值区域关键字,指定为下表中的选项之一。
| 选项 | 选定区域 (e=ordeig(T)) |
|---|---|
| "lhp" | 左半平面 (real(e) < 0) |
| "rhp" | 右半平面 (real(e) >= 0) |
| "udi" | 单位圆盘的内部 (abs(e) < 1) |
| "udo" | 单位圆盘的外部 (abs(e) >= 1) |
clusters — 组索引正整数向量
组索引,指定为正整数向量,其长度等于特征值的数量。clusters 将 e = ordeig(T) 返回的每个特征值赋给不同的组。clusters 中具有相同索引值的所有特征值形成一个组。
示例: ty_ordschur(U,T,[1, 1, 2, 3, 3]) 将五个特征值分成三个组。
数据类型; Integer
# 输出参数
US, TS — 重新排序后的矩阵矩阵
重新排序后的矩阵,返回满足
US 是酉矩阵,TS 是拟三角矩阵。
# 详细信息
拟三角矩阵
上部拟三角矩阵可由实矩阵的 Schur 分解或广义 Schur (QZ) 分解产生。这些矩阵是分块上三角矩阵,对角线上为 1×1 和 2×2 的分块。
这些对角块的特征值也是矩阵的特征值。1×1 块对应于实数特征值,2×2 块对应于复共轭特征值对。
# 提示
如果 T 具有复共轭对(非零元素在子对角线上),则应将该对移动到相同的组中。否则,ty_ordschur 将使该对保持在一起:
如果一个共轭对的两个特征值具有不同的 select 设置,ty_ordschur 会认为二者都被选中;
如果一个共轭对的两个特征值具有不同的 clusters 设置,ty_ordschur 会认为二者都属于索引值较大的那个组。
# 参考文献
[1] Kressner, Daniel. “Block Algorithms for Reordering Standard and Generalized Schur Forms.” ACM Transactions on Mathematical Software 32, no. 4 (December 2006): 521–532. https://doi.org/10.1145/1186785.1186787.