我试图在 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
函数的方式不起作用?
像这样使用Symmetric
函数:
julia> eigvals(Symmetric(x, :L))
2-element Array{Float64,1}:
-0.164241
0.706628
从 Julia 0.7 开始,您将不得不使用 using LinearAlgebra
来导入函数。
> 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