본문 바로가기
수치해석

선탐색 - 최소브래킷법, 황금분할탐색법, 피보나치탐색법

by aqua_marri 2024. 1. 10.

⦁ 최소브래킷법의 개념

 
⦁ 황금분할탐색의 개념 

 
⦁ 황금분할탐색 구현

f = lambda x: np.cos(x)-np.sin(x)
a, b = 1, 3
tol= 1e-8
r = (3-np.sqrt(5))/2

while np.abs(a-b) > tol or np.abs(f(b)-f(a)) > tol:
    x1 = a+r*(b-a)
    x2 = a+(1-r)*(b-a)
    if f(x2) < f(x1):
        a, b = x1, b        
    else:
        a, b = a, x2

 
⦁ 피보나치탐색의 개념

 
⦁ 피보나치탐색 구현

f = lambda x: np.cos(x)-np.sin(x)
a, b = 1, 3
tol = 1e-8
n = 30
F = lambda x: (1/np.sqrt(5))*(np.power((1+np.sqrt(5))/2,x)-np.power((1-np.sqrt(5))/2,x))

for k in range(n):
    c = a+(F(n-k-2)/F(n-k))*(b-a)
    d = a+(F(n-k-1)/F(n-k))*(b-a)
    if f(c) < f(d):
        a, b = a, d
    else:
        a, b = c, b

 

'수치해석' 카테고리의 다른 글

참고  (0) 2024.01.16
난수  (0) 2024.01.16
단일함수 해석  (0) 2024.01.10
불완전한 시스템  (0) 2024.01.10
체비셰프 다항식  (0) 2024.01.10