Python complex 객체, 실수와 허수의 조화 이해하기
복소수(Complex Number)는 수학에서 주로 다루어지지만, Python에서는 내장 데이터 타입으로 제공될 만큼 중요한 자료형입니다. complex 객체는 실수와 허수 두 부분으로 구성되어 있으며, 수학적 연산뿐 아니라 다양한 엔지니어링, 물리 시뮬레이션, 신호처리 분야에서도 유용하게 활용됩니다. 이번 글에서는 Python의 complex 객체가 어떻게 구성되고, 어떻게 활용할 수 있는지를 구조적으로 깊이 있게 살펴봅니다.

목차
- 복소수란 무엇인가?
- Python에서 complex 객체 생성하기
- 실수부와 허수부 접근 방법
- 복소수 연산: 덧셈, 곱셈, 거듭제곱
- complex 객체의 내장 메서드 활용
- 복소수의 실전 활용 예시
- 정리 및 주의사항
1. 복소수란 무엇인가?
복소수는 실수부(Real Part)와 허수부(Imaginary Part)로 구성된 수입니다. 기본 형태는 다음과 같습니다:
z = a + bj
- a: 실수부 (float)
- b: 허수부 (float)
- j: Python에서 허수 단위를 나타내는 기호 (수학에서의 i와 동일)
참고: Python에서는 허수 단위로 반드시 j를 사용해야 합니다.
2. Python에서 complex 객체 생성하기
Python에서는 복소수를 여러 가지 방법으로 생성할 수 있습니다:
- 리터럴 사용:
z = 3 + 4j complex()생성자 사용:z = complex(3, 4)
z1 = 2 + 3j
z2 = complex(2, 3)
print(z1 == z2) # True
Tip: 문자열로도 생성 가능 → complex("5+6j")
3. 실수부와 허수부 접근 방법
생성한 복소수 객체의 구성 요소는 다음 속성으로 쉽게 접근할 수 있습니다:
| 속성 | 설명 | 예시 |
|---|---|---|
.real |
실수부 반환 | (3+4j).real → 3.0 |
.imag |
허수부 반환 | (3+4j).imag → 4.0 |
주의: 반환되는 값은 항상 float형입니다, 정수가 아닌 점에 유의.
4. 복소수 연산: 덧셈, 곱셈, 거듭제곱
복소수 간 연산은 Python의 기본 산술 연산자로 매우 직관적으로 처리할 수 있습니다:
- 덧셈:
(2+3j) + (1+4j) → (3+7j) - 곱셈:
(1+2j) * (3+4j) → (-5+10j) - 거듭제곱:
(2+3j) ** 2 → (-5+12j)
a = 1 + 2j
b = 3 + 4j
print(a + b) # (4+6j)
print(a * b) # (-5+10j)
print(a ** 2) # (-3+4j)

5. complex 객체의 내장 메서드 활용
Python의 cmath 모듈을 사용하면 복소수 관련 수학 함수도 손쉽게 이용할 수 있습니다:
cmath.polar(z): 극좌표 형태로 변환 (r, θ 반환)cmath.phase(z): 각도(라디안) 반환abs(z): 크기(절댓값) 반환cmath.exp(z),cmath.sqrt(z): 복소수의 지수, 제곱근
import cmath
z = 1 + 1j
print(cmath.polar(z)) # (1.4142135623730951, 0.7853981633974483)
print(abs(z)) # 1.4142135623730951
6. 복소수의 실전 활용 예시
복소수는 실전에서도 다양한 분야에서 활용됩니다. 대표적 예시는:
- 전기공학: 교류 회로 해석 (임피던스 표현)
- 신호처리: 푸리에 변환 결과 처리
- 물리학: 파동, 양자역학 계산
- 게임 개발: 2D 회전 계산에 사용
실전 Tip: 복소수 연산 최적화 시 numpy의 complex 배열을 사용하면 속도 향상 가능.
7. 정리 및 주의사항
Python의 complex 객체는 기본 연산에서 매우 직관적이고, 고급 수학 계산에서도 확장성이 뛰어납니다. 마지막으로 복습할 핵심 포인트는:
- 실수부와 허수부는 각각
float - 허수 단위는 반드시
j사용 - cmath 모듈과 함께 활용하면 범용성 증가
주의: 문자열로 복소수를 입력할 때 공백이 포함되면 에러가 발생할 수 있습니다.
'프로그래밍 언어 > 파이썬' 카테고리의 다른 글
| Python 리스트 컴프리헨션, 간결하고 강력한 코드 작성법 (0) | 2025.04.11 |
|---|---|
| Python bool 값 처리, 조건문과 필터링에 최적화하기 (0) | 2025.04.05 |
| Python str의 불변성, 메모리와 성능 이해하기 (0) | 2025.03.24 |
| 파이썬 리스트에서 발생하는 오류와 해결법 (0) | 2025.03.18 |
| Python의 bool 데이터 타입, 내부 작동 방식과 사례 (0) | 2025.03.12 |