2016-10-10 5 views
1

После переустановки Python, следующий простой кодPython SymPy ошибка dsolve

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).

Может кто-нибудь помочь мне исправить это, пожалуйста?

+0

Отформатируйте код надлежащим образом [редактировать] ИНГ его. Также удалите эти номера строк. И что вы имеете в виду, «это когда-то давало» вам правильный ответ? Пожалуйста, прочитайте [ask]. –

+0

Какую версию Sympy вы использовали ранее? Какую версию вы используете здесь? Я также замечаю, что в тексте кода есть некоторые синтаксические ошибки. Можно ли было бы опубликовать код, который фактически дает выводимый вами результат? –

ответ

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)) 
+0

Вам не нужно имя модуля для этого 'Rational'? –

+0

Извините, Rational - это симплексный класс, я забыл написать префикс «sym» раньше. Спасибо за ваше примечание. –

0

Прежде всего я сожалею о синтаксисе и редактирования ошибок в первом посте. На самом деле, прямо сейчас я запускаю точно такой же код на двух компьютерах, один с Anaconda для Windows, другой с Spyder для 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) Хотя в машине окна Находим неявным Eq(x + 0.3333333333333*log(1.0*f(x) - 2.0) - 0.333333333333*log(1.0*f(x)), C1)

Смежные вопросы