파이썬에는 복소수를 처리하기 위한 표준 유형인 COMPLEX 유형이 있습니다. 간단한 계산만 하고 싶다면 모듈을 가져올 필요가 없지만 표준 라이브러리인 cmath를 가져오면 복소수에 해당하는 수학 함수(지수, 대수, 삼각 등)를 사용할 수도 있습니다.
다음 내용은 샘플 코드와 함께 여기에 설명되어 있습니다.
- 복잡한 변수 생성
- 실제 부품과 가상 부품 가져오기:
real
,imag
기인하다 - 켤레 복소수 얻기:
conjugate()
방법 - 절대값(크기) 가져오기:
abs()
기능(예: 수학, 프로그래밍, 프로그래밍) - 적위 구하기(위상):
math
,cmath
기준 치수 - 극좌표 변환(극형 표현):
math
,cmath
기준 치수 - 복소수 계산(직교, 거듭제곱, 제곱근)
복잡한 변수 생성
허수 단위를 j로 표시하고 i가 아님에 유의하여 다음과 같이 쓰십시오.
c = 3 + 4j
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
허수부가 1인 경우 생략하면 NameError가 발생합니다. j라는 이름의 변수가 먼저 정의되면 해당 변수로 간주됩니다.
1j
이런 식으로 명시적으로 명시해야 합니다.
# c = 3 + j
# NameError: name 'j' is not defined
c = 3 + 1j
print(c)
# (3+1j)
실수부가 0이면 생략할 수 있습니다.
c = 3j
print(c)
# 3j
허수부가 0인 값을 복합 복합 유형으로 정의하려면 명시적으로 0을 작성하십시오. 아래에서 설명하는 것처럼 복합형과 정수형 또는 부동소수점형 간에 연산을 수행할 수 있습니다.
c = 3 + 0j
print(c)
# (3+0j)
실수부와 허수부는 부동 소수점 부동 소수점 유형으로 지정할 수 있습니다. 지수 표기법도 허용됩니다.
c = 1.2e3 + 3j
print(c)
# (1200+3j)
“복소수(실수부, 허수부)”에서와 같이 “복소수” 유형의 생성자에 의해 생성될 수도 있습니다.
c = complex(3, 4)
print(c)
print(type(c))
# (3+4j)
# <class 'complex'>
복소수의 실수부와 허수부 구하기:real,imag기인하다
복소수 유형의 실수부와 허수부는 각각 real 및 imag 속성을 사용하여 얻을 수 있습니다. 둘 다 부동 소수점 부동 소수점 유형입니다.
c = 3 + 4j
print(c.real)
print(type(c.real))
# 3.0
# <class 'float'>
print(c.imag)
print(type(c.imag))
# 4.0
# <class 'float'>
읽기 전용이며 변경할 수 없습니다.
# c.real = 5.5
# AttributeError: readonly attribute
켤레 복소수 얻기:conjugate()
켤레 복소수를 얻으려면 conjugate() 메서드를 사용하십시오.
c = 3 + 4j
print(c.conjugate())
# (3-4j)
복소수의 절대값(크기) 구하기:abs()
복소수의 절대값(크기)을 얻으려면 내장 함수 abs()를 사용하십시오.
c = 3 + 4j
print(abs(c))
# 5.0
c = 1 + 1j
print(abs(c))
# 1.4142135623730951
복소수의 편각(위상) 구하기:math,cmath기준 치수
복소수의 편각(위상)을 얻으려면 math 또는 cmath 모듈을 사용하십시오.
cmath 모듈은 복소수에 대한 수학 함수 모듈입니다.
정의된 대로 역탄젠트 함수 math.atan2()로 계산하거나 적위(위상)를 반환하는 cmath.phase()를 사용할 수 있습니다.
import cmath
import math
c = 1 + 1j
print(math.atan2(c.imag, c.real))
# 0.7853981633974483
print(cmath.phase(c))
# 0.7853981633974483
print(cmath.phase(c) == math.atan2(c.imag, c.real))
# True
두 경우 모두 얻을 수 있는 각도의 단위는 라디안입니다. 도로 변환하려면 math.degrees()를 사용하십시오.
print(math.degrees(cmath.phase(c)))
# 45.0
복소수의 극좌표 변환(극 형식 표현):math,cmath기준 치수
위에서 언급했듯이 복소수의 절대값(크기)과 편각(위상)을 구할 수 있지만 cmath.polar()를 사용하면 (절대값, 편각) 튜플로 함께 얻을 수 있습니다.
c = 1 + 1j
print(cmath.polar(c))
print(type(cmath.polar(c)))
# (1.4142135623730951, 0.7853981633974483)
# <class 'tuple'>
print(cmath.polar(c)[0] == abs(c))
# True
print(cmath.polar(c)[1] == cmath.phase(c))
# True
극좌표에서 데카르트 좌표로의 변환은 cmath.rect()를 사용하여 수행됩니다. cmath.rect(절대값, 편차) 및 유사한 인수를 사용하여 동등한 복합 복합 복합 유형의 값을 얻을 수 있습니다.
print(cmath.rect(1, 1))
# (0.5403023058681398+0.8414709848078965j)
print(cmath.rect(1, 0))
# (1+0j)
print(cmath.rect(cmath.polar(c)[0], cmath.polar(c)[1]))
# (1.0000000000000002+1j)
실수부와 허수부는 절대값과 편각에서 cosine math.cos() 및 sine math.sin()이 계산한 결과와 동일합니다.
r = 2
ph = math.pi
print(cmath.rect(r, ph).real == r * math.cos(ph))
# True
print(cmath.rect(r, ph).imag == r * math.sin(ph))
# True
복소수 계산(직교, 거듭제곱, 제곱근)
4개의 산술 연산과 거듭제곱 계산은 일반적인 산술 연산자를 사용하여 수행할 수 있습니다.
c1 = 3 + 4j
c2 = 2 - 1j
print(c1 + c2)
# (5+3j)
print(c1 - c2)
# (1+5j)
print(c1 * c2)
# (10+5j)
print(c1 / c2)
# (0.4+2.2j)
print(c1 ** 3)
# (-117+44j)
제곱근은 **0.5로 계산할 수 있지만 오류가 발생합니다. cmath.sqrt()를 사용하여 정확한 값을 계산할 수 있습니다.
print((-3 + 4j) ** 0.5)
# (1.0000000000000002+2j)
print((-1) ** 0.5)
# (6.123233995736766e-17+1j)
print(cmath.sqrt(-3 + 4j))
# (1+2j)
print(cmath.sqrt(-1))
# 1j
또한 복합 유형, int 유형 및 float 유형으로 산술 연산을 수행할 수 있습니다.
print(c1 + 3)
# (6+4j)
print(c1 * 0.5)
# (1.5+2j)