Sympy 用辛方法求解常微分方程
我在解一个常微分方程:Sympy 用辛方法求解常微分方程,sympy,ode,Sympy,Ode,我在解一个常微分方程: from sympy import * E5 = Function('E5') t = Symbol('t') ode = Eq(Derivative(E5(t), t), -3*E5(t)/(-10*sqrt(6) + 30) + sqrt(6)*E5(t)/(-10*sqrt(6) + 30) - 67*sqrt(2)*exp(-sqrt(3)*t/10)/(200*(-sqrt(6) + 3)) +
from sympy import *
E5 = Function('E5')
t = Symbol('t')
ode = Eq(Derivative(E5(t), t),
-3*E5(t)/(-10*sqrt(6) + 30)
+ sqrt(6)*E5(t)/(-10*sqrt(6) + 30)
- 67*sqrt(2)*exp(-sqrt(3)*t/10)/(200*(-sqrt(6) + 3))
+ sqrt(3)*exp(-sqrt(3)*t/10)/(10*(-sqrt(6) + 3))
+ 47*sqrt(2)*exp(-sqrt(2)*t/10)/(200*(-sqrt(6) + 3)))
dsolve(ode)
它可以工作(等待几分钟后),但一旦我用函数('E5',real=True)
替换函数('E5',real=True)
或符号('t')
替换符号('t',real=True)
,它就会失败。也就是说,dsolve(ode)引发TypeError(“eq应该是相等的实例”)。这是因为dsolve(ode,simplify=False)返回False而不是表达式。后者我不知道为什么。在假设中使用dsolve是不可能的吗?我需要它们,因为它们可以让我简化表达式,否则我的表达式会变得太复杂,计算时间也太长
你知道为什么会发生这种情况吗?看起来确实是因为
simplify=False
版本返回False
。在我看来,这似乎是一个错误。起初我认为这可能会发生,因为只有复杂的解决方案存在,但返回的解决方案不包含任何复杂的数字,因此我相信它在reals中也是一个很好的解决方案。看起来确实是因为simplify=False
版本返回False
。在我看来,这似乎是一个错误。起初我认为它可能会发生,因为只有复杂的解决方案存在,但返回的解决方案不包含任何复杂的数字,所以我相信它在reals中也是一个很好的解决方案。