如何在 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))
我正在制作一个可分离的微分方程求解器。为了制作一个由 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))