Python Sympy:求解具有初始条件误差的微分方程

Python Sympy:求解具有初始条件误差的微分方程,python,sympy,differential-equations,Python,Sympy,Differential Equations,自symphyversion 1.2以来,pythonsymphy已经实现了在给定一些初始条件的情况下求解简单微分方程中的常数的能力。我试图测试这个特性,但是不断地遇到一个我不知道如何解决的错误 表示初始条件的以下格式,我试图遵循实现该特性的实际pull请求中指定的格式。下面是代码和错误 import sympy as sp t = sp.symbols('t') x = sp.Function('x')(t) diffeq = sp.Eq(x.diff(t,t) - x, sp.cos(t

symphy
version 1.2以来,python
symphy
已经实现了在给定一些初始条件的情况下求解简单微分方程中的常数的能力。我试图测试这个特性,但是不断地遇到一个我不知道如何解决的错误

表示初始条件的以下格式,我试图遵循实现该特性的实际pull请求中指定的格式。下面是代码和错误

import sympy as sp

t = sp.symbols('t')
x = sp.Function('x')(t)

diffeq = sp.Eq(x.diff(t,t) - x, sp.cos(t))
res = sp.dsolve(diffeq, t, ics={x(0): 0, 
                            x.diff(t).subs(t, 0): 0})
错误是:

Traceback (most recent call last):

  File "<ipython-input-20-75c3e1d53138>", line 1, in <module>
    res = sp.dsolve(diffeq, t, ics={x(0): 0, sp.diff(x(t), t).subs(t,0): 0})

TypeError: 'x' object is not callable
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
res=sp.dsolve(differq,t,ics={x(0):0,sp.diff(x(t),t).subs(t,0):0})
TypeError:“x”对象不可调用

我不太喜欢使用Symphy,但我是用它来工作的- 问题是,当您定义
x=sp.Function('x')(t)
时,您已经得到了 将参数
t
传递给它,并且不能再在第行为它传递
0
res=sp.dsolve(diffeq,t,ics={x(0):0,sp.diff(x(t),t).subs(t,0):0})
- 用(t)调用
x
,使其成为“定义函数”

因此,将
x
作为一个未定义的函数,只在创建微分方程时所需的点中传递
t
,这是一种方法:


将sympy作为sp导入
t=sp.SYMBOL('t')
x=sp.Function('x')
差分q=sp.Eq(x(t).差分(t,t)-x(t),sp.cos(t))
res=sp.dsolve(diffeq,ics={x(0):0,sp.diff(x(t),t).subs(t,0):0})
(另外,尝试在第二个参数do dsolve中传递
t
会产生另一个错误。告诉sympy应该能够正确地猜测它,所以我忽略了它-只是为了找到正确的参数,后面会出现
x(t)

这给了我res=

Eq(x(t), exp(t)/4 - cos(t)/2 + exp(-t)/4)

哦,谢谢你找到这个。这不是一个容易发现的错误,因为它存在于变量的定义中。谢谢你在这方面的帮助。您通常使用什么CA?我正努力坚持免费的东西。我喜欢使用Julia Sympy版本,但它缺少一些简单的东西,比如拉普拉斯变换。PythonSymphy有它,但还有这些小的编码问题。实际上,我已经很快就适应了Python。事实上,我更喜欢编写代码,而不是数学。Python很酷,因为它具有一致性,能够在多个域上工作,并且仍然是一种通用语言。对于理解Python的人来说,在给出错误消息的情况下,实际上很容易在这里发现问题。不要太依赖sympy,即使在版本1.4中,系统
differq=[sp.Eq(x(t).diff(t),z(t)),sp.Eq(y(t).diff(t),y(t)),sp.Eq(z(t).diff(t),x(t))
给出了错误的第二个组件,没有将
y
视为与
x,z
@LutzL解耦。谢谢您的警告。那么,对于微分方程的符号解,哪种CA是更好的选择?我希望能找到一些免费的开源软件?Sage是一个更好的选择吗?这个问题正在解决中,但迁移到官方发行版似乎很慢:,