gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:14:40 26 4
gpt4 key购买 nike

Sympy 版本 1.2 起,python Sympy 已经实现了在给定一些初始条件的情况下求解简单微分方程中的常量的功能。我试图测试此功能,但不断出现我不知道如何解决的错误。

documentation表示初始条件的格式如下,我尝试遵循实现该功能的实际拉取请求中指定的内容。这是代码和错误。

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

最佳答案

我不是 sympy 的重度用户,但我让它工作 -问题是当你定义 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}) -x的来电with (t) 使其成为“定义的函数”。

所以,离开x作为未定义的函数,只需传递 t因为它在创建微分方程时需要的点是要走的路:


import sympy as sp

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

diffeq = sp.Eq(x(t).diff(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 会产生另一个错误。 The docs 告诉 sympy 应该能够正确猜测它,所以我将其遗漏了 - 只是为了找到正确的参数为 x(t) 稍后)

这给了我 res =

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

关于python - Sympy:求解具有初始条件误差的微分方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58034695/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com