이분법

지애·2022년 4월 6일
0

Python

목록 보기
16/17
  1. f(a)f(b) < 0 인 구간 [a,b]을 설정한다.
  2. f(a)f(b) < 0 이면 함수 f는 반드시 구간 [a,b]에서 근을 가져야 한다.
  3. 계속해서 a와 b의 중간값 m=(a+b)/2을 계산하고, 함수 f(m)의 값을 계산한다.
  4. f(m) > error 를 만족하면 m을 근으로 반환한다.
  5. f(a)f(m) < 0이면 구간을 [a,m] 로 재설정하고, 그렇지 않으면 구간을 [m,b] 재설정한다.
  6. 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)
profile
차근차근

0개의 댓글