如何在 Sympy 中除以属于 y 的变量

How to divide by variable that belongs to y in Sympy

我正在制作一个可分离的微分方程求解器。为了制作一个由 x 和 y 变量分隔的表达式,我必须将右侧的表达式除以属于 s 的每个变量,例如 sin(y), e**y, y**2, ... 我正在使用 Sympy

def equationseparator(diffeq):
    x, y, z, e= sym.symbols("x y z e")

    separateddiff, separatedeq = diffeq.split("=")
    variables_of_eq = re.split('[(|)]', separatedeq)
    eq = sym.parse_expr(separatedeq)
    variables_of_eq_ordered = []
    variables_of_eq_ord_var = []

    for var in variables_of_eq:
        if var == " * " or var == "":
           pass
    else:
        variables_of_eq_ordered.append(var)
    for var in variables_of_eq_ordered:
        var = sym.Symbol(var)
        variables_of_eq_ord_var.append(var)

    print(sym.simplify(separatedeq))
    print(variables_of_eq_ordered)
    print(variables_of_eq_ord_var)

equationseparator("dy/dx=(6 * x) * (y) * (e**y)")

通过使用 variables_of_eq_ord_var 我得到了所有变量并追加到列表中。我想选择所有属于 y 的表达式。但是我做不到。提前致谢!

既然你在使用 SymPy,为什么不使用它的求解器来求解这样的方程呢?

>>> from sympy import S, Function
>>> from sympy.abc import x
>>> f = Function('f')
>>> S('dydx-6*x*y*exp(y)').subs(y,f(x)).subs('dydx',f(x).diff(x))
-6*x*f(x)*exp(f(x)) + Derivative(f(x), x)
>>> dsolve(_)
Eq(Ei(exp_polar(I*pi)*f(x)), C1 + 3*x**2)

否则,如果您有因子的乘积并且想要那些包含特定符号的因子,您可以使用 as_independent 来分隔它们:

>>> nony, withy = (x*y*exp(y)).as_independent(y); (nony, withy)
(x, y*exp(y))