Python sympy dsolve错误

时间:2016-10-10 19:38:20

标签: python sympy dsolve

重新安装Python后,使用以下简单代码

import sympy as sm

x = sm.Symbol('x')

f = sm.Function('f')

y = sm.dsolve(sm.diff(f (x),x)-3*f(x)(1-0.5f(x)),f(x))

print(y)

给出以下输出:

Eq(x + 0.333333333333333*log(1.0*f(x) - 2.0) - 0.333333333333333*log(1.0*f(x)), C1)

但在它过去给我正确答案之前: f(x) == -2.0/(C1*exp(-3.0*x) - 1.0)

有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Rational代替浮点数,如下所示:

>>> import sympy as sym
>>> x = sym.Symbol('x')
>>> f = sym.Function('f')(x)
>>> y = sym.dsolve(sym.diff(f,x)-3*f*(1-sym.Rational(1, 2)*f),f)
>>> print y
Eq(f(x), -2/(C1*exp(-3*x) - 1))

答案 1 :(得分:0)

首先,我对第一篇文章中的语法和编辑错误感到抱歉。 实际上,现在我在两台计算机上运行完全相同的代码,一台使用Anaconda for Windows,另一台使用Spyder for Ubuntu,两台都有Python 2.7,并得到两个不同的答案。代码是:

import sympy as sm

x = sm.Symbol('x')
f = sm.Function('f')(x)

y=sm.dsolve(sm.diff(f,x)-3*f*(1-0.5*f),f)
print(y)

在Ubuntu版本中,我获得了显式解决方案 f(x) == -2.0/(C1*exp(-3.0*x) - 1.0) 在windows机器中,我获得了隐式解决方案 Eq(x + 0.3333333333333*log(1.0*f(x) - 2.0) - 0.333333333333*log(1.0*f(x)), C1)