I am trying to find a good approximation to the root of a function using a bisection algorithm, however, when I run the code it doesnt return the root (c). Here is my code.
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-10,10,201)
def f(x):
return np.cos(x)
plt.figure()
plt.plot(x,f(x),label = 'cosx')
plt.xlabel('independent variable x')
plt.ylabel('dependent variable y')
plt.title('')
plt.show()
TOL = 10**-6
a = 0
b = 1
def bisection(a,b,TOL):
c = (a+b)/2.0
while (b-a)/2.0 > TOL:
if f(c)==0:
return c
elif f(a)*f(c)<0:
b = c
else:
a = c
c = (a+b)/2.0
return c