Ich versuche, eine ziemlich komplexe Funktion zu plotten, d. H. log(x/(x-2))**Rational(1,3)
. Ich arbeite nur mit reellen Zahlen. Wenn ich versuche, es zu plotten, sympy
plottet nur die x> 2 Teil davon.Würfelwurzel von negativen reellen Zahlen
ich, dass tatsächlich komplexe Zahlen ins Spiel kommen und zum Beispiel gefunden, root(-8,3).n()
gibt:
1,0 + 1.73205080756888i
, die auch sinnvoll ist, obwohl es nicht das, was ich gesucht habe (weil ich nur am wirklichen Ergebnis interessiert bin).
Lesen sympy › principle root Ich fand, dass real_root(-8,3)
gibt -2
wie erwartet. Aber ich kann immer noch nicht die x < 0 Teil dieser Funktion plotten; in der Tat scheint es, dass real_root
funktioniert nur für Integer-Wurzeln, und real_root(-9,3).n()
gibt immer noch ein imaginäres Ergebnis, anstatt -(real_root(9, 3))
, wie ich erwarten würde.
Ich dachte, ein echtes Ergebnis existiert für (-9)^(1/3) und ich verstehe nicht, warum real_root
stattdessen ein imaginäres Ergebnis gibt.
Gibt es eine einfache Möglichkeit, ein Schulbuchergebnis für die Kubikwurzel von echten negativen Zahlen zu erhalten, wie (-x)^(1/3) = - (x)^(1/3)?
bearbeiten:
Nach @Leon ‚s Vorschlag: Ich sympy
aktualisiert und könnte tatsächlich die reale Kubikwurzel von -9 berechnen. Aber ich kann noch nicht die Funktion, die ich am Anfang des Themas erwähnt habe, plotten.
from sympy import *
var('x')
f=real_root((log(x/(x-2))), 3)
plot(f)
gibt einen Fehler wie NameError: name 'Ne' is not defined
. Ich bemerkte, dass f
Ergebnisse in
Piecewise((1, Ne(arg(x/(x - 2)), 0)), ((-1)**(2/3), log(x/(x - 2)) < 0), (1, True))*log(x/(x - 2))**(1/3)
Versuch drucken Heißt das Ne
etwas mit meinem Fehler zu tun haben?
Mit Python 2.7.10, SymPy 1.0 gibt es kein solches Problem ist: 'sympy.real_root (-9,3) · n()' 'kehrt -2.08008382305190' – Leon
Vielen Dank . Ich habe vergessen zu erwähnen, dass ich Python 3.5 verwende. Nach der Aktualisierung von 'conda' und' anaconda' (und damit 'sympy') konnte ich auch die Kubikwurzel von 9 berechnen. Wie auch immer, 'von sympy import *' 'f = real_root (log (x/(x-2)), 3)' 'Grundstück (f)' gibt eine sehr komplizierte Fehlermeldung I kann ich nicht verstehen! – David
Die Nachricht, die Sie sehen, ist ein Fehler in SymPy. Ich habe ein Problem [hier] (https://github.com/sympy/sympy/issues/11461) geöffnet. – asmeurer