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)
计算共轭比没有虚部的分母。
我必须实现一个名为 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)
计算共轭比没有虚部的分母。