파이썬 복소수 연산, complex를 활용한 수학 계산
실수(real number)만으로는 표현할 수 없는 많은 수학적 현상들이 있습니다. 전자기학, 양자역학, 회로 이론 등에서는 복소수가 매우 중요하게 다뤄집니다. 다행히도 Python은 복소수를 기본 타입으로 지원하여, 별도의 라이브러리 없이도 complex 타입을 활용한 수학 계산이 가능합니다. 이 글에서는 복소수의 정의부터 사칙연산, 내장 함수, 실전 활용까지 체계적으로 살펴봅니다.

목차
1. 복소수란 무엇인가?
복소수(Complex Number)는 실수부(Real Part)와 허수부(Imaginary Part)로 구성된 수입니다. 수학적으로는 다음과 같이 표현됩니다:
z = a + bj
a: 실수부b: 허수부 (Python에서는j를 허수 단위로 사용)
2. Python에서 복소수 생성 방법
복소수는 두 가지 방법으로 생성할 수 있습니다:
- 리터럴 표기법:
z = 3 + 4j complex()함수 사용:z = complex(3, 4)
z1 = 3 + 4j
z2 = complex(5, -2)
print(z1, z2)
3. 복소수의 기본 연산
복소수도 사칙연산이 가능합니다. Python에서는 이를 매우 직관적으로 제공합니다.
- 덧셈:
(3+4j) + (1-2j) - 곱셈:
(2+3j) * (1+1j) - 나눗셈:
(2+3j) / (1-1j)
a = 2 + 3j
b = 1 - 1j
print("합:", a + b)
print("곱:", a * b)
print("나눗셈:", a / b)
4. 복소수의 속성과 메서드
Python에서 복소수 객체는 다음과 같은 속성을 가지고 있습니다:
.real: 실수부 반환.imag: 허수부 반환.conjugate(): 켤레복소수 반환
z = 5 + 6j
print(z.real) # 5.0
print(z.imag) # 6.0
print(z.conjugate()) # 5 - 6j

5. cmath 모듈을 활용한 고급 연산
cmath는 복소수를 위한 수학 함수들을 제공합니다. 일반 math 모듈은 실수만 다룰 수 있기 때문에 복소수 연산에서는 cmath를 활용해야 합니다.
| 함수 | 설명 |
|---|---|
cmath.sqrt(z) |
복소수의 제곱근 |
cmath.exp(z) |
e의 z제곱 |
cmath.phase(z) |
위상각(극좌표) |
6. 복소수 시각화 기초
복소수는 실수부와 허수부를 각각 x축, y축으로 보고 2차원 평면에서 시각화할 수 있습니다. matplotlib 라이브러리를 이용하면 다음과 같이 시각화가 가능합니다.
import matplotlib.pyplot as plt
z = 3 + 4j
plt.plot(z.real, z.imag, 'ro')
plt.xlabel('Real')
plt.ylabel('Imaginary')
plt.grid(True)
plt.show()
7. 복소수의 실용적 사용 사례
복소수는 다양한 분야에서 실질적으로 활용됩니다:
- 전기공학: 임피던스 계산
- 신호처리: 푸리에 변환 (FFT)
- 물리학: 파동 방정식의 해석
- 수치해석: 복소수 기반의 해 찾기
예를 들어, 교류 회로에서 전압 V = 220∠30°, 전류 I = 10∠-45°일 때, Python으로 다음과 같이 계산할 수 있습니다:
import cmath
v = cmath.rect(220, cmath.pi/6) # 30도
i = cmath.rect(10, -cmath.pi/4) # -45도
power = v * i.conjugate()
print(power)
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
| 파이썬 리스트 내장 함수 정리, 효율적인 데이터 관리 (0) | 2025.05.08 |
|---|---|
| Python bool, Boolean 연산과 비트 연산의 차이점 (0) | 2025.04.29 |
| Python 문자열 연산(str): 합치기, 나누기, 포매팅 (0) | 2025.04.17 |
| Python 리스트 컴프리헨션, 간결하고 강력한 코드 작성법 (0) | 2025.04.11 |
| Python bool 값 처리, 조건문과 필터링에 최적화하기 (0) | 2025.04.05 |