首先,我知道scipy中存在复数的数据结构。我只是关注计算物理教科书,这是其中一个问题。 到目前为止,这就是我所拥有的:
class complex:
def __init__(self,x,y):
self.re=x
self.im=y
def __add__(self, other):
return complex(self.re+other.re, self.im+other.im)
def __sub__(self, other):
return complex(self.re-other.re, self.im-other.im)
def __mul__(self, other):
return complex(self.re*other.re - self.im*other.im,
self.re*other.im + self.im*other.re)
def __repr__(self):
return '(%f , %f)' %(self.re, self.im)
但是我应该如何在我创建的类中实现除法,复共轭,模数和相位?
感谢
答案 0 :(得分:1)
分区你应该用__div__
和__abs__
模数来实现。复杂的共轭和阶段你必须选择自己的方法名称。例如,
def conj(self):
return complex(self.re, - self.im)
(用z.conj()
调用)。请注意,您无法为班级定义新的Python语法:例如,您无法使z*
正常工作。您还应该使用__rmul__
定义右乘,如果您愿意,还应定义__pow__
。并且不要忘记一元减号__neg__
。但并非所有其他双重强调的运算符方法都适用于复数。那里有a list in the docs。