function [x_new,k] = bisection(f,xL,xR) % Computes iterates of the secant method for solving f(x) = 0 % returns iterate where |f(x_k)| < 1e-10 or k=100 % Initialize values maxsteps = 100; k = 1; fL = f(xL); fR = f(xR); % Basic error-checking if (fL*fR > 0) error('Endpoints give same sign'); end % Find new point x_new = (xL+xR)/2; f_new = f(x_new); while ((k < maxsteps) && abs(f_new) > 1e-10) % Update endpoints if(f_new == 0) break else if (fL*f_new > 0) xL = x_new; fL = f_new; else xR = x_new; fR = f_new; end k = k+1; % Compute updated point x_new = (xL+xR)/2; f_new = f(x_new); end end