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

Python NumPy로 다차원 계수를 가진 체비쇼프 급수를 점 x에서 평가하는 방법

Python NumPy에서 chebyshev.chebval() 메서드를 사용하면 주어진 점 x에서 체비쇼프(Chebyshev) 급수를 손쉽게 평가할 수 있습니다. 특히 계수 배열이 다차원일 때도 유용하게 활용할 수 있습니다.

chebval() 메서드의 매개변수

첫 번째 매개변수 x: 리스트나 튜플이 전달되면 ndarray로 변환되고, 그 외의 경우에는 변경 없이 스칼라로 취급됩니다. 어떤 경우든 x 또는 그 요소는 자기 자신과의 덧셈·곱셈뿐 아니라 계수 배열 c의 요소와도 연산을 지원해야 합니다.

두 번째 매개변수 c: 차수(degree) 순서대로 정렬된 계수 배열입니다. n차 항에 대한 계수는 c[n]에 저장됩니다. c가 다차원이라면 나머지 인덱스들은 여러 개의 다항식을 나타냅니다. 2차원 배열의 경우 계수는 c의 열(column)에 저장되어 있다고 생각하면 이해하기 쉽습니다.

세 번째 매개변수 tensor: True로 설정하면 계수 배열의 형태(shape) 오른쪽에 x의 각 차원마다 1을 추가하여 확장합니다. 이때 스칼라는 차원 0으로 간주됩니다. 결과적으로 c의 모든 계수 열이 x의 모든 요소에 대해 평가됩니다. False로 설정하면 평가 시 x가 c의 열들에 걸쳐 브로드캐스트(broadcast)됩니다. 이 키워드는 c가 다차원일 때 특히 유용하며, 기본값은 True입니다.

단계별 구현 방법

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np
from numpy.polynomial import chebyshev as C

다차원 계수 배열을 생성합니다.

c = np.arange(4).reshape(2,2)

배열을 출력합니다.

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)

chebyshev.chebval() 메서드를 사용하여 점 x에서 체비쇼프 급수를 평가합니다.

print("\nResult (chebval)...\n",C.chebval([1,2],c,tensor=True))

전체 예제 코드

import numpy as np
from numpy.polynomial import chebyshev as C

# 다차원 계수 배열 생성
c = np.arange(4).reshape(2,2)

# 배열 출력
print("Our Array...\n",c)

# 차원 확인
print("\nDimensions of our Array...\n",c.ndim)

# 데이터 타입 확인
print("\nDatatype of our Array object...\n",c.dtype)

# 형태 확인
print("\nShape of our Array object...\n",c.shape)

# chebval() 메서드로 점 x에서 체비쇼프 급수 평가
print("\nResult (chebval)...\n",C.chebval([1,2],c,tensor=True))

실행 결과

Our Array...
[[0 1]
[2 3]]

Dimensions of our Array...
2

Datatype of our Array object...
int64

Shape of our Array object...
(2, 2)

Result (chebval)...
[[2. 4.]
[4. 7.]]

위 실행 결과를 보면, 2×2 형태의 계수 배열 c에 대해 점 [1, 2]에서 체비쇼프 급수가 평가되어 [[2. 4.], [4. 7.]]라는 결과가 반환된 것을 확인할 수 있습니다. tensor=True 옵션 덕분에 계수 배열의 각 열이 x의 모든 요소에 대해 독립적으로 평가됩니다.