矩阵的特征值,假设对称

Eigenvalues of a matrix, assuming symmetry

我试图在 Julia 中找到以下 2 X 2 矩阵(等于 a)的特征值:

2×2 Array{Float64,2}:
0.120066  0.956959
0.408367  0.422321

我在 R 中有相同的数组,运行使用以下 R 命令我得到了这个输出:

eigen(a, symmetric=T, only.values=T)
$values
[1]  0.706626 -0.164245

然而,在 Julia 中,当我 运行 这个命令时,我得到这个输出:

eigvals(LowerTriangular(a))
2-element Array{Float64,1}:
0.120066
0.422321

有没有办法在 Julia 中为对称矩阵复制 R eigen() 函数,因为我使用 LowerTriangular 函数的方法不起作用?

> x
         [,1]     [,2]
[1,] 0.120066 0.956959
[2,] 0.408367 0.422321

在 Julia 中,eigvals(LowerTriangular(a)) 计算 x 的下三角部分的特征值(即严格上三角部分的条目设置为 0):

> xx <- x
> xx[1,2] <- 0
> eigen(xx, only.values = TRUE)
$values
[1] 0.422321 0.120066 # same as Julia

而在 R 中,eigen(x, symmetric=TRUE) 假设 x 是对称的,并采用下三角部分导出其他条目:

> xx <- x
> xx[1,2] <- x[2,1]
> eigen(xx, only.values = TRUE)
$values
[1]  0.7066279 -0.1642409
> eigen(x, only.values = TRUE, symmetric = TRUE)
$values
[1]  0.7066279 -0.1642409

像这样使用Symmetric函数:

julia> eigvals(Symmetric(x, :L))
2-element Array{Float64,1}:
 -0.164241
  0.706628

从 Julia 0.7 开始,您将不得不使用 using LinearAlgebra 来导入函数。