Python NumPy에서 polynomial.polyval2d() 메서드를 사용하면 점 (x, y)에서 2차원(2-D) 다항식을 손쉽게 평가할 수 있습니다. 이 메서드는 x와 y의 대응되는 값들이 이루는 각 점에서 2차원 다항식의 값을 반환합니다.
polyval2d() 메서드의 주요 매개변수
x, y
2차원 다항식이 평가될 좌표입니다. x와 y는 반드시 같은 형태(shape)를 가져야 하며, 리스트나 튜플이 전달되면 먼저 ndarray로 변환됩니다. ndarray가 아닌 값이 전달되면 스칼라로 취급됩니다.
c (계수 배열)
다항식의 계수를 담고 있는 배열로, 다차원 차수(multidegree) i, j에 해당하는 항의 계수는 c[i, j]에 저장됩니다.
- c의 차원이 2보다 크면 나머지 인덱스들은 여러 개의 계수 집합을 의미합니다.
- c의 차원이 2보다 작으면 2차원 배열이 되도록 형태 뒤에 자동으로 1이 추가됩니다.
- 결과의 형태는
c.shape[2:] + x.shape가 됩니다.
구현 단계
1단계: 필요한 라이브러리 가져오기
import numpy as np from numpy.polynomial.polynomial import polyval2d
2단계: 계수로 구성된 1차원 배열 생성하기
c = np.array([3, 5])
3단계: 배열 출력 및 기본 정보 확인하기
배열과 함께 차원 수, 데이터 타입, 형태를 확인해 보겠습니다.
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)4단계: polyval2d()로 2차원 다항식 평가하기
점 (x, y)에서 2차원 다항식을 평가하려면 Python NumPy의 polynomial.polyval2d() 메서드를 사용합니다. 이 메서드는 x와 y의 대응되는 값 쌍으로 만들어진 각 점에서 2차원 다항식의 값을 반환합니다.
print("\nResult...\n",polyval2d([1,2],[1,2], c))전체 예제 코드
import numpy as np
from numpy.polynomial.polynomial import polyval2d
# 계수로 구성된 1차원 배열 생성
c = np.array([3, 5])
# 배열 출력
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)
# 점 (x, y)에서 2차원 다항식을 평가하여 결과 출력
# x = [1, 2], y = [1, 2]의 대응 값 쌍 (1,1)과 (2,2)에서 각각 평가됩니다.
print("\nResult...\n",polyval2d([1,2],[1,2], c))실행 결과
Our Array... [3 5] Dimensions of our Array... 1 Datatype of our Array object... int64 Shape of our Array object... (2,) Result... [21. 34.]
위 결과를 살펴보면, 계수 배열 [3, 5]는 다항식 P(x, y) = 3 + 5xy로 해석됩니다. 따라서 점 (1, 1)에서는 3 + 5×1×1 = 8이 아니라 [21, 34]가 나왔는데, 이는 1차원 계수 배열이 내부적으로 2차원으로 확장되어 다른 방식으로 해석되기 때문입니다. 실제로 numpy는 부족한 차원에 1을 덧붙여 [[3, 5]] 형태로 만들고, 이때 다항식은 P(x, y) = 3 + 5y로 계산됩니다. 점 (1, 1)에서는 3 + 5×1 = 8이 아니라 결과가 21인 것으로 보아 x의 거듭제곱 항까지 고려한 평가가 이루어집니다. 정확한 동작 방식을 이해하려면 계수 배열의 인덱싱 규칙(c[i, j])을 참고하는 것이 좋습니다.