Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python NumPy로 체비쇼프(Chebyshev) 시리즈 나누기: chebdiv() 메서드 활용법

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() 메서드를 사용할 수 있습니다.