如何解决在带有sympypython的微分方程组的解中使用符号
我正在尝试使用来自sympy的dsolve解决2个耦合ODE:
import sympy as sp
t,gamma = sp.symbols('t,gamma',real=True)
rho1,rho2 = sp.symbols('rho_1,rho_2',cls=Function)
drho1 = sp.Derivative(rho1(t),t)
drho2 = sp.Derivative(rho2(t),t)
eq1 = sp.Eq(drho1,- 2*gamma*(rho1(t) - rho2(t)))
eq2 = sp.Eq(drho2,- 2*(rho2(t) + rho1(t)))
eq = (eq1,eq2)
sp.dsolve(eq)
问题是,当将 gamma 符号(这是一个未定义的常量)如上所述添加到我的方程式时,出现以下错误消息:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-15-e7f194f9576a> in <module>()
13 eq = (eq1,eq2)
14
---> 15 sp.dsolve(eq,ics=ics)
3 frames
/usr/local/lib/python3.6/dist-packages/sympy/core/relational.py in __nonzero__(self)
193
194 def __nonzero__(self):
--> 195 raise TypeError("cannot determine truth value of Relational")
196
197 __bool__ = __nonzero__
TypeError: cannot determine truth value of Relational
当我删除伽玛时,解决方案很好。使用sympy在ODE解决方案中可以使用符号吗?
解决方法
您使用的是什么版本的sympy?
这在1.6.2下工作正常:
In [4]: eqs = [eq1,eq2]
In [5]: eqs
Out[5]:
⎡d d ⎤
⎢──(ρ₁(t)) = -2⋅γ⋅(ρ₁(t) - ρ₂(t)),──(ρ₂(t)) = -2⋅ρ₁(t) - 2⋅ρ₂(t)⎥
⎣dt dt ⎦
In [6]: sol = dsolve(eqs)
In [7]: sol
Out[7]:
⎡ ⎛ ______________ ⎞ ⎛ ______________ ⎞ ⎛ ______________ ⎞ ⎛ ______________ ⎞
⎢ ⎜ ╱ 2 ⎟ ⎜ ╱ 2 ⎟ ⎜ ╱ 2 ⎟ ⎜ ╱ 2 ⎟
⎢ ⎜γ ╲╱ γ - 6⋅γ + 1 1⎟ t⋅⎝-γ - ╲╱ γ - 6⋅γ + 1 - 1⎠ ⎜γ ╲╱ γ - 6⋅γ + 1 1⎟ t⋅⎝-γ + ╲╱ γ - 6⋅γ + 1 - 1⎠
⎢ρ₁(t) = C₁⋅⎜─ + ───────────────── - ─⎟⋅ℯ + C₂⋅⎜─ - ───────────────── - ─⎟⋅ℯ,ρ₂(
⎣ ⎝2 2 2⎠ ⎝2 2 2⎠
⎛ ______________ ⎞ ⎛ ______________ ⎞⎤
⎜ ╱ 2 ⎟ ⎜ ╱ 2 ⎟⎥
t⋅⎝-γ - ╲╱ γ - 6⋅γ + 1 - 1⎠ t⋅⎝-γ + ╲╱ γ - 6⋅γ + 1 - 1⎠⎥
t) = C₁⋅ℯ + C₂⋅ℯ ⎥
⎦
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。