Python NumPy에서 하나의 체비쇼프(Chebyshev) 시리즈를 다른 시리즈로 나눌 때는 numpy.polynomial.chebyshev 모듈의 chebdiv() 메서드를 사용합니다. 이 메서드는 나눗셈의 결과인 몫(quotient)과 나머지(remainder)에 해당하는 체비쇼프 계수 배열 두 개를 튜플 형태로 반환합니다.
chebdiv() 메서드 개요
C.chebdiv(c1, c2)는 두 체비쇼프 시리즈의 나눗셈 c1 ÷ c2를 수행하고, 그 결과를 '몫 + 나머지' 형태로 돌려줍니다. 각 인자는 최저 차수 항부터 최고 차수 항까지 순서대로 나열한 계수 시퀀스입니다. 예를 들어 [1, 2, 3]은 T₀ + 2·T₁ + 3·T₂라는 시리즈를 의미합니다. 여기서 Tₙ은 n차 체비쇼프 다항식입니다.
- c1 : 피제수가 되는 체비쇼프 시리즈의 계수를 담은 1차원 배열 (낮은 차수 → 높은 차수 순)
- c2 : 제수가 되는 체비쇼프 시리즈의 계수를 담은 1차원 배열 (낮은 차수 → 높은 차수 순)
구현 단계
1단계 — 필요한 라이브러리 임포트
import numpy as np from numpy.polynomial import chebyshev as C
2단계 — 체비쇼프 시리즈 계수 배열 생성
c1 = np.array([1,2,3]) c2 = np.array([3,2,1])
3단계 — 계수 배열 내용 출력
print("Array1...\n",c1)
print("\nArray2...\n",c2)
4단계 — 데이터 타입(dtype) 확인
print("\nArray1 datatype...\n",c1.dtype)
print("\nArray2 datatype...\n",c2.dtype)
5단계 — 차원(ndim) 확인
print("\nDimensions of Array1...\n",c1.ndim)
print("\nDimensions of Array2...\n",c2.ndim)
6단계 — 형태(shape) 확인
print("\nShape of Array1...\n",c1.shape)
print("\nShape of Array2...\n",c2.shape)
7단계 — chebdiv()로 나눗셈 수행
print("\nResult (division)....\n",C.chebdiv(c1,c2))
전체 예제 코드
# 체비쇼프 시리즈 계수로 이루어진 1차원 배열 생성
c1 = np.array([1,2,3])
c2 = np.array([3,2,1])
# 계수 배열 출력
print("Array1...\n",c1)
print("\nArray2...\n",c2)
# 데이터 타입 확인
print("\nArray1 datatype...\n",c1.dtype)
print("\nArray2 datatype...\n",c2.dtype)
# 두 배열의 차원 확인
print("\nDimensions of Array1...\n",c1.ndim)
print("\nDimensions of Array2...\n",c2.ndim)
# 두 배열의 형태(shape) 확인
print("\nShape of Array1...\n",c1.shape)
print("\nShape of Array2...\n",c2.shape)
# chebdiv() 메서드로 체비쇼프 시리즈 나누기
print("\nResult (division)....\n",C.chebdiv(c1,c2))
실행 결과
Array1... [1 2 3] Array2... [3 2 1] Array1 datatype... int64 Array2 datatype... int64 Dimensions of Array1... 1 Dimensions of Array2... 1 Shape of Array1... (3,) Shape of Array2... (3,) Result (division).... (array([3.]), array([-8., -4.]))
결과 해석
반환된 튜플의 첫 번째 요소는 몫, 두 번째 요소는 나머지입니다. 위 예제에서 몫은 [3.], 즉 3·T₀이며, 나머지는 [-8., -4.], 즉 −8·T₀ − 4·T₁입니다. 따라서 다음 관계가 성립합니다.
(T₀ + 2·T₁ + 3·T₂) = 3 × (3·T₀ + 2·T₁ + T₂) + (−8·T₀ − 4·T₁)
참고 사항
- 제수(c2)가 영다항식이면 ZeroDivisionError가 발생합니다.
- 나눗셈 연산 특성상 입력 배열이 정수형(int64)이더라도 결과는 항상 부동소수점(float) 타입으로 반환됩니다.
- 피제수의 차수가 제수보다 낮으면 몫은 0이 되고, 나머지는 피제수 그대로 반환됩니다.
- 체비쇼프 시리즈의 덧셈, 뺄셈, 곱셈에는 각각
chebadd(),chebsub(),chebmul()메서드를 사용할 수 있습니다.