본문 바로가기

프로그래밍 언어/파이썬

Python complex 객체, 실수와 허수의 조화 이해하기

Python complex 객체, 실수와 허수의 조화 이해하기

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

 

 

목차

  1. 복소수란 무엇인가?
  2. Python에서 complex 객체 생성하기
  3. 실수부와 허수부 접근 방법
  4. 복소수 연산: 덧셈, 곱셈, 거듭제곱
  5. complex 객체의 내장 메서드 활용
  6. 복소수의 실전 활용 예시
  7. 정리 및 주의사항

 

1. 복소수란 무엇인가?

복소수는 실수부(Real Part)허수부(Imaginary Part)로 구성된 수입니다. 기본 형태는 다음과 같습니다:

z = a + bj
  • a: 실수부 (float)
  • b: 허수부 (float)
  • j: Python에서 허수 단위를 나타내는 기호 (수학에서의 i와 동일)

참고: Python에서는 허수 단위로 반드시 j를 사용해야 합니다.

 

 

 

2. Python에서 complex 객체 생성하기

Python에서는 복소수를 여러 가지 방법으로 생성할 수 있습니다:

  1. 리터럴 사용: z = 3 + 4j
  2. 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 모듈을 사용하면 복소수 관련 수학 함수도 손쉽게 이용할 수 있습니다:

  1. cmath.polar(z): 극좌표 형태로 변환 (r, θ 반환)
  2. cmath.phase(z): 각도(라디안) 반환
  3. abs(z): 크기(절댓값) 반환
  4. 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: 복소수 연산 최적화 시 numpycomplex 배열을 사용하면 속도 향상 가능.

 

 

 

7. 정리 및 주의사항

Python의 complex 객체는 기본 연산에서 매우 직관적이고, 고급 수학 계산에서도 확장성이 뛰어납니다. 마지막으로 복습할 핵심 포인트는:

  1. 실수부와 허수부는 각각 float
  2. 허수 단위는 반드시 j 사용
  3. cmath 모듈과 함께 활용하면 범용성 증가

주의: 문자열로 복소수를 입력할 때 공백이 포함되면 에러가 발생할 수 있습니다.