SymPy未显示的微分方程解

问题描述 投票:1回答:2

在下面的代码中,我首先求解了一个微分方程,但是,当我检查它是否是解时,似乎不是。 (以下代码返回False。)我在做什么错?

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)

python python-3.x sympy symbolic-math
2个回答
1
投票

您需要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


1
投票

如果只想检查解决方案,则可以使用checkodesol

>>> checkodesol(expr, solution)
(True, 0)

((它会自动处理可能会使检查解决方案变得复杂的简化和其他细节。)

© www.soinside.com 2019 - 2024. All rights reserved.