【发布时间】:2021-08-24 02:35:38
【问题描述】:
我正在尝试使用 Sympy 中的 dsolve 函数解决以下简单的 ODE
v = sp.Function('v', real=True)
t, g, m, c = sp.symbols('t g m c', positive=True, real=True)
eq = sp.Eq(v(t).diff(t), g - c/m*v(t)**2)
sol = sp.dsolve(eq, v(t), ics={v(0):0})
结果并不像预期的那么简单,但奇怪的是,如果您检查解决方案以确保满足给定的初始条件,它不会返回正确的结果 (v(0)=0),因为传入dsolve by ics 参数。
sol.subs(t,0)
【问题讨论】:
-
你使用什么版本的 sympy,
print(sympy.__version__)?您的版本中的文档是否保证 ics 参数将在解决方案中使用?请参阅stackoverflow.com/questions/41192748/… 和相关人员。 -
@Lutz Lehmann,感谢您的关注。我正在使用最新版本。
ics参数现在功能齐全。 -
看起来像一个 sympy 错误。它无法用新的常数替换复合常数。此外,它过早地简化为 1/tanh,这会阻止在时间为零的合理表达式。如果滥用复数对数,给定的解决方案仍然可能是正确的,但这不是必需的。