写一个函数来乘以复数
Writing out a function to multiply complex numbers
在尝试编写将两个复数相乘的代码时,我一直 运行 遇到问题。我首先创建了一个名为 Complex
的简单 class:
class Complex:
def __init__(self,real,imag):
self.real = real
self.imag = imag
def multiply(self, d):
self.real = (self.real * d.real) - (self.imag * d.imag)
self.imag = (self.imag * d.real) + (self.real * d.imag)
def __str__(self):
if self.imag > 0:
return str(self.real) + " + " + str(self.imag) + "i"
elif self.imag == 0:
return str(self.real)
else:
return str(self.real) + " - " + str(-self.imag) + "i"
其中self.real是实部,self.imag是虚部。当我 运行
z = Complex(3,4)
x = Complex(2,3)
z.multiply(x)
print(z,x)
结果应该是 -6 + 17i
,但它输出 -6 - 10i
。发生了什么?与乘法函数中的self.imag
部分有关吗?
我试着通过阅读我的代码来手工完成,我得到了正确的答案。有什么明显的我遗漏的东西吗?
您在 multiply
方法的第一行修改 self.real
,然后在第二行使用修改后的值。在一行中完成两项作业,即:
self.real, self.imag = (self.real * d.real) - (self.imag * d.imag), (self.imag * d.real) + (self.real * d.imag)
在尝试编写将两个复数相乘的代码时,我一直 运行 遇到问题。我首先创建了一个名为 Complex
的简单 class:
class Complex:
def __init__(self,real,imag):
self.real = real
self.imag = imag
def multiply(self, d):
self.real = (self.real * d.real) - (self.imag * d.imag)
self.imag = (self.imag * d.real) + (self.real * d.imag)
def __str__(self):
if self.imag > 0:
return str(self.real) + " + " + str(self.imag) + "i"
elif self.imag == 0:
return str(self.real)
else:
return str(self.real) + " - " + str(-self.imag) + "i"
其中self.real是实部,self.imag是虚部。当我 运行
z = Complex(3,4)
x = Complex(2,3)
z.multiply(x)
print(z,x)
结果应该是 -6 + 17i
,但它输出 -6 - 10i
。发生了什么?与乘法函数中的self.imag
部分有关吗?
我试着通过阅读我的代码来手工完成,我得到了正确的答案。有什么明显的我遗漏的东西吗?
您在 multiply
方法的第一行修改 self.real
,然后在第二行使用修改后的值。在一行中完成两项作业,即:
self.real, self.imag = (self.real * d.real) - (self.imag * d.imag), (self.imag * d.real) + (self.real * d.imag)