假设对称的矩阵特征值

时间:2018-08-07 16:19:18

标签: r julia linear-algebra

我试图在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函数的方法无法正常工作?

2 个答案:

答案 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