본문으로 건너뛰기
실습하기

scipy.optimize로 최적화

scipy.optimize 모듈은 함수의 최적값을 찾거나 방정식을 푸는 데 사용됩니다.

주로 활용되는 작업은 다음과 같습니다.

  • 함수 최소화 또는 최대화
  • 데이터에 곡선 맞춤(피팅)
  • 방정식 및 연립방정식 풀이

scipy.optimize를 사용하기 위해서는 아래와 같이 optimize 모듈을 불러와야 합니다.

NumPy와 SciPy optimize 임포트
import numpy as np
from scipy import optimize

예제 1: 함수 최소화

minimize() 함수를 사용해 함수의 최소값을 찾습니다.

함수 최소화
# 함수 정의: f(x) = x^2 + 5*sin(x)
def func(x):
return x**2 + 5*np.sin(x)

# 초기 추정값에서 시작해 최소값 찾기
result = optimize.minimize(func, x0=2)

print("최적 x 값:", result.x[0])
print("최적점에서의 함수값:", result.fun)
  • func(x): 목적 함수
  • x0: 초기 추정값
  • result: 최적의 x와 해당 지점에서의 함수값 포함

예제 2: 방정식 풀이

root() 함수를 사용해 방정식이 0이 되는 지점을 찾습니다.

방정식의 근 찾기
# 방정식: cos(x) - x = 0
def equation(x):
return np.cos(x) - x

root_result = optimize.root(equation, x0=0.5)

print("찾은 근:", root_result.x[0])
  • equation(x): cos(x) - x 형태의 방정식
  • root(): 방정식이 0이 되는 x 값을 계산

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!