Python 不使用内置类型和运算符的复数除法

Python Division Of Complex Numbers Without Using Built In Types and Operators

我必须实现一个名为 ComplexNumbers 的 class,它代表一个复数,我 不允许 使用 内置类型。 我已经覆盖了允许执行基本操作的运算符 (__add____sub____mul____abs____str_。 但现在我坚持要覆盖 __div__ 运算符。

允许使用:

我使用 float 表示数字的虚部,float 表示相对部分。

我已经尝试过的:

复数除法说明:

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

我的乘法实现:

 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)

我认为这应该足够了:

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__

感谢@PatrickHaugh 的提示,我得以解决问题。这是我的解决方案:

  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)

计算共轭比没有虚部的分母。