Python 定义一个类来表示复数

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Python 实例