2026a

# 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 分解 重新排序,并返回重新排序后的 Schur 矩阵 TS 以及正交矩阵 US,从而使得 。在此重新排序中,选定的特征值组出现在拟三角 Schur 矩阵 TS 的主(左上方)对角块中。对应的不变子空间为 US 的前导列所涵盖。逻辑向量 select 指定选定的组为 e[select],其中 e = ordeig(T)。


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 矩阵
逻辑向量

Schur 矩阵,指定为由 T,U = schur(X) 返回的拟三角矩阵 T。矩阵 U 满足属性

数据类型: Number

复数支持:

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.

# 另请参阅

schur | eigen