【问题标题】:Python sympy dsolve errorPython sympy 解决错误
【发布时间】:2016-10-10 19:38:19
【问题描述】:

重新安装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).

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

【问题讨论】:

  • 请通过editing 正确格式化您的代码。还要删除那些行号。你是什​​么意思“它曾经给”你正确的答案?请阅读How to Ask
  • 您之前使用的是什么版本的 sympy?你在这里用的是什么版本?我还注意到发布的代码中存在一些语法错误。是否可以发布实际给出您显示的输出的代码?

标签: python sympy dsolve


【解决方案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))

【讨论】:

  • 你不需要那个Rational的模块名吗?
  • 对不起,Rational 是一个 sympy 类,我之前忘了写“sym”前缀。感谢您的来信。
【解决方案2】:

首先,对于第一篇文章中的语法和编辑错误,我深表歉意。 实际上,现在我在两台计算机上运行完全相同的代码,一台使用 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)

【讨论】:

    猜你喜欢
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-07
    相关资源
    最近更新 更多