在带有sympypython的微分方程组的解中使用符号

如何解决在带有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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?