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

Python NumPy의 legpow()로 르장드르 급수 거듭제곱하기

르장드르 급수를 거듭제곱하는 방법

파이썬 NumPy에서 르장드르(Legendre) 급수를 거듭제곱하려면 numpy.polynomial.legendre.legpow() 메서드를 사용합니다. 이 메서드는 르장드르 급수 c를 지정한 거듭제곱(pow)만큼 올린 결과를 새로운 르장드르 급수 형태로 반환합니다.

인자 c는 낮은 차수에서 높은 차수 순으로 정렬된 계수 시퀀스입니다. 예를 들어 [1, 2, 3]은 P_0 + 2·P_1 + 3·P_2에 해당하는 급수를 나타냅니다.

주요 매개변수

  • c — 낮은 차수부터 높은 차수 순으로 정렬된 르장드르 급수 계수를 담고 있는 1차원 배열입니다.
  • pow — 급수를 거듭제곱할 지수입니다.
  • maxpower — 허용되는 최대 거듭제곱 값입니다. 급수가 감당하기 어려울 만큼 커지는 것을 막기 위한 제한 장치이며, 기본값은 16입니다.

구현 단계

먼저 필요한 라이브러리를 임포트합니다.

import numpy as np
from numpy.polynomial import legendre as L

르장드르 급수 계수로 1차원 배열을 생성합니다.

c = np.array([1,2,3])

계수 배열을 화면에 출력해 내용을 확인합니다.

print("계수 배열...\n", c)

배열의 차원(ndim)을 확인합니다.

print("\n배열의 차원...\n", c.ndim)

배열 객체의 데이터 타입(dtype)을 확인합니다.

print("\n배열 객체의 데이터 타입...\n", c.dtype)

배열 객체의 형상(shape)을 확인합니다.

print("\n배열 객체의 형상...\n", c.shape)

이제 legpow() 메서드를 사용해 르장드르 급수를 거듭제곱합니다.

print("\n결과....\n", L.legpow(c, 3))

전체 예제 코드

import numpy as np
from numpy.polynomial import legendre as L

# 르장드르 급수 계수로 1차원 배열 생성
c = np.array([1,2,3])

# 계수 배열 출력
print("계수 배열...\n", c)

# 배열의 차원 확인
print("\n배열의 차원...\n", c.ndim)

# 배열 객체의 데이터 타입 확인
print("\n배열 객체의 데이터 타입...\n", c.dtype)

# 배열 객체의 형상 확인
print("\n배열 객체의 형상...\n", c.shape)

# legpow() 메서드로 르장드르 급수를 3제곱
# [1,2,3]은 P_0 + 2*P_1 + 3*P_2에 해당하며,
# 이 급수를 3제곱한 결과가 반환됩니다.
print("\n결과....\n", L.legpow(c, 3))

출력 결과

계수 배열...
    [1 2 3]

배열의 차원...
1

배열 객체의 데이터 타입...
int64

배열 객체의 형상...
(3,)

결과....
    [16.74285714 42.17142857 55.14285714 46.4 33.8025974 15.42857143 6.31168831]

결과 해석

원래 급수 [1, 2, 3]은 최고 차수가 2인 르장드르 급수입니다. 이를 3제곱하면 최고 차수가 2 × 3 = 6인 급수가 되므로, 결과 배열에는 총 7개의 계수가 포함됩니다. 반환된 값들은 각각 P_0부터 P_6까지의 르장드르 다항식에 대응하는 계수입니다.

지정한 거듭제곱 값이 maxpower(기본값 16)를 초과하면 ValueError가 발생하므로, 큰 지수를 다룰 때는 이 점에 유의해야 합니다.