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

Python NumPy로 Hermite_e 급수의 근 계산하기

Hermite_e 급수의 근이란?

Python NumPy에서 hermite.hermroots() 메서드를 사용하면 Hermite_e 급수(HermiteE polynomial series)의 근(roots)을 손쉽게 계산할 수 있습니다.

이 메서드는 급수의 근들을 담고 있는 배열(Array)을 반환하며, 모든 근이 실수인 경우 결과도 실수 배열로, 그렇지 않은 경우에는 복소수 배열로 출력됩니다. 매개변수 c는 급수의 계수를 담은 1차원 배열입니다.

수치적 오차에 대한 주의사항

근의 추정값은 동반 행렬(companion matrix)의 고유값(eigenvalues)을 통해 얻어집니다. 이때 다음과 같은 한계를 알아두는 것이 좋습니다.

  • 복소 평면에서 원점으로부터 멀리 떨어진 근은 해당 값에 대해 급수가 수치적으로 불안정하기 때문에 큰 오차가 발생할 수 있습니다.
  • 중근(multiplicity가 2 이상인 근) 역시 그 지점 근처에서 급수의 값이 근의 오차에 상대적으로 둔감하기 때문에 더 큰 오차를 보입니다.
  • 원점 근처의 고립된 단순근은 뉴턴법(Newton's method)을 몇 번 반복 적용하면 정확도를 개선할 수 있습니다.

구현 단계

1단계: 필요한 라이브러리 가져오기

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

import numpy as np
from numpy.polynomial import hermite_e as H

2단계: hermeroots() 메서드로 근 계산하기

H.hermeroots() 메서드에 계수 배열을 전달하여 Hermite_e 급수의 근을 계산합니다.

print("Result...\n", H.hermeroots((-1, 0, 1)))

3단계: 데이터 타입 확인하기

print("\nType...\n", H.hermeroots((-1, 0, 1)).dtype)

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

print("\nShape...\n", H.hermeroots((-1, 0, 1)).shape)

전체 예제 코드

from numpy.polynomial import hermite_e as H

# Python NumPy의 hermite.hermroots() 메서드로 Hermite_e 급수의 근을 계산합니다.
# 모든 근이 실수이면 실수 배열을, 아니면 복소수 배열을 반환합니다.

# 매개변수 c는 계수를 담은 1차원 배열입니다.
print("Result...\n", H.hermeroots((-1, 0, 1)))

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

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

실행 결과

Result...
    [-1.41421356 1.41421356]

Type...
float64

Shape...
(2,)

위 결과에서 알 수 있듯이, 계수 (-1, 0, 1)에 해당하는 Hermite_e 급수의 근은 약 ±1.41421356(즉, ±√2) 두 개이며, 모든 근이 실수이므로 결과 배열의 데이터 타입은 float64로 반환되었습니다.