复杂数字的Python划分,不使用内置类型和操作符

时间:2016-12-14 14:14:50

标签: python division complex-numbers built-in-types

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

允许使用:

我使用float来表示数字的虚部,float表示rel部分。

我已经尝试过:

  • 我查找了如何执行复数除法(手写)
  • 我做了一个示例计算
  • 考虑如何以编程方式实现它而没有任何好结果

如何划分复数的说明:

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)

2 个答案:

答案 0 :(得分:4)

我认为这应该足够了:

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__

答案 1 :(得分:1)

感谢@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)

计算共轭而不是没有虚部的分母。