polyvalfromroots() 메서드란?
Python NumPy의 polynomial.polyvalfromroots() 메서드를 사용하면 근(roots)으로 지정된 다항식을 임의의 점 x에서 손쉽게 평가할 수 있습니다. 이 메서드는 세 가지 주요 매개변수를 받으며, 각 매개변수의 역할을 정확히 이해하면 다차원 데이터에서도 효율적으로 활용할 수 있습니다.
1. x – 평가할 지점
첫 번째 매개변수 x는 다항식을 평가할 지점입니다. x가 리스트(list)나 튜플(tuple)로 전달되면 자동으로 ndarray로 변환되고, 그 외의 경우에는 변경되지 않은 채 스칼라로 취급됩니다. 어떤 경우든 x 또는 그 요소들은 자기 자신뿐 아니라 r의 요소들과도 덧셈과 곱셈 연산을 지원해야 합니다.
2. r – 다항식의 근 배열
두 번째 매개변수 r은 다항식의 근을 담고 있는 배열입니다. r이 다차원인 경우 첫 번째 인덱스는 근의 인덱스를 의미하고, 나머지 인덱스들은 여러 개의 다항식을 구분하는 데 사용됩니다. 예를 들어 2차원 배열이라면 각 다항식의 근들이 r의 열(column)에 저장되어 있다고 생각하면 이해하기 쉽습니다.
3. tensor – 브로드캐스트 방식 제어
세 번째 매개변수 tensor는 평가 방식을 결정합니다. True(기본값)이면 근 배열의 형태가 오른쪽에 1이 추가되어 확장되며, 추가되는 차원의 수는 x의 차원 수와 같습니다. 이때 스칼라는 차원 0으로 간주됩니다. 그 결과 r의 모든 계수 열이 x의 모든 요소에 대해 각각 평가됩니다. 반면 False로 설정하면 x가 r의 열에 브로드캐스트되면서 평가가 진행됩니다. 이 키워드는 r이 다차원일 때 특히 유용합니다.
구현 단계
먼저 필요한 라이브러리를 가져옵니다 −
from numpy.polynomial.polynomial import polyvalfromroots import numpy as np
다차원 계수(근) 배열을 생성합니다 −
c = np.arange(-2, 2).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)
polyvalfromroots() 메서드를 사용해 근으로 지정된 다항식을 점 x에서 평가합니다 −
print("\nResult...\n",polyvalfromroots([-2, 1], c, tensor=False))전체 예제 코드
from numpy.polynomial.polynomial import polyvalfromroots
import numpy as np
# 다차원 계수(근) 배열 생성
c = np.arange(-2, 2).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)
# polyvalfromroots()로 근 기반 다항식을 점 x에서 평가
print("\nResult...\n",polyvalfromroots([-2, 1], c, tensor=False))실행 결과
Our Array... [[-2 -1] [ 0 1]] Dimensions of our Array... 2 Datatype of our Array object... int64 Shape of our Array object... (2, 2) Result... [-0. 0.]
결과 해석
위 예제에서 c는 [[-2, -1], [0, 1]] 값을 가지는 2×2 배열로, 각 열이 하나의 다항식에 해당하는 근들을 나타냅니다. tensor=False로 설정했기 때문에 평가 지점 [-2, 1]이 r의 열에 브로드캐스트되어, 첫 번째 열의 근 (-2, 0)으로 정의된 다항식은 x = -2에서, 두 번째 열의 근 (-1, 1)으로 정의된 다항식은 x = 1에서 각각 평가됩니다. 결과가 [-0., 0.]으로 출력되는 이유는 각 다항식이 자신의 근 중 하나에서 평가되었기 때문입니다. 다항식을 그 근에서 평가하면 항상 0이 되므로, 이는 수학적으로 당연한 결과입니다.