If I try solving the logistics differential equation in Sympy I get a residual value (10^(-13)) which prevents sympy from getting the correct values for the initial coditions. If I run this code:
import numpy as np
import sympy as 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
I get:
Eq(f(x), (9.09494701772928e-13*exp(0.03*C1 - 0.03*x) - 10000.0)/(exp(0.03*C1 - 0.03*x) - 1))
How can one get rid of these residuals in the solution?
Advertisement
Answer
Either don’t use Float (use a = Rational(3, 100)) or if you know you want those 1e-13 magnitude numbers to be 0 then you can replace them with 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))