Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python định nghĩa lớp số phức với các phép toán cơ bản


Xây dựng lớp Complex đại diện cho số phức a + bi với các phép toán: cộng, trừ, nhân, chia, mô-đun. Nạp chồng các toán tử +, -, *, / và phương thức __str__ để in đẹp.

Ví dụ: c1 = 2+3i, c2 = 5-2i → kết quả các phép toán và mô-đun.

Các phương thức chính

  • __add__: (re1+re2, im1+im2)
  • __sub__: (re1-re2, im1-im2)
  • __mul__: (re1*re2 - im1*im2, re1*im2 + im1*re2)
  • __truediv__: nhân tử và mẫu với liên hợp của mẫu, chia cho bình phương mô-đun mẫu.
  • mod(): sqrt(re² + im²)
  • __str__: định dạng "a ± bi" với 2 chữ số thập phân.

Ví dụ mã nguồn

from math import sqrt

class Complex:
    def __init__(self, real, imag):
        self.re = real
        self.im = imag

    def __add__(self, o):
        return Complex(self.re + o.re, self.im + o.im)

    def __sub__(self, o):
        return Complex(self.re - o.re, self.im - o.im)

    def __mul__(self, o):
        return Complex(self.re*o.re - self.im*o.im,
                       self.re*o.im + self.im*o.re)

    def __truediv__(self, o):
        m = o.re*o.re + o.im*o.im
        return Complex((self.re*o.re + self.im*o.im)/m,
                       (self.im*o.re - self.re*o.im)/m)

    def mod(self):
        return sqrt(self.re*self.re + self.im*self.im)

    def __str__(self):
        if self.im == 0:
            return f'{self.re:.2f}'
        if self.re == 0:
            return f'{self.im:.2f}i'
        if self.im < 0:
            return f'{self.re:.2f} - {abs(self.im):.2f}i'
        return f'{self.re:.2f} + {self.im:.2f}i'

def solve(comp1, comp2):
    print(comp1 + comp2)
    print(comp1 - comp2)
    print(comp1 * comp2)
    print(comp1 / comp2)
    print(f'{comp1.mod():.2f}')
    print(f'{comp2.mod():.2f}')

comp1 = Complex(2, 3)
comp2 = Complex(5, -2)
solve(comp1, comp2)

Đầu vào / Đầu ra

Input:  2, 3  5, -2
Output: 7.00 + 1.00i
-3.00 + 5.00i
16.00 + 11.00i
0.14 + 0.66i
3.61
5.39