다음 연산으로 복소수 클래스를 정의하여 복소수 작업을 수행한다고 가정해 보겠습니다. -
- 두 개의 복소수를 더하기 위한 add()
- 두 개의 복소수를 빼기 위한 sub()
- mul() 두 개의 복소수 곱하기
- div() 두 개의 복소수 나누기
- mod() 복소수의 계수를 구합니다.
복소수는 (a + bi) 형식으로 표시됩니다. 우리는 두 개의 복소수를 가지고 있으며 이들에 대해 이러한 연산을 수행할 것입니다. 클래스 내에서 add(), sub(), mul() 및 div() 메서드를 오버로드하여 연산자를 사용하여 작업을 수행할 수 있습니다. 또한 복소수를 적절한 형식으로 인쇄하기 위해 __str__() 메서드를 오버로드합니다.
따라서 입력이 c1 =2+3i c2 =5-2i와 같으면 출력은 (7.00 + 1.00i), (-3.00 + 5.00i), (16.00 + 11.00i), (0.14 + 0.66i)가 됩니다. ), 3.61, 5.39.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
- 실수부 re와 허수부 im으로 복잡한 클래스 정의
- add() 함수를 정의합니다. 시간이 걸립니다
- (re + o.re, im + o.im)을 사용하여 새로운 복합 객체를 반환
- sub() 함수를 정의합니다. 시간이 걸립니다
- (re - o.re, im - o.im)을 사용하여 새로운 복합 객체를 반환
- mul() 함수를 정의합니다. 시간이 걸립니다
- (re * o.re -im * o.im, re * o.im + im * o.re)를 사용하여 새로운 복합 객체를 반환
- div() 함수를 정의합니다. 시간이 걸립니다
- m :=o.re * o.re + o.im * o.im
- ((re * o.re + im * o.im)/m, (im * o.re - re * o.im)/m)을 사용하여 새로운 복소수 객체를 반환
- mod() 함수를 정의합니다. 소요 시간
- (re * re + im * im)의 제곱근을 반환
- __str__() 오버로드.
- im이 0과 같으면
- 소수점 두 자리까지 반환
- re가 0과 같으면
- im을 소수점 이하 두 자리까지 반환
- im <0이면
- re - im i 반환(re 및 im은 소수점 이하 두 자리까지 가능)
- 그렇지 않으면
- re + im i를 반환합니다. 둘 다 (re와 im은 소수점 이하 두 자리까지입니다)
예시
이해를 돕기 위해 다음 구현을 살펴보겠습니다.
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 __str__(self): if self.im == 0: return '%.2f' % self.re if self.re == 0: return '%.2fi' % self.im if self.im < 0: return '%.2f - %.2fi' % (self.re, -self.im) else: return '%.2f + %.2fi' % (self.re, self.im) def mod(self): return sqrt(self.re*self.re+self.im*self.im) def solve(comp1, comp2): print(comp1 + comp2) print(comp1 - comp2) print(comp1 * comp2) print(comp1 / comp2) print('%.2f' % comp1.mod()) print('%.2f' % comp2.mod()) comp1 = Complex(2, 3) comp2 = Complex(5, -2) solve(comp1, comp2)
입력
2, 3 5, -2
출력
7.00 + 1.00i -3.00 + 5.00i 16.00 + 11.00i 0.14 + 0.66i 3.61 5.39