鉴于您需要解决 d.e.您可能更喜欢用 sympy 代数方式执行此操作。 (或者你可能不会。)
导入模块并定义函数和因变量。
>>> from sympy import *
>>> f = Function('f')
>>> var('x')
x
调用求解器。请注意,d.e. 的所有条款必须转置到等号的左侧,并且 y 必须替换为函数的指示符。
>>> dsolve(Derivative(f(x),x)-x-f(x)/5)
Eq(f(x), (C1 + 5*(-x - 5)*exp(-x/5))*exp(x/5))
如您所料,解是根据任意常数给出的。我们必须使用初始值来解决这个问题。我们将其定义为 sympy 变量。
>>> var('C1')
C1
现在我们创建一个表达式来表示这个任意常数作为我们可以求解的方程的左侧。我们将 f(0) 替换为其初始条件下的值。然后我们在那个条件下替换 x 的值来得到 C1 中的方程。
>>> expr = -3 - ( (C1 + 5*(-x - 5)*exp(-x/5))*exp(x/5) )
>>> expr.subs(x,0)
-C1 + 22
也就是说,C1 = 22。最后,我们可以用这个值来获得微分方程的特解。
>>> ((C1 + 5*(-x - 5)*exp(-x/5))*exp(x/5)).subs(C1,22)
((-5*x - 25)*exp(-x/5) + 22)*exp(x/5)
因为我心不在焉并且害怕犯下严重的错误,所以我检查这个函数是否满足初始条件。
>>> (((-5*x - 25)*exp(-x/5) + 22)*exp(x/5)).subs(x,0)
-3
(通常只有当我忘记检查它们时才会出现错误。这就是生活。)
我也可以在 sympy 中绘制它。
>>> plot(((-5*x - 25)*exp(-x/5) + 22)*exp(x/5),(x,-1,5))
<sympy.plotting.plot.Plot object at 0x0000000008C2F780>