Python NumPy에서는 numpy.polynomial.chebyshev.chebval() 메서드를 사용하여 특정 점 x에서 체비쇼프(Chebyshev) 급수를 간편하게 평가할 수 있습니다. 체비쇼프 다항식은 수치 해석, 근사 이론, 신호 처리 등 다양한 분야에서 활용되는 중요한 직교 다항식입니다.
chebval() 메서드의 매개변수
1. x – 평가할 지점
첫 번째 매개변수인 x는 체비쇼프 급수를 평가할 지점입니다. x가 리스트(list)나 튜플(tuple)로 전달되면 자동으로 ndarray로 변환되며, 그 외의 경우에는 변경되지 않은 채 스칼라로 취급됩니다. 어떤 경우든 x 또는 그 요소는 자기 자신뿐만 아니라 계수 배열 c의 요소와도 덧셈과 곱셈 연산을 지원해야 합니다.
2. c – 계수 배열
두 번째 매개변수인 c는 계수 배열입니다. 차수 n에 해당하는 계수가 c[n]에 저장되도록 정렬되어 있어야 합니다. 만약 c가 다차원 배열이라면 나머지 인덱스들은 여러 개의 다항식을 나타내는 데 사용됩니다. 2차원 배열의 경우 계수는 c의 열(column)에 저장된 것으로 생각할 수 있습니다.
3. tensor – 텐서 확장 옵션
세 번째 매개변수인 tensor가 True이면 계수 배열의 형태(shape)가 오른쪽에 1이 추가되어 확장됩니다. 이때 추가되는 차원의 수는 x의 차원 수와 같으며, 스칼라는 차원 0으로 간주됩니다. 그 결과 c의 모든 계수 열이 x의 모든 요소에 대해 평가됩니다. False로 설정하면 x가 c의 열 위로 브로드캐스팅(broadcasting)되어 평가됩니다. 이 키워드는 c가 다차원일 때 특히 유용하며, 기본값은 True입니다.
단계별 구현 방법
먼저 필요한 라이브러리를 가져옵니다.
import numpy as np from numpy.polynomial import chebyshev as C
체비쇼프 급수의 계수 배열을 생성합니다.
c = np.array([1, 2, 3])
생성한 배열을 화면에 출력합니다.
print("Our Array...\n",c)배열의 차원(dimension)을 확인합니다.
print("\nDimensions of our Array...\n",c.ndim)배열 객체의 데이터 타입(dtype)을 확인합니다.
print("\nDatatype of our Array object...\n",c.dtype)배열의 형태(shape)를 확인합니다.
print("\nShape of our Array object...\n",c.shape)chebval() 메서드를 호출하여 점 x = 1에서 체비쇼프 급수를 평가합니다.
print("\nResult...\n",C.chebval(1,c))전체 예제 코드
import numpy as np
from numpy.polynomial import chebyshev as C
# 계수 배열 생성
c = np.array([1, 2, 3])
# 배열 출력
print("Our Array...\n",c)
# 차원 확인
print("\nDimensions of our Array...\n",c.ndim)
# 데이터 타입 확인
print("\nDatatype of our Array object...\n",c.dtype)
# 형태(shape) 확인
print("\nShape of our Array object...\n",c.shape)
# chebval() 메서드로 점 x에서 체비쇼프 급수 평가
print("\nResult...\n",C.chebval(1,c))실행 결과
Our Array... [1 2 3] Dimensions of our Array... 1 Datatype of our Array object... int64 Shape of our Array object... (3,) Result... 6.0
위 실행 결과에서 볼 수 있듯이, 계수 [1, 2, 3]으로 구성된 체비쇼프 급수를 점 x = 1에서 평가한 결과는 6.0입니다. 즉, T₀(1) + 2·T₁(1) + 3·T₂(1) = 1 + 2 + 3 = 6이 됩니다. 체비쇼프 다항식은 Tₙ(1) = 1이라는 성질을 가지므로, x = 1에서의 평가 결과는 단순히 모든 계수의 합과 같아집니다.