본문 바로가기

프로그래밍 언어/파이썬

파이썬 복소수 연산, complex를 활용한 수학 계산

파이썬 복소수 연산, complex를 활용한 수학 계산

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

 

 

목차

  1. 복소수란 무엇인가?
  2. Python에서 복소수 생성 방법
  3. 복소수의 기본 연산
  4. 복소수의 속성과 메서드
  5. cmath 모듈을 활용한 고급 연산
  6. 복소수 시각화 기초
  7. 복소수의 실용적 사용 사례

 

1. 복소수란 무엇인가?

복소수(Complex Number)는 실수부(Real Part)허수부(Imaginary Part)로 구성된 수입니다. 수학적으로는 다음과 같이 표현됩니다:

z = a + bj

  • a: 실수부
  • b: 허수부 (Python에서는 j를 허수 단위로 사용)

 

 

 

2. Python에서 복소수 생성 방법

복소수는 두 가지 방법으로 생성할 수 있습니다:

  1. 리터럴 표기법: z = 3 + 4j
  2. 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)