2013-07-20 6 views

Antwort

6

Sie müssen die sqrt vom cmath Modul verwenden

>>> import cmath 
>>> cmath.sqrt(-1) 
1j 
1

Die Quadratwurzel von -1 ist keine reelle Zahl, sondern eine imaginäre Zahl. IEEE 754 hat keine Möglichkeit, imaginäre Zahlen darzustellen.

numpy unterstützt komplexe Zahlen. Ich schlage vor, Sie verwenden, dass: http://docs.scipy.org/doc/numpy/user/basics.types.html

+1

Meine Vermutung ist, dass @marriam bereits numpy verwendet, weil 'np.sqrt (-1)' die Warnung 'invalid value arced ...' ergibt, während 'math.sqrt (-1)' zu 'ValueError 'führt: mathematischer Domänenfehler ". –

+0

@WarrenWeckesser Auf jeden Fall hilft ihr eine Würdigung der komplexen Zahlen. – Marcin

+0

yup u r right im bereits mit numpy –

22

Um die invalid value Warnung/Fehler zu vermeiden, das Argument zu sqrt Funktion des numpy muss komplex sein:

In [8]: import numpy as np 

In [9]: np.sqrt(-1+0j) 
Out[9]: 1j 

Wie @AshwiniChaudhary in einem Kommentar darauf hingewiesen, könnten Sie auch die cmath Standardbibliothek:

In [10]: cmath.sqrt(-1) 
Out[10]: 1j 
-1

Andere haben wahrscheinlich wünschenswert Methoden vorgeschlagen, aber nur um die Konversation hinzuzufügen, können Sie immer eine Zahl kleiner als 0 (der Wert, den Sie möchten, die sqrt, -1 in diesem Fall) mit -1, dann nehmen Sie das Quadrat davon. Wissen Sie dann, dass Ihr Ergebnis imaginär ist.

6

Ich habe gerade die Komfortfunktion numpy.lib.scimath.sqrt in der sqrt documentation erklärt. Ich benutze es wie folgt:

>>> from numpy.lib.scimath import sqrt as csqrt 
>>> csqrt(-1) 
1j 
Verwandte Themen