2026a

# ordschur


在 Schur 分解/广义 Schur(QZ) 分解中将特征值重新排序

函数库: TyMath

# 语法

TS,US,Z = ordschur(S, select)
AAS,BBS,QS,ZS,Z,W = ordschur(Q, select)

# 说明

TS,US,Z = ordschur(S, select) 对 S = schur(X) 生成的 Schur 分解 重新排序,并返回重新排序后的舒尔矩阵 TS 以及正交矩阵 US,从而使得 示例


AAS,BBS,QS,ZS,Z,W = ordschur(Q, select) 对由 Q = schur(A,B) 生成的广义 Schur(QZ) 分解 重新排序,并返回重新排序后的矩阵对组 (AAS,BBS) 以及正交矩阵 (QS,ZS),从而使得

# 示例

重新排序 Schur 分解

计算一个矩阵的 Schur 分解因子,然后根据指定的特征值顺序对因子进行重新排序。

计算矩阵 X 的 Schur 分解。Schur 分解生成上拟三角矩阵 T 和酉矩阵 U,从而使得 X = UTU'。

using TyMath
X = magic(6);
F1 = schur(X)
Schur{Float64, Matrix{Float64}, Vector{Float64}}
T factor:
6×6 Matrix{Float64}:
 111.0   1.87624e-14   -1.14896e-14    1.1461e-14    9.70822e-15    4.20658e-15
   0.0  27.0           -4.88498e-15  -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      -1.86243e-14    6.9282
   0.0   0.0            0.0            0.0          -6.3302e-15     1.33907e-14
   0.0   0.0            0.0            0.0           0.0           -9.79796
Z factor:
6×6 Matrix{Float64}:
 0.408248  -0.288675   0.408248   0.574915   0.5          -0.0529729
 0.408248   0.57735    0.408248  -0.333333   3.04991e-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   3.38555e-16  -0.471405
 0.408248   0.288675  -0.408248  -0.241582   0.5           0.524377
eigenvalues:
6-element Vector{Float64}:
 111.00000000000001
  27.000000000000032
 -26.99999999999997
   9.79795897113268
  -6.3301965765857146e-15
  -9.797958971132712

由于 T 是三角矩阵,因此 T 的对角线包含原始矩阵 X 的特征值。

对 Schur 分解进行重新排序,使特征值位于两个组中,负特征值组在 TS 的对角线上先出现。

select = F1.values .< 0
TS,US,Z = ordschur(F1,select)
TS = 6×6 Matrix{Float64}:
 -27.0  19.0919      -18.6997     -1.39024e-14    9.78876       12.7279
   0.0  -6.3302e-15   -0.379968    1.62068e-14  -15.6493       -15.5227
   0.0   0.0          -9.79796     2.41216e-15   -2.4773        -8.71848
   0.0   0.0           0.0       111.0            1.45074e-14   -8.70856e-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

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

Z = 6-element Vector{Float64}:
 -26.99999999999997
  -6.3301965765857146e-15
  -9.797958971132712
 111.00000000000001
  27.000000000000032
   9.79795897113268

在 CentOS 结果会不一致。

重新排序 QZ (广义 Schur)分解

计算一对矩阵的 QZ 分解,然后根据指定的特征值顺序对因子重新排序。

计算一对矩阵 A 和 B 的 QZ 分解或广义舒尔分解。此分解生成因子

A = magic(5);
B = hilb(5);
F = schur(A,B)
AA,BB,Q,Z =F
AA = 5×5 Matrix{Float64}:
 14.5272   -2.35171    8.57566  -0.234984   -1.44317
  0.0     -19.7471     2.18242   4.54173     7.20586
  0.0       0.0      -17.9538    8.9292     -9.69607
  0.0       0.0        0.0      30.3449    -47.9191
  0.0       0.0        0.0       0.0        32.4399

BB = 5×5 Matrix{Float64}:
 5.03171e-6  0.000524482  0.00184177  0.0464795   0.230412
 0.0         0.000767259  0.0198901   0.166215    0.732011
 0.0         0.0          0.0209794   0.100644   -0.134072
 0.0         0.0          0.0         0.0622709  -1.13803
 0.0         0.0          0.0         0.0         0.743385

Q = 5×5 Matrix{Float64}:
 -0.174273   -0.756678   -0.40098     0.417799   -0.248449
 -0.109878   -0.115123    0.678227   -0.0296611  -0.7168
 -0.0788907  -0.0845914   0.547836    0.647261    0.517251
 -0.46903     0.617159   -0.266407    0.488316   -0.2995
  0.855186    0.16169    -0.0901451   0.408858   -0.259273

Z = 5×5 Matrix{Float64}:
  0.00574209  -0.0424093  -0.291396  -0.586024  -0.754872
 -0.112544     0.410928    0.763515   0.17338   -0.453274
  0.49954     -0.674583    0.148597   0.405259  -0.330275
 -0.769396    -0.213976   -0.261376   0.474868  -0.261585
  0.381825     0.573142   -0.491665   0.486601  -0.217261

由于 AA 和 BB 都是三角矩阵,因此使用 ordeig 从 AA 和 BB 的对角块中提取特征值。

e = ordeig(AA,BB)
5-element Vector{Float64}:
      2.8871370730664823e6
 -25737.233381612637
   -855.7816814087191
    487.3038494509818
     43.638140796939986

将特征值分成组,由正实数特征值 (e > 0) 构成起始组。根据此特征值顺序,对矩阵 AA、BB、Q 和 Z 重新排序。

select = real(F.values) .> 0
F1 = ordschur(F,select)
AAS,BBS,QS,ZS = F1
AAS = 5×5 Matrix{Float64}:
 14.5272  -1.28491    1.03911   -7.68213    4.41186
  0.0     21.7128   -19.1784    -1.83801    9.11867
 -0.0     -0.0       60.3083     8.44521   -6.43043
  0.0      0.0        0.0      -18.2081     3.37833
 -0.0     -0.0       -0.0       -0.0      -14.6375

BBS = 5×5 Matrix{Float64}:
  5.03171e-6   0.0113821   0.190768    0.111939     0.0787507
  0.0          0.0445571   0.0377085   0.110747     0.197822
 -0.0         -0.0         1.38201     0.632462     0.280656
  0.0          0.0         0.0         0.00070746  -0.0137179
 -0.0         -0.0        -0.0        -0.0          0.0171043

QS = 5×5 Matrix{Float64}:
 -0.174273   -0.6353    -0.703397   0.141524  -0.226333
 -0.109878    0.185289  -0.451831  -0.20355    0.841434
 -0.0788907   0.409913  -0.345626  -0.705419  -0.456808
 -0.46903     0.576505  -0.22946    0.60653   -0.164689
  0.855186    0.248344  -0.359126   0.270266  -0.070476

ZS = 5×5 Matrix{Float64}:
  0.00574209  -0.00879458  -0.528775  -0.359108  -0.768979
 -0.112544    -0.609486    -0.385752  -0.473706   0.492603
  0.49954      0.647792    -0.271117  -0.364381   0.352914
 -0.769396     0.417635    -0.408983   0.175014   0.188978
  0.381825    -0.185462    -0.575171   0.695155   0.0758454

检查新的特征值顺序。

E2 = ordeig(AAS,BBS)
5-element Vector{Float64}:
      2.8871370730664823e6
    487.3038494509819
     43.638140796939986
 -25737.233381613132
   -855.78168140872

# 输入参数

select — 选择器
Union{Vector{Bool},BitVector}

组选择器,指定为逻辑向量,其长度等于特征值的数量。特征值沿 U,T,S = schur(X) 生成的矩阵 T 的对角线排列。

Q — 广义 Schur(QZ) 分解对象
方阵
由广义 Schur(QZ) 分解生成的对象。

# 输出参数

US,TS,AAS,BBS,QS,ZS — 重新排序后的矩阵
矩阵

重新排序后的矩阵。

  • 对于 Schur 分解,返回满足 的矩阵。US 是酉矩阵,TS 是拟三角矩阵
  • 对于广义 Schur(QZ) 分解,返回满足 QSAZS = AAS 和 QSBZS = BBS 的矩阵。QS 和 ZS 是酉矩阵,而 AAS 是拟三角矩阵,BBS 是三角矩阵。
Z,W — 重新排序后的特征值
矩阵

重新排序后的特征值。

# 详细信息

拟三角矩阵

上部拟三角矩阵可由实矩阵的舒尔分解或广义舒尔 (QZ) 分解产生。上拟三角矩阵是分块上三角矩阵,沿对角线是由非零值组成的 1×1 和 2×2 分块。

这些对角块的特征值也是矩阵的特征值。1×1 块对应于实数特征值,2×2 块对应于复共轭特征值对。

酉矩阵

如果可逆复数方阵 U 的共轭转置也是其逆矩阵,即 ,则该矩阵是酉矩阵。

# 另请参阅

schur | eigen | rsf2csf