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

Python NumPy로 Hermite(에르미트) 급수의 근 계산하기

Python NumPy에서 Hermite(에르미트) 급수의 근을 구하려면 hermite.hermroots() 메서드를 사용합니다. 이 메서드는 급수의 근으로 이루어진 배열을 반환하며, 모든 근이 실수라면 결과 배열도 실수형이 되고, 하나라도 허수부를 포함하면 복소수형이 됩니다. 매개변수 c는 급수의 계수를 담고 있는 1차원 배열입니다.

근의 추정값은 동반 행렬(companion matrix)의 고유값을 계산하는 방식으로 얻어집니다. 복소 평면에서 원점에서 멀리 떨어진 근은 해당 영역에서 급수가 수치적으로 불안정하기 때문에 오차가 커질 수 있습니다. 또한 중복도가 1보다 큰 중근 역시, 그 지점 근처에서는 급수의 값이 근의 오차에 비교적 둔감하기 때문에 더 큰 오차를 보이게 됩니다. 반면 원점 근처에 있는 고립된 근은 뉴턴 방법(Newton's method)을 몇 차례 반복 적용하면 정확도를 개선할 수 있습니다.

단계별 진행 과정

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

from numpy.polynomial import hermite as H

Hermite 급수의 근을 계산하려면 Python NumPy의 hermite.hermroots() 메서드를 호출합니다.

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

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

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

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

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

전체 예제 코드

from numpy.polynomial import hermite as H

# Hermite 급수의 근을 계산하려면 Python NumPy의 hermite.hermroots() 메서드를 사용합니다.
# 이 메서드는 급수의 근으로 이루어진 배열을 반환하며,
# 모든 근이 실수이면 결과도 실수형, 그렇지 않으면 복소수형입니다.

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

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

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

실행 결과

Result...
   [-0.8660254 0.8660254]

Type...
float64

Shape...
(2,)

실행 결과를 보면 계수 (-1, 0, 1)로 주어진 Hermite 급수의 근은 약 -0.866과 0.866 두 개이며, 모두 실수이므로 결과 배열의 데이터 타입은 float64이고 형태는 (2,)인 1차원 배열임을 확인할 수 있습니다.