Python NumPy에서 하나의 르장드르(Legendre) 급수를 다른 급수로 나누려면 polynomial.legendre.legdiv() 메서드를 사용하면 됩니다. 이 메서드는 두 르장드르 급수를 나눈 결과인 몫(quotient)과 나머지(remainder)에 해당하는 계수 배열을 튜플 형태로 반환합니다.
legdiv()는 c1 / c2 연산의 몫-나머지 결과를 반환합니다. 인자로 전달되는 계수 시퀀스는 낮은 차수 항부터 높은 차수 항 순으로 정렬됩니다. 예를 들어 [1, 2, 3]은 P_0 + 2*P_1 + 3*P_2라는 급수를 의미합니다.
매개변수 c1과 c2는 낮은 차수에서 높은 차수 순으로 정렬된 르장드르 급수 계수를 담은 1차원 배열입니다. 참고로 두 입력 배열의 길이가 같다면, 몫의 계수 배열에는 나눗셈 결과의 선행 항만 포함되며 나머지 항들은 remainder 배열에 담기게 됩니다.
단계별 진행 과정
먼저 필요한 라이브러리를 임포트합니다.
import numpy as np
from numpy.polynomial import legendre as L
르장드르 급수의 계수를 담은 1차원 배열을 생성합니다.
c1 = np.array([2,3,4])
c2 = np.array([4,3,2])
생성한 계수 배열을 화면에 출력합니다.
print("Array1...\n",c1)
print("\nArray2...\n",c2)배열의 데이터 타입(dtype)을 확인합니다.
print("\nArray1 datatype...\n",c1.dtype)
print("\nArray2 datatype...\n",c2.dtype)두 배열의 차원(ndim)을 확인합니다.
print("\nDimensions of Array1...\n",c1.ndim)
print("\nDimensions of Array2...\n",c2.ndim)두 배열의 형태(shape)를 확인합니다.
print("\nShape of Array1...\n",c1.shape)
print("\nShape of Array2...\n",c2.shape)이제 polynomial.legendre.legdiv() 메서드를 사용하여 한 르장드르 급수를 다른 급수로 나눕니다.
print("\nResult (division)....\n",L.legdiv(c1, c2))전체 예제 코드
import numpy as np
from numpy.polynomial import legendre as L
# 르장드르 급수 계수를 담은 1차원 배열 생성
c1 = np.array([2,3,4])
c2 = np.array([4,3,2])
# 계수 배열 출력
print("Array1...\n",c1)
print("\nArray2...\n",c2)
# 데이터 타입 확인
print("\nArray1 datatype...\n",c1.dtype)
print("\nArray2 datatype...\n",c2.dtype)
# 배열의 차원 확인
print("\nDimensions of Array1...\n",c1.ndim)
print("\nDimensions of Array2...\n",c2.ndim)
# 배열의 형태 확인
print("\nShape of Array1...\n",c1.shape)
print("\nShape of Array2...\n",c2.shape)
# legdiv() 메서드로 르장드르 급수 나누기
print("\nResult (division)....\n",L.legdiv(c1, c2))
실행 결과
Array1...
[2 3 4]
Array2...
[4 3 2]
Array1 datatype...
int64
Array2 datatype...
int64
Dimensions of Array1...
1
Dimensions of Array2...
1
Shape of Array1...
(3,)
Shape of Array2...
(3,)
Result (division)....
(array([2.]), array([-6., -3.]))
결과 해석
실행 결과를 보면 legdiv(c1, c2)는 두 개의 배열을 담은 튜플을 반환합니다. 첫 번째 배열 array([2.])는 몫(quotient)의 계수이고, 두 번째 배열 array([-6., -3.])는 나머지(remainder)의 계수입니다. 즉, c1을 c2로 나눈 결과는 몫이 2*P_0에 해당하고, 나머지가 -6*P_0 - 3*P_1에 해당한다는 의미입니다.