METODO DE BISECCION

El método de bisección es uno de los problemas básicos dentro de las aproximaciones numéricas, "búsqueda de raíces". Consiste en obtener una raíz o solución para ecuaciones de la forma f(x)=0.

Demostración gráfica del método de bisección
Se basa en el teorema del valor medio, de ahí su nombre método de bisección o búsqueda binaria. Supongamos que f es una función continua definida dentro del intervalo [a,b], con f(a) y f(b) con signos opuestos. De acuerdo con el teorema del valor medio, existe un valor p tal que f(p)=0. El método consiste en dividir varias veces a los subintervalos de [a,b], y en cada división aproximarse a la mitad que contenga al valor p
Para empezar, supongamos que tenemos un intervalo cualesquiera [a,b] que encierre la raíz, para esto la función debe de cambiar de signo dentro del intervalo. Esto se verifica comprobando que f(a)*f(b)<0.

Una aproximación de la raíz se obtiene mediante:
p=(a+b)/2
Se comprueba en que subintervalo se encuentra ahora la raíz.
  1. Si f(a)*f(p)<0 entonces la raíz se encuentra dentro del subintervalo [a,p]. Por lo tanto b=p, y repetimos la búsqueda.
  2. Si f(a)*f(p)>0 entonces la raíz se encuentra dentro del subintervalo [p,b]. Por lo tanto a=p, y repetimos la búsqueda.
  3. Si f(a)*f(p)=0 la raíz de la función es p, sin embargo este caso no siempre llega a darse, por lo que generalmente no se tiene en cuenta dentro de los códigos de programación.
Cuando se crean los algoritmos generalmente para métodos como este se tiene en cuenta una tolerancia, con la cual podemos comprobar que el resultado obtenido es lo más próximo a la raíz. Dicho valor se compara con el absoluto de la función del último valor calculado, es decir, debe cumplir que:
|f(p)|<Tolerancia
Mientras más pequeño sea la tolerancia aceptada, más próximo es el resultado a la raíz.

Pseudocódigo

ENTRADA: valores a y b, la tolerancia Tol y un máximo de iteraciones Nmax.
SALIDA: solución aproximada p o mensaje de fracaso.
Paso 1: Tome i=1
Paso 2: Mientras i<Nmax repita los pasos 3 a 6
        Paso 3: Tome p=(a+b)/2 (Calculamos p)
        Paso 4: Si f(p)<Tol entonces
                            SALIDA: "La raíz de la función es: ", p (Procedimiento termino con éxito).
                            PARAR
        Paso 5: Tome i=i+1
        Paso 6: Si f(a)*f(p)<0 entonces (Actualizamos nuestros valores a y b)
                            tome b=p
                        De lo contrario
                            tome a=p
Paso 7: SALIDA: "Se ha superado el máximo número de iteraciones" (Procedimiento termino sin éxito).
                PARAR

Algoritmo en Matlab

%Bisección
clear; nmax = input('Número de iteraciones: '); tol = input('Tolerancia: '); disp('Intervalo'); a = input('a= '); b = input('b= '); disp('Ingrese la función'); syms x; f = input('f(x)='); stop=0; i=1; while(i<nmax) p = (a+b)/2; fp = subs(f,x,p); fa = subs(f,x,a); if(abs(fp)<tol) disp('La raíz de la función es'); disp(vpa(p,8)); stop = 1; break; end if(fa*fp<0) b=p; else a=p; end i = i+1; end if(stop~=1) disp('Se ha superado el número máximo de iteraciones'); end

El if(stop~=1) es una forma de evitar que el mensaje de error se muestre si se ha encontrado la aproximación de la raíz.

Si tienen alguna duda o comentario no duden en hacérmelo saber en los comentarios.

No hay comentarios:

Publicar un comentario