Wednesday, June 7, 2017

The Bisection Method Matlab, Numerical Method

The bisection method in mathematics is a root-finding method that repeatedly bisects an interval and then selects a subinterval in which a root must lie for further processing. It is a very simple and robust method, but it is also relatively slow. Because of this, it is often used to obtain a rough approximation to a solution which is then used as a starting point for more rapidly converging methods. The method is also called the interval halving method, the binary search method, or the dichotomy method.



The input for the method is a continuous function f, an interval [a, b], and the function values f(a) and f(b). The function values are of opposite sign (there is at least one zero crossing within the interval). Each iteration performs these steps:
  1. Calculate c, the midpoint of the interval, c = a + b2.
  2. Calculate the function value at the midpoint, f(c).
  3. If convergence is satisfactory (that is, a - c is sufficiently small, or f(c) is sufficiently small), return c and stop iterating.
  4. Examine the sign of f(c) and replace either (a, f(a)) or (b, f(b)) with (c, f(c)) so that there is a zero crossing within the new interval.

Matlab Script

clear all
close all

x=-10:.01:10
func=@(x) sin(x) - 3*x^2 + exp(x + 1);  %Function


l=-500;
u=600;
es=1e-12;  %Error
maxit=1000;
iter=0;
xr=0;
ea=0;
A=[];


while(1)
xrold = xr;
xr=(l+u)/2;
iter=iter+1;

    if xr~=0
        ea=abs((xr-xrold)/xr)*100;
    end

test=func(l)*func(xr);

    if test<0
        u=xr;
    elseif test>0
        l=xr;
    else
        ea=0;
    end
    fx=func(xr);
    A=[A;iter,xr,fx,ea];
    if ea<=es|iter>=maxit
      fprintf('');
      fprintf('%d %e %e %e',A);
      break
    end
end