2016-10-10 3 views
1

Nach Python Neuinstallation die folgenden einfachen CodePython sympy DSolve Fehler

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) 

die folgende Ausgabe gibt:

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

aber, bevor es verwendet, um mir die richtige Antwort: f(x) == -2.0/(C1*exp(-3.0*x) - 1.0).

Kann mir bitte jemand helfen, das Problem zu beheben?

+0

Bitte formatieren Sie den Code richtig durch [Bearbeiten] ing es erhalten. Entfernen Sie auch diese Zeilennummern. Und was meinst du "es gab dir" die richtige Antwort? Bitte lesen [fragen]. –

+0

Welche Version von sympy hast du vorher benutzt? Welche Version verwendest du hier? Ich merke auch, dass es einige Syntaxfehler in dem Code gibt, der gepostet wird. Wäre es möglich, Code zu schreiben, der tatsächlich die von Ihnen angezeigte Ausgabe liefert? –

Antwort

1

können Sie versuchen, Rational statt float Nummer zu verwenden, wie folgt:

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

Benötigen Sie keinen Modulnamen für dieses 'Rational'? –

+0

Tut mir leid, Rational ist ein Sympy-Kurs, ich habe vergessen, vorher das Präfix "sym" zu schreiben. Danke für deine Nachricht. –

0

Zunächst einmal bin ich traurig über die Syntax und Bearbeiten von Fehlern in den ersten Beitrag. Eigentlich laufe ich genau denselben Code in zwei Computern, einen mit Anaconda für Windows andere mit Spyder für Ubuntu, beide haben Python 2.7, und haben zwei verschiedene Antworten. Der Code ist:

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) 

In der Ubuntu-Version, die ich die explizite Lösung f(x) == -2.0/(C1*exp(-3.0*x) - 1.0) Während in der Windows-Maschine erhalte ich die implizite Lösung Eq(x + 0.3333333333333*log(1.0*f(x) - 2.0) - 0.333333333333*log(1.0*f(x)), C1)