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

Python NumPy polyvalfromroots() – 점 x에서 근 기반 다항식을 평가하고 x를 r의 열에 브로드캐스트하기

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이 되므로, 이는 수학적으로 당연한 결과입니다.