Python에서 x, y, z의 데카르트 곱(Cartesian product) 위에서 3차원 다항식을 평가하려면 numpy.polynomial.polynomial 모듈의 polygrid3d(x, y, z) 메서드를 사용합니다. 이 메서드는 x, y, z의 데카르트 곱으로 이루어진 격자(grid) 점들에서 다항식의 값을 계산하여 반환합니다.
매개변수 설명
첫 번째 매개변수: x, y, z
x, y, z는 3차원 급수가 평가될 좌표점들을 나타냅니다. 세 값의 데카르트 곱을 구성하는 각 지점에서 다항식이 계산됩니다. 만약 x, y 또는 z가 리스트(list)나 튜플(tuple)로 전달되면 먼저 ndarray로 변환되며, ndarray가 아닌 경우에는 스칼라(scalar)로 취급됩니다.
두 번째 매개변수: c
c는 계수(coefficient) 배열입니다. 차수 i, j에 해당하는 항의 계수들이 c[i, j]에 저장되도록 정렬되어 있습니다.
- c의 차원이 2보다 크면, 남은 인덱스들은 여러 개의 계수 집합을 나타냅니다.
- c의 차원이 3보다 작으면, 3차원 형태가 되도록 shape에 1이 암묵적으로 추가됩니다.
결과의 shape은 c.shape[3:] + x.shape + y.shape + z.shape가 됩니다.
구현 단계
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np from numpy.polynomial.polynomial import polygrid3d
2차원 계수 배열을 생성합니다.
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)x, y, z의 데카르트 곱 위에서 3차원 다항식을 평가하기 위해 polygrid3d() 메서드를 호출합니다.
print("\nResult...\n",polygrid3d([1,2],[1,2],[1,2],c))전체 예제 코드
import numpy as np
from numpy.polynomial.polynomial import polygrid3d
# 2차원 계수 배열 생성
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)
# x, y, z의 데카르트 곱 위에서 3차원 다항식 평가
print("\nResult...\n",polygrid3d([1,2],[1,2],[1,2],c))실행 결과
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...
[[17. 28.]
[28. 46.]]위 결과를 보면, 계수 배열 [[0, 1], [2, 3]]을 사용하고 각 축의 값이 [1, 2]일 때, 데카르트 곱으로 구성된 2×2 격자의 각 지점에서 3차원 다항식의 값이 계산된 것을 확인할 수 있습니다. 이처럼 polygrid3d()를 활용하면 반복문 없이 벡터화된 방식으로 다차원 다항식을 효율적으로 평가할 수 있습니다.