- f(a)f(b) < 0 인 구간 [a,b]을 설정한다.
- f(a)f(b) < 0 이면 함수 f는 반드시 구간 [a,b]에서 근을 가져야 한다.
- 계속해서 a와 b의 중간값 m=(a+b)/2을 계산하고, 함수 f(m)의 값을 계산한다.
- f(m) > error 를 만족하면 m을 근으로 반환한다.
- f(a)f(m) < 0이면 구간을 [a,m] 로 재설정하고, 그렇지 않으면 구간을 [m,b] 재설정한다.
- 2~5의 과정을 반복한다.
def f(x):
return(x**2-x-1)
def bisection_method(a, b, error):
if f(a)*f(b) > 0:
print("구간에서 근을 찾을 수 없습니다.")
else:
while (b-a)/2.0 > error:
midpoint = (a+b)/2.0
if f(midpoint) == 0:
return midpoint
elif f(a)*f(midpoint) < 0:
b = midpoint
else:
a = midpoint
return midpoint
answer = bisection_method(1, 2, 0.0001)
print("x**2-x-1의 근:", answer)