본문 바로가기
python

파이썬으로 이분법 계산기 만들기(+오차 그래프 출력)

by unhyepnhj 2024. 6. 19.

numpy 사용하여 구현

#이분법 계산기

#계산

import numpy as np
import math
from sympy import Symbol, sympify
x=Symbol('x')
y=Symbol('y')

pol=sympify(input('방정식 입력:'))
xl=float(input('왼쪽 범위 입력:'))
xu=float(input('오른쪽 범위 입력:'))
es=float(input('오차 허용치 입력: '))

xr=np.float64(xl)   #xr초깃값
ea=100   #ea초깃값
iteration=0   #iteration 초깃값

iteration_list = []
xr_list = []
ea_list = []

f_xl=pol.subs(x,xl)
f_xu=pol.subs(x,xu)

if f_xl*f_xu>0 :
    print('입력한 구간에는 해가 존재하지 않습니다.')
elif f_xl==0:
    print('방정식',pol,'=0의 해는 ',xl,'입니다.')
elif f_xu==0:
    print('방정식',pol,'=0의 해는 ',xu,'입니다.')

else:
    while True:
        old_xr=xr
        xr=(xl+xu)/2
        f_xr=pol.subs(x,xr)

        if xr != 0:
            ea=abs((xr-old_xr)/xr)*100

        iteration+=1

        iteration_list.append(iteration)
        xr_list.append(xr)
        ea_list.append(ea)

        if f_xl*f_xr > 0:
            xl=xr
        else:
            xu=xr

        if ea<es:
            print('xr=', xr, 'ea=', ea, '반복횟수=', iteration)
            break

#그래프
import matplotlib.pyplot as plt
%matplotlib inline
plt.plot(iteration_list, ea_list, color='red')   # x, y축
plt.title('bisection')   #제목
plt.xlabel('iteration', size=10)
plt.ylabel('ea',size=10)
plt.show()

 

>>실행

 

과제 했던건데

백업을 합니다