为什么Julia中特征值的计算结果不是整数?

为什么Julia中特征值的计算结果不是整数?,julia,eigenvalue,Julia,Eigenvalue,我期望特征值0,1,3,这是我从WolframAlpha和SageMath得到的。发生了什么事 julia> using LinearAlgebra julia> eigvals([1 -1 0; -1 2 -1; 0 -1 1]) 3-element Array{Float64,1}: 3.9250536344271737e-17 0.9999999999999998 3.0 基本上是这样。这些基本上是0、1和3;只是有一些错误。特别值得注意的是,整数矩阵的特征值并不总是

我期望特征值0,1,3,这是我从WolframAlpha和SageMath得到的。发生了什么事

julia> using LinearAlgebra

julia> eigvals([1 -1 0; -1 2 -1; 0 -1 1])
3-element Array{Float64,1}:
 3.9250536344271737e-17
 0.9999999999999998
 3.0

基本上是这样。这些基本上是0、1和3;只是有一些错误。特别值得注意的是,整数矩阵的特征值并不总是整数。这是预期的行为。Wolfram和Sage可能以符号方式计算小矩阵的特征值。Julia像Matlab、Numpy等都是用数值计算的,在那里你可以预期浮点误差。您看到的错误与这些其他语言一致。@DNF是,使用Numpy:in[5]:printCharacterizers:,np.linalg.eigvalsnp.mat1-1 0-1 2 -1; ...: 0-11特征值:[3.00000000e+00100000000E+00-3.36770206e-17]它们基本上是。这些基本上是0、1和3;只是有一些错误。特别值得注意的是,整数矩阵的特征值并不总是整数。这是预期的行为。Wolfram和Sage可能以符号方式计算小矩阵的特征值。Julia像Matlab、Numpy等都是用数值计算的,在那里你可以预期浮点误差。您看到的错误与这些其他语言一致。@DNF是,使用Numpy:in[5]:printCharacterizers:,np.linalg.eigvalsnp.mat1-1 0-1 2 -1; ...: 0-11特征值:[3.00000000e+001.00000000e+00-3.36770206e-17]