scipy.integrate
사용하기
scipy.integrate
모듈은 수치적분과 상미분방정식(ODE)을 푸는 함수를 제공합니다.
주로 활용되는 작업은 다음과 같습니다.
- 정적분을 계산해야 할 때
- 해석적(정확한) 원시함수가 없는 함수를 적분하고 싶을 때
- ODE(상미분방정식) 계를 풀 때
scipy.integrate
를 사용하기 위해서는 아래와 같이 integrate
모듈을 불러와야 합니다.
NumPy와 SciPy integrate 임포트
import numpy as np
from scipy import integrate
예제 1: quad
로 정적분
정적분을 계산할 때 quad
함수를 사용할 수 있습니다.
0에서 π까지 sin(x)의 정적분
# 적분할 함수
f = lambda x: np.sin(x)
# 0부터 π까지 적분
val, err = integrate.quad(f, 0, np.pi)
print("적분값:", val)
print("추정 오차:", err)
설명:
quad
는 적분값과 오차 추정치를 반환합니다- 매끄럽고 잘 거동하는 함수에 유용합니다
예제 2: solve_ivp
로 ODE 풀기
ODE를 풀 때 solve_ivp
함수를 사용할 수 있습니다.
ODE 풀기
# 미분 방정식(도함수) 함수
def dydt(t, y):
return -2 * y
# 시간 구간과 평가 지점
t_span = (0, 3)
t_eval = np.linspace(*t_span, 100)
# ODE 풀기
sol = integrate.solve_ivp(dydt, t_span, y0=[1.0], t_eval=t_eval)
print("처음 5개 y 값:", sol.y[0][:5])
설명:
solve_ivp
는 ODE의 초기값 문제를 풉니다t_span
은 적분 구간입니다y0
는 초기 조건입니다
핵심 정리
quad()
: 주어진 구간에서 단변수 함수를 적분합니다.solve_ivp()
: 미분방정식의 초기값 문제를 풉니다.- SciPy의 적분 루틴과 호환되도록 함수와 배열 정의에 NumPy를 사용하세요.
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!