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

Python으로 복소수 근을 가진 르장드르(Legendre) 급수 생성하기

파이썬에서 르장드르(Legendre) 급수를 생성하려면 numpy.polynomial 모듈의 polynomial.legendre.legfromroots() 메서드를 사용합니다. 이 메서드는 계수로 구성된 1차원 배열을 반환합니다. 모든 근이 실수라면 결과는 실수 배열이 되지만, 일부 근이 복소수인 경우 결과 계수가 모두 실수 값이라 하더라도 반환되는 배열은 복소수(complex) 타입이 됩니다. 매개변수 roots에는 급수의 근들을 담고 있는 시퀀스를 전달합니다.

단계별 진행 과정

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

from numpy.polynomial import legendre as L

polynomial.legendre.legfromroots() 메서드를 사용하여 르장드르 급수를 생성합니다. 여기서는 허수 단위 j(=√-1)를 정의하고, 그 음수와 양수인 -j와 j를 근으로 전달합니다.

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

반환된 배열의 데이터 타입(dtype)을 확인합니다.

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

반환된 배열의 형태(shape)를 확인합니다.

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

전체 예제 코드

from numpy.polynomial import legendre as L

# 르장드르 급수 생성을 위해 polynomial.legendre.legfromroots() 메서드를 사용합니다.
j = complex(0,1)
print("Result...\n",L.legfromroots((-j, j)))

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

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

실행 결과

Result...
    [1.33333333+0.j 0. +0.j 0.66666667+0.j]

Type...
complex128

Shape...
(3,)

결과 해석

근으로 -j와 j를 전달했기 때문에, 이 급수가 나타내는 다항식은 (x + j)(x − j) = x² + 1입니다. 이 다항식은 르장드르 기저 다항식으로 표현하면 (4/3)·P₀(x) + (2/3)·P₂(x)에 해당하며, 실행 결과의 계수 배열 [1.33333333, 0, 0.66666667]과 정확히 일치합니다.

근 중 하나라도 복소수(-j)가 포함되어 있으므로, 계수 자체는 모두 실수 값임에도 불구하고 반환 배열의 dtype은 complex128이 되는 점을 확인할 수 있습니다. 또한 두 개의 근으로부터 생성된 급수이므로 차수가 2인 다항식에 대응하는 길이 3의 계수 배열, 즉 shape이 (3,)인 결과가 반환됩니다.