我试图在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
函数的方法无法正常工作?
答案 0 :(得分:4)
像这样使用Symmetric
函数:
julia> eigvals(Symmetric(x, :L))
2-element Array{Float64,1}:
-0.164241
0.706628
从Julia 0.7开始,您将必须使用using LinearAlgebra
来导入函数。
答案 1 :(得分:3)
> 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