Método de Bisecciones

Método de Bisecciones.

 

Este método es conocido también como de corte binario. de partición en dos intervalos iguales o método de Bolzano. Es un método de búsqueda incremental donde el intervalo de búsqueda se divide en dos. Si la función cambia de signo sobre un intervalo, se calcula el valor en el punto medio. El nuevo intervalo de búsqueda será aquel donde el producto de la función cambie de signo.

 

Ejemplo.

 

Considere la función f(x) = x-cosx, a priori sabemos que la función tiene un cruce por cero en el intervalo [0,1], así que nuestra búsqueda se concentrará en este.

 

iter

inicio

mitad

fin

f(ini)

f(mitad)

f(fin)

0

0.0

0.5

1.0

-1.0

-0.3775

0.4596

1

0.5

0.75

1.0

-0.3775

0.0183

0.4596

2

0.5

0.625

0.75

-0.3775

-0.1859

0.0183

3

0.625

0.6875

0.75

-0.1859

-0.0853

0.0183

4

0.6875

0.71875

0.75

-0.0853

-0.0338

0.0183

5

0.71875

0.734375

0.75

-0.0338

-0.0078

0.0183

6

0.734375

0.7421875

0.75

-0.0078

0.0051

0.0183

7

0.734375

0.73828125

0.7421875

-0.0078

-0.0013

0.0051

8

0.73828125

0.740234375

0.7421875

-0.0013

0.0019

0.0051

9

0.73828125

0.7392578125

0.740234375

-0.0013

0.0002

0.0019

 

La implementación recursiva de este algoritmo es:

 

  public static double Biseccion(double ini, double fin)

  {

    double mitad;    mitad = (fin + ini)/2.0;

    if((fin - ini) > 0.001)

    {

      if(funcion(ini)*funcion(mitad) < 0)

        return Biseccion(ini, mitad);

      else return Biseccion(mitad, fin);

    }

    else return (mitad);

  }

 

  public static double funcion(double x)

  {

    return (x - Math.cos(x));

  }

 

Regresar.