2016-12-14 3 views
2

Ich habe eine Klasse zu implementieren genannt ComplexNumbers, die eine komplexe Zahl repräsentiert und ich bin nicht erlaubt die in Typen dafür gebaut zu verwenden. Ich habe bereits die Operatoren überschrieben (__add__, __sub__, __mul__, __abs__, __str_ die grundlegenden Operationen ausführen können Aber jetzt bin ich fest mit dem Überschreiben der __div__ OperatorPython Abteilung der komplexen Zahlen ohne Verwendung Built In Typen und Operatoren

erlaubt zu verwenden:..

I ‚float m mit dem imaginären Teil der Zahl darzustellen und float das rel Teil darzustellen

Was habe ich schon versucht.

  • Ich sah, wie eine Division von komplexen Zahlen (handschriftlich)
  • ich ein Beispiel Berechnung getan auszuführen
  • Gedanken darüber, wie es ohne gutes Ergebnis
  • programmatisch zu implementieren

Erklärung wie komplexe Zahlen teilen:

http://www.mathwarehouse.com/algebra/complex-number/divide/how-to-divide-complex-numbers.php

Meine Implementierung von mehrfach:

def __mul__(self, other): 
     real = (self.re * other.re - self.im * other.im) 
     imag = (self.re * other.im + other.re * self.im) 
     return ComplexNumber(real, imag) 
+0

Darf "int" nicht verwendet werden? –

+0

@PatrickHaugh Ich werde den Fragetyp des Realteils aktualisieren ist 'float' Der Typ des Imaginärteils ist' int' –

+0

Okay, das ist alles was du sowieso brauchst. Wo sind Sie in dem Divisionalgorithmus in Schwierigkeiten geraten? –

Antwort

3

ich denke, das sollte ausreichen:

def conjugate(self): 
    # return a - ib 

def __truediv__(self, other): 
    other_into_conjugate = other * other.conjugate() 
    new_numerator = self * other.conjugate() 
    # other_into_conjugate will be a real number 
    # say, x. If a and b are the new real and imaginary 
    # parts of the new_numerator, return (a/x) + i(b/x) 

__floordiv__ = __truediv__ 
0

Dank Spitzen @PatrickHaugh ich das Problem lösen konnte. Hier ist meine Lösung:

def __div__(self, other): 
     conjugation = ComplexNumber(other.re, -other.im) 
     denominatorRes = other * conjugation 
     # denominator has only real part 
     denominator = denominatorRes.re 
     nominator = self * conjugation 
     return ComplexNumber(nominator.re/denominator, nominator.im/denominator) 

Berechnung der Konjugation und als der Nenner, die keinen Imaginärteil hat.