julia - 与在 python 中使用 SymPy 相比,SymPy.jl 奇怪的特征值报告

标签 julia sympy

Python 中的 SymPy:

>>> M = Matrix([[-4, sqrt(2)], [sqrt(2), -5]])
>>> M
Matrix([
[     -4, sqrt(2)],
[sqrt(2),      -5]])
>>> dict_eig = M.eigenvals()
>>> dict_eig
{-6: 1, -3: 1}

SymPy.jl( Julia ):

julia> M = sympy.Matrix([[-4, sqrt(2)], [sqrt(2), -5]])
2×2 Array{Sym,2}:
 -4.00000000000000   1.41421356237310
  1.41421356237310  -5.00000000000000

julia> dict_eig = M.eigenvals()
Dict{Any,Any} with 2 entries:
  -9/2 - sqrt(225000000000001400410360361)/10000000000000 => 1
  -9/2 + sqrt(225000000000001400410360361)/10000000000000 => 1

结果实际上是正确的,但很奇怪..为什么会这样以及如何获得Python中报告的表单?

最佳答案

您在 python 版本中隐式使用 sympy 的 sqrt 实现。如果直接调用 sympy 的 sqrt,您将得到相同的结果。

julia> M = [[-4 sympy.sqrt(2)]; [sympy.sqrt(2) -5]]
2×2 Array{Sym,2}:
      -4  sqrt(2)
 sqrt(2)       -5

julia> M.eigenvals()
Dict{Any,Any} with 2 entries:
  -3 => 1
  -6 => 1

关于julia - 与在 python 中使用 SymPy 相比,SymPy.jl 奇怪的特征值报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58276470/

相关文章:

python - 强制 SymPy 保持术语的顺序

julia - Julia 中的特征分解和 "composition"

julia - 在 JULIA 中,我如何预分配一个包含 n 行的 Measurements.jl 向量?

Julia 预分配数组与 MATLAB 预分配数组

python sympy 不能很好地分解 bool 多项式

python - 当我在 sympy 中使用solve()时,变量列表为空?

Python使用sympy求解三次方程

if-statement - Julia 中的一个简单的 'if' 语句将我的主筛的运行时间增加了 15 倍——为什么?

julia - 使用Measurements.jl 变量填充 Julia 中的数组

python - 如何获取函数所属的变量列表?