Julia如何从辛解集中求出系数

Julia如何从辛解集中求出系数,julia,sympy,Julia,Sympy,我在朱莉娅身上用符号数学。当我做微分时,结果很好,但是我不能得到系数 using SymPy @vars x y z = x*(10 + 5*x + 4*y) dz = diff(z,x) x_s = solveset(dz,x) 如何从x_s中得到系数?根据我的评论,以下方法可行,但并不完全是我所说的漂亮: julia> x_s.__pyobject__.args[1].__pyobject__.args[1] -1 julia> x_s.__pyobject__.ar

我在朱莉娅身上用符号数学。当我做微分时,结果很好,但是我不能得到系数

using SymPy
@vars x y
z = x*(10 + 5*x + 4*y)
dz = diff(z,x)
x_s = solveset(dz,x)


如何从x_s中得到系数?

根据我的评论,以下方法可行,但并不完全是我所说的漂亮:

julia> x_s.__pyobject__.args[1].__pyobject__.args[1] 
-1  

julia> x_s.__pyobject__.args[1].__pyobject__.args[2] 
-2⋅y 
─────
  5  

julia> x_s.__pyobject__.args[1].__pyobject__.args[2].__pyobject__.args[1]
 -2/5

我在Sympy.jl中找不到一个可以简化这一点的访问器函数,但正如您所说,这可能是您自己滚动的基础。

根据我的评论,以下功能可行,但并不完全是我所说的漂亮:

julia> x_s.__pyobject__.args[1].__pyobject__.args[1] 
-1  

julia> x_s.__pyobject__.args[1].__pyobject__.args[2] 
-2⋅y 
─────
  5  

julia> x_s.__pyobject__.args[1].__pyobject__.args[2].__pyobject__.args[1]
 -2/5

我在Sympy.jl中找不到可以简化此操作的访问器函数,但正如您所说,这可能是您自己滚动的基础。

您可以使用
元素
将有限集的元素作为数组获取:

julia> elements(s)
1-element Array{Sym,1}:
 -2*y/5 - 1
为了获得系数,可以采用不同的方法,但这里我们将该值转换为多项式类型,然后使用其
系数
方法:

julia> p = sympy.Poly(elements(s)[1], y)
Poly(-2/5*y - 1, y, domain='QQ')

julia> p.coeffs()
2-element Array{Sym,1}:
 -2/5
   -1

可以使用
elements
将有限集的元素作为数组获取:

julia> elements(s)
1-element Array{Sym,1}:
 -2*y/5 - 1
为了获得系数,可以采用不同的方法,但这里我们将该值转换为多项式类型,然后使用其
系数
方法:

julia> p = sympy.Poly(elements(s)[1], y)
Poly(-2/5*y - 1, y, domain='QQ')

julia> p.coeffs()
2-element Array{Sym,1}:
 -2/5
   -1

我不确定SymPy.jl中是否有访问器函数,但您可以执行
julia>x_.\u pyobject\u_.args[1]。\u pyobject\u_.args[1]-1 julia>x_.pyobject\u_.args[1]。\u pyobject\u.args[2]-2⋅Y─────   5 julia>x___pyobject__.args[1]。__pyobject__.args[2]。__pyobject__.args[1]-2/5
Beauty!这就是我要找的。我可能可以做一个函数使它看起来更干净。如果有更直接的答案,请告诉我。如果你不把这个作为答案提交,我会接受。如果你使用
solve
而不是
solveset
,可能会更容易。我不确定symphy.jl中是否有访问函数,但是你可以做
julia>x_-pyobject\uuuuuuuuu.args[1]。\uuuu-pyobject\uuuuuuu.args[1]-1 julia>x_uuuu.args.\uuuu-pyobject\uuuuuuu.args.\uuuuuuuuuu.args[2]-2⋅Y─────   5 julia>x___pyobject__.args[1]。__pyobject__.args[2]。__pyobject__.args[1]-2/5
Beauty!这就是我要找的。我可能可以做一个函数使它看起来更干净。如果有更直接的答案,请告诉我。如果您不将此作为答案提交,我将接受。如果您使用
solve
而不是
solveset
,可能会更容易。