Python complex type 변수 특징
파이썬에서 허수가 포함된 복소수 변수를 선언해보고, 연산의 특징을 살펴보도록 하겠습니다.
복소수 자료형 선언
$2 + 3i$와 같이 허수부가 포함된 복소수를 선언하고 싶은 경우에는
$2 + 3j$처럼 허수를 j로 표현하여 지정해주시면 됩니다.
(주의 : i가 아니라 j이며, j앞의 숫자는 생략이 불가능합니다.)
실수부 값이 0으로 허수부만 존재하는 복소수도 선언이 가능하며,
complex(2, 3) 형태로 $2 + 3j$와 같은 복소수를 선언할 수도 있습니다.
x = 1 + 3j
y = 1j # 참고 : y = j처럼 선언은 불가(숫자 1 생략 안됨)
z = complex(3, 5) # (3+5j)
위에서 선언한 $x = 1 + 3j$의 변수에 대하여 다양한 연산을 진행하는 예시를 살펴보겠습니다.
실수부, 허수부, 켤레 복소수 추출
복소수 형태로 선언된 변수에 대해서 실수부, 허수부 및 켤레 복소수에 해당되는 값을
각각 real, imag 속성 및 conjugate 메소드를 통해서 얻어낼 수 있습니다.
x.real # 1.0
x.imag # 3.0
x.conjugate() # (1-3j)
덧셈, 뺄셈 연산
실수부는 실수부끼리, 허수 부분은 허수 부분끼리 덧셈 및 뺄셈이 진행되는
복소수 연산 방식에 따라서 파이썬의 복소수 자료형도 더하기, 빼기 연산이 가능합니다.
x + 3j # (1+6j)
x + (2 + 1j) # (3+4j)
x - 5 # (-4+3j)
x - (3 + 3j) # (-2+0j)
곱셈, 나눗셈 연산
복소수의 곱셈은 두 복소수의 실수부와 허수부의 전개 방식에 의하여 계산된
최종 결과가 반환되는 식으로 연산이 가능합니다.
예를 들어, $(1 + 3j)(1 + 2j)$의 곱셈의 결과는 $1 + 5j + 6j^2 = -5 + 5j$가 됩니다.
복소수의 나눗셈은 역수를 취한 뒤, 분모의 실수화에 의하여 계산된 결과가 반환됩니다.
예시로, $\frac{1 + 3j}{1 + 2j}$의 나눗셈 결과는 $\frac{(1 + 3j)(1 - 2j)}{(1 + 2j)(1 - 2j)} = \frac{7 + j}{5}$가 됩니다.
단순 실수배의 곱셈, 나눗셈과 위 예시들의 복소수 연산을 진행한 코드는 아래와 같습니다.
x * 2 # (2+6j)
x * (1 + 2j) # (-5+5j)
x / 2 # (0.5+1.5j)
x / (1 + 2j) # (1.4+0.2j)
제곱 연산
complex 타입의 자료도 **로 진행되는 제곱 연산을 지원하며, 역시 전개식의 결과를 따르며,
제곱근 연산, 음수 제곱 등의 비교적 복잡한 제곱 형태도 지원하고 있습니다.
예를 들어, $\sqrt{1 + 3j}$의 경우에는 $\sqrt{1 + 3j} = a + bj$가 되는 a와 b를
양변에 제곱을 하여 찾은 결과가 반환되는 원리이며,
$\frac{1}{1 + 3j}$의 경우에는 분모의 실수화를 나눗셈의 예제처럼 진행한 결과가
반환되는 원리로 생각해주시면 됩니다.
x ** 2 # (-8+6j)
x ** (1/2) # (1.442615274452683+1.0397782600555705j)
x ** -1 # (0.09999999999999999-0.3j)
여담으로, 임의의 실수에 대한 제곱이나 심지어는 복소수 제곱까지의 연산 형태도 지원합니다.
다만, 이에 대한 자세한 연산 원리 설명은 내용이 너무 복잡하여 여기서는 생략하도록 하겠습니다.
x ** 0.73 # (1.4189892941460405+1.8321537454049674j)
x ** (1 - 1j) # (10.974263433510801+1.0761997832384498j)
크기(절대값) 구하기
$a + bj$의 복소수에 대하여 정의된 $\sqrt{a^2 + b^2}$라는 크기에 해당하는 값을
절댓값 연산으로 구할 수 있습니다. 파이썬에서는 abs 함수를 사용하시면 됩니다.
예시로, $1 + 3j$의 경우, 크기는 $\sqrt{1^2 + 3^2} = \sqrt{10}$이 됩니다.
abs(x) # 3.1622776601683795
몫, 나머지 연산
complex 타입의 자료에서는 //와 %로 정의되는 몫, 나머지 연산은 지원하지 않습니다.
복소수에 대하여 이들 연산을 시도할 경우, TypeError가 발생하니 참고하세요.
x // 2 # TypeError: can't take floor of complex number.
x % 2 # TypeError: can't mod complex numbers.
'Python > 파이썬 기초' 카테고리의 다른 글
파이썬 함수 안에 함수(중첩함수) 선언 예제, 변수 범위 원리 (0) | 2022.04.17 |
---|---|
파이썬 변수 자료형(타입) 확인 및 비교 방법 정리 (0) | 2022.04.08 |
파이썬 절대값 함수(abs, np.abs) 사용법 및 직접 구현 예제 (5) | 2022.04.07 |