Python 定义一个类来表示复数
如果我们定义一个Python复数类,下面这些方法是必须的来执行基本的复数运算:
- add() 方法来相加给出的两个复数
- sub() 方法来减去给出的两个复数
- mul() 方法来乘以给出的两个复数
- div() 方法来除以给出的两个复数
- mod() 方法来获得给出的复数的模
使用(a + bi)的形式,即标准的复数形式,来显示运算结果。我们将把这些操作应用于作为类参数的两个复数。add(),sub(),multiply()和divide()方法都在类内定义,以便我们可以使用运算符进行操作。此外,我们将使用str()函数正确输出复数。
例如,如果输入是n1 = 1 + 4i n2 = 6 – 1i,则上述操作的结果将为(7.00 + 3.00i),(-5.00 + 5.00i),(10.00 + 23.00i),(0.05 + 0.68i),4.12,6.08。
要计算结果,我们必须遵循以下步骤−
- 首先定义一个Python类,实数部分为real,虚数部分为img
- 然后为加和复数定义一个add()方法。它将采用名为com的复杂参数。该函数将返回实例Complex类的(real + comp.re,img + comp.im)
- 以同样方式,我们将定义sub()类来减去这两个复数。它也将采用名为comp的参数。该方法也将返回一个复杂对象(real – comp.re, img – comp.im)
- 下一个操作是将两个给定的复数相乘。mul()类还将采用名为comp的参数并返回一个Complex实例,并执行(real * comp.re -img * comp.im, real * comp.im + img * comp.re)
- 我们将重复相同的步骤div()方法来除以这些数。它将执行m = (comp.re * comp.re + comp.im * comp.im),并返回对象((real * comp.re + img * comp.im)/m, (img * comp.re – real * comp.im)/m)
- 最后一个是mod()函数。此方法不需要任何参数。它将返回(real * real + img * img)的平方根
- 最后,正如前面所述,我们将使用str()方法。
- 如果虚数部分为零,则返回实部,保留两位小数
- 如果实部为零,则返回虚部,保留两位小数
- 如果虚数部分小于0,则以(real – img i)格式返回,保留两位小数。
- 对于任何其他情况,它将返回(real + img i)格式,保留两位小数。
例子
现在让我们在Python中实现上述算法。以下是实现代码片段。
代码
# Python program to show how to define a complex class
# Importing the math module
import math
# Creating a class
class Complex:
# Giving the parameters to the class
def __init__(self, real, img):
self.re = real
self.im = img
# Defining the method to add the numbers
def __add__(self, comp):
return Complex(self.re + comp.re, self.im + comp.im)
# Defining the method to subtract the numbers
def __sub__(self, comp):
return Complex(self.re - comp.re, self.im - comp.im)
# Defining the method to multiply the numbers
def __mul__(self, comp):
return Complex(self.re * comp.re - self.im * comp.im, self.re * comp.im + self.im * comp.re)
# Defining the method to divide the numbers
def __truediv__(self, comp):
m = comp.re * comp.re + comp.im * comp.im
return Complex((self.re * comp.re + self.im * comp.im)/m, (self.im * comp.re - self.re * comp.im)/m)
# Giving the output
def __str__(self):
if self.im == 0:
return f"{round(self.re, 2)}"
if self.re == 0:
return f"{round(self.im, 2)}i"
if self.im < 0:
return f"{round(self.re, 2)} - {round(self.im, 2)}i"
else:
return f"{round(self.re, 2)} + {round(self.im, 2)}i"
# Defining the method to find the modulus of the numbers
def mod(self):
return math.sqrt(self.re * self.re + self.im * self.im)
# Defining a function to perform all the operations
def solve(c1, c2):
print(c1 + c2)
print(c1 - c2)
print(c1 * c2)
print(c1 / c2)
print(round(c1.mod(), 2))
print(round(c2.mod(), 2))
# Creating the complex objects
c1 = Complex(1, 4)
c2 = Complex(6, -1)
# Performing the operations
solve(c1, c2)
输出:
7.00 + 1.00i
-3.00 + 5.00i
16.00 + 11.00i
0.14 + 0.66i
3.61
5.39