Sympy 在尝试求解物流方程时给出残值

Sympy gives a residual value when trying to solve the logistics equation

如果我尝试在 Sympy 中求解物流微分方程,我会得到一个残值 (10^(-13)),这会阻止 sympy 获得初始条件的正确值。如果我 运行 此代码:

import numpy as np

将 sympy 导入为 sp

M = 10000
a = 0.03
x = sp.symbols("x")
# x, a, M = sp.symbols("x a M")
f = sp.Function('f')
fl = sp.Derivative(f(x),x)
sol = sp.dsolve(fl - a*(1 - f(x)/M)*f(x), f(x));sol

我得到:

Eq(f(x), (9.09494701772928e-13*exp(0.03*C1 - 0.03*x) - 10000.0)/(exp(0.03*C1 - 0.03*x) - 1))

如何去除溶液中的这些残留物?

要么不使用 Float(使用 a = Rational(3, 100)),要么如果您知道您希望这些 1e-13 震级数为 0,那么您可以将它们替换为 0:

>>> eq
Eq(f(x), (9.09494701772928e-13*exp(0.03*C1 - 0.03*x) - 10000.0
... )/(exp(0.03*C1 - 0.03*x) - 1))
>>> eq.replace(lambda x: x.is_Float and abs(x) < 1e-12, lambda x: 0)
Eq(f(x), -10000.0/(exp(0.03*C1 - 0.03*x) - 1))