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

Python에서 주어진 근(Root)으로 르장드르(Legendre) 급수 생성하기

Python에서 주어진 근(roots)으로부터 르장드르(Legendre) 급수를 생성하려면 numpy.polynomial.legendre 모듈의 legfromroots() 메서드를 사용합니다.

이 메서드는 계수들을 담은 1차원 배열을 반환합니다. 모든 근이 실수라면 결과 배열도 실수(real) 타입이 되고, 일부 근이 복소수라면 결과의 계수가 모두 실수 값이더라도 배열 전체는 복소수(complex) 타입으로 반환됩니다. 매개변수 roots에는 근들을 포함하는 시퀀스(sequence)를 전달합니다.

르장드르 급수란?

르장드르 다항식은 수학과 물리학에서 널리 사용되는 직교 다항식(orthogonal polynomial)의 한 종류입니다. NumPy의 polynomial 패키지는 이러한 르장드르 다항식을 기저(basis)로 하는 급수를 손쉽게 다룰 수 있는 다양한 함수를 제공하며, 그중 legfromroots()는 근의 목록만 있으면 해당하는 르장드르 급수의 계수를 자동으로 계산해 줍니다.

단계별 진행 과정

1단계: 필요한 라이브러리 임포트

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

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

2단계: legfromroots() 메서드로 르장드르 급수 생성

legfromroots() 메서드에 근의 시퀀스를 전달하여 르장드르 급수를 생성합니다.

print("Result...\n", L.legfromroots((-1, 0, 1)))

3단계: 데이터 타입 확인

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

print("\nType...\n", L.legfromroots((-1, 0, 1)).dtype)

4단계: 배열 형태(shape) 확인

결과 배열의 형태(shape)를 확인합니다.

print("\nShape...\n", L.legfromroots((-1, 0, 1)).shape)

전체 예제 코드

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

# legfromroots() 메서드로 르장드르 급수 생성
print("Result...\n", L.legfromroots((-1, 0, 1)))

# 데이터 타입 확인
print("\nType...\n", L.legfromroots((-1, 0, 1)).dtype)

# 배열 형태 확인
print("\nShape...\n", L.legfromroots((-1, 0, 1)).shape)

실행 결과

Result...
    [ 0. -0.4  0.  0.4]

Type...
float64

Shape...
(4,)

결과 해석

근 (-1, 0, 1)을 전달했을 때 반환된 계수 배열은 [0., -0.4, 0., 0.4]입니다. 이는 르장드르 기저 다항식 P₀(x), P₁(x), P₂(x), P₃(x)에 대한 선형 결합 계수를 의미합니다. 즉, 이 결과는 다음과 같은 다항식에 해당합니다.

-0.4·P₁(x) + 0.4·P₃(x)

모든 근이 실수이므로 데이터 타입은 float64로 반환되었으며, 계수가 4개이므로 배열의 형태는 (4,)입니다. 만약 근 중 하나라도 복소수가 포함되었다면 결과 배열은 complex128 타입으로 반환됩니다.