我们如何用 Julia 语言对实矩阵和反对称矩阵执行真正的 schur 分解(Youla 分解)?

问题描述 投票:0回答:1

我想将一个实数和反对称矩阵转换为分块对角线形式。请问julia中有没有函数可以实现呢?

julia linear-algebra
1个回答
0
投票

由于可以使用标准

eigen
从原始矩阵中获取特征值,因此可以构建结果。这在目前的形式中可能是错误的,但它是一个概念验证:

using Random
Random.seed!(123)

A = randn(6, 6)
B = A - A'
# B will be the matrix we want to decomposition on

egv = eigen(B).values
F = [(iseven((i+j)÷2) || (abs(i-j) != 1)) ?
  0.0 : sign(j-i)*abs(egv[max(i,j)]) 
  for i in axes(B,1), j in axes(B,2)]

现在

F
看起来像:

6×6 Matrix{Float64}:
  0.0      4.72892   0.0      0.0       0.0       0.0
 -4.72892  0.0       0.0      0.0       0.0       0.0
  0.0      0.0       0.0      1.28596   0.0       0.0
  0.0      0.0      -1.28596  0.0       0.0       0.0
  0.0      0.0       0.0      0.0       0.0       0.634589
  0.0      0.0       0.0      0.0      -0.634589  0.0

并且具有相同的特征值。

eigen
已经很优化了,所以这个方法应该是有竞争力的。请注意,对于奇数大小的矩阵,实特征值也参与其中,这必须单独处理(也许将
egv
中的值显式配对可能是明智的)。

© www.soinside.com 2019 - 2024. All rights reserved.