Python 2.7 求解微分方程组

Python 2.7 求解微分方程组,python-2.7,sympy,Python 2.7,Sympy,我没能找到这个微分方程的特殊解 from sympy import * m = float(raw_input('Mass:\n> ')) g = 9.8 k = float(raw_input('Drag Coefficient:\n> ')) v = Function('v') f1 = g * m t = Symbol('t') v = Function('v') equation = dsolve(f1 - k * v(t) - m * Derivative(v(t)),

我没能找到这个微分方程的特殊解

from sympy import *

m = float(raw_input('Mass:\n> '))
g = 9.8
k = float(raw_input('Drag Coefficient:\n> '))
v = Function('v')
f1 = g * m
t = Symbol('t')
v = Function('v')
equation = dsolve(f1 - k * v(t) - m * Derivative(v(t)), 0)
print equation
对于m=1000和k=0.2,它返回

Eq(f(t), C1*exp(-0.0002*t) + 49000.0)
这是正确的,但我想解决当v(0)=0时的方程,它应该返回

Eq(f(t), 49000*(1-exp(-0.0002*t))

我认为Sympy还不能考虑初始条件。虽然
dsolve
具有输入初始条件的选项
ics
(参见文档),但它的用途似乎有限

因此,您需要手动应用初始条件。例如:

C1 = Symbol('C1')
C1_ic = solve(equation.rhs.subs({t:0}),C1)[0]

print equation.subs({C1:C1_ic})
Eq(v(t),49000.0-49000.0*exp(-0.0002*t))


这已经足够好了,有没有python软件包能够更好地找到微分方程的特定解呢?@Jessicotton我不知道还有什么python符号数学软件包比Sympy更好。然而,我认为上述方法对于大多数情况来说是足够的,在这些情况下,微分方程的(一般)解可以在封闭形式中找到。这种ODE的初始条件求解应该在下一版本的SymPy中实现