The Bisection Method is a numerical method used to find the root of a function. It is a simple and robust method that works by repeatedly dividing an interval in half and checking which half the root lies in, and then repeating the process on the half-interval that contains the root.
Here are the steps for the Bisection Method:
- Choose an initial interval [a, b] that contains the root of the function f(x).
- Compute the midpoint c = (a + b)/2.
- Evaluate the function at the midpoint f(c).
- If f(c) = 0, then c is the root and we are done.
- If f(c) has the same sign as f(a), then the root is in the interval [c, b]. Otherwise, the root is in the interval [a, c].
- Repeat steps 2-5 until the desired level of accuracy is achieved.
The Bisection Method is guaranteed to converge to a root of the function as long as the function is continuous and changes sign in the interval [a, b]. However, it can be slow to converge, especially for functions that are not well-behaved, oscillatory, or have multiple roots. In practice, other methods such as the Newton-Raphson method or the Secant method may be more efficient for finding roots.
MATLAB Code of Bisection Method
Here is an example MATLAB code for implementing the Bisection Method:
function root = bisection_method(f, a, b, tol, max_iter) % Inputs: % f - function handle representing the function to find the root of % a, b - the interval to search for the root in % tol - the tolerance for the root % max_iter - the maximum number of iterations to perform % % Output: % root - the estimated root of the function % Check that the function changes sign in the interval if f(a) * f(b) >= 0 error('Function must change sign in the interval.') end % Initialize variables iter = 0; error = inf; c = (a + b) / 2; % Iterate until convergence or maximum number of iterations reached while error > tol && iter < max_iter fc = f(c); % Check if c is the root if fc == 0 break end % Update the interval if f(a) * fc < 0 b = c; else a = c; end % Compute the new midpoint and error c_new = (a + b) / 2; error = abs(c_new - c); c = c_new; iter = iter + 1; end % Check for convergence if error > tol warning('Bisection method did not converge to desired tolerance.') end % Return the root root = c;
To use this function, you would define your function ‘
f‘ as a MATLAB function handle and call the ‘
bisection_method‘ function with the appropriate inputs. For example:
f = @(x) x^3 - 2*x - 5; a = 1; b = 3; tol = 1e-6; max_iter = 100; root = bisection_method(f, a, b, tol, max_iter);
This would estimate the root of the function ‘
f(x) = x^3 - 2x - 5‘ in the interval [1, 3] with a tolerance of 1e-6 and a maximum of 100 iterations.