SymPy 未显示微分方程解
Differential equation solution not shown by SymPy
在下面的代码中,我首先求解一个微分方程,但是,当我检查它是否是一个解时,它似乎不是。 (以下代码returns错误。)我做错了什么?
import sympy as sy
t = sy.symbols('t')
y = sy.symbols('y', cls=sy.Function)
expr = y(t).diff(t, t) + 3*y(t).diff(t) + 2*y(t) - 4*t
solution = sy.dsolve(sy.Eq(expr, 0)).rhs
print(expr.subs(y(t), solution).simplify() == 0)
您需要 doit()
才能有效地评估导数:expr.subs(y(t), solution).doit()
import sympy as sy
t = sy.symbols('t')
y = sy.symbols('y', cls=sy.Function)
expr = y(t).diff(t, t) + 3*y(t).diff(t) + 2*y(t) - 4*t
solution = sy.dsolve(sy.Eq(expr, 0)).rhs
print(expr.subs(y(t), solution).doit().simplify() == 0)
打印 True
如果只想查看解决方案,可以使用checkodesol
:
>>> checkodesol(expr, solution)
(True, 0)
(它会自动处理可能会使检查解决方案复杂化的简化和其他细节。)
在下面的代码中,我首先求解一个微分方程,但是,当我检查它是否是一个解时,它似乎不是。 (以下代码returns错误。)我做错了什么?
import sympy as sy
t = sy.symbols('t')
y = sy.symbols('y', cls=sy.Function)
expr = y(t).diff(t, t) + 3*y(t).diff(t) + 2*y(t) - 4*t
solution = sy.dsolve(sy.Eq(expr, 0)).rhs
print(expr.subs(y(t), solution).simplify() == 0)
您需要 doit()
才能有效地评估导数:expr.subs(y(t), solution).doit()
import sympy as sy
t = sy.symbols('t')
y = sy.symbols('y', cls=sy.Function)
expr = y(t).diff(t, t) + 3*y(t).diff(t) + 2*y(t) - 4*t
solution = sy.dsolve(sy.Eq(expr, 0)).rhs
print(expr.subs(y(t), solution).doit().simplify() == 0)
打印 True
如果只想查看解决方案,可以使用checkodesol
:
>>> checkodesol(expr, solution)
(True, 0)
(它会自动处理可能会使检查解决方案复杂化的简化和其他细节。)