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))
如果我尝试在 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))