【问题标题】:Sympy gives a residual value when trying to solve the logistics equationSympy 在尝试求解物流方程时给出了一个残值
【发布时间】:2022-01-24 02:49:54
【问题描述】:

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

如何去除解决方案中的这些残差?

【问题讨论】:

    标签: python sympy equation differential-equations


    【解决方案1】:

    不要使用浮点数(使用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))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多