You are on page 1of 15

MTODO DE BISECCIN PARA CALCULO DE RAICES

Es un mtodo cerrado o de intervalos que se utiliza para calcular las races de


ecuaciones, cuya caracterstica es que las funciones cambian de signo en la
vecindad de la raz. Para esta tcnica se requiere proporcionar dos valores
iniciales para la raz.
Definicin :
En general, si f(x) es real y continua en el intervalo que va desde X L a XU, y f(XL) y
f(XU) tienen signos opuestos, es decir,
f (X L ) * f (XU ) 0

entonces hay al menos una raz real entre XL y XU.


Los mtodos de bsqueda incremental aprovechan esta caracterstica localizando
un intervalo en el que la funcin cambie de signo. Entonces, la localizacin del
cambio de signo (y, en consecuencia, de la raz) se logra con ms exactitud al
dividir el intervalo en varios subintervalos. Se investiga estos subintervalos para
encontrar el cambio de signo. El proceso se repite y la aproximacin a la raz
mejora cada vez ms en la medida que los subintervalos se dividen en intervalos
cada vez ms pequeos .
En numero de iteraciones para el clculo del valor de X R (valor para el cual la
funcin f(XR) = 0) mas preciso; se definir mediante el criterio de error relativo
porcentual a, donde:
a

Xr nuevo Xr anterior
* 100%
Xr nuevo

XU X L
* 100%
XU X L

Cuando a es menor que un valor previamente prefijado s, termina el clculo

Algoritmo
El algoritmo para el mtodo de biseccin se puede resumir en los siguientes
pasos :
Paso 1 :
Elija valores iniciales inferior, XL, y superior Xu, que encierran la raz, de forma
tal que la funcin cambie de signo en el intervalo. Esto se verifica comprobando
que f(XL)* f(XU) < 0.
Paso 2:
Una aproximacin de la raz XR se determina mediante :
X R

X L XU
XL

Paso 3:
Realice las siguientes evaluaciones para determinar en qu subintervalo est la
raz :
a)

Si f(XL)* f(XU) < 0, entonces la raz se encuentra dentro del subintervalo


inferior o izquierdo. Por lo tanto, haga XU = XR y vuelva al paso 2.

b)

Si f(XL)* f(XU) > 0, entonces la raz se encuentra dentro del subintervalo


superior o derecho. Por lo tanto, haga XL = XR y vuelva al paso 2.

c)

Si f(XL)* f(XU) = 0, entonces la raz es igual a XR; termina el clculo.

Programa
Para desarrollar el programa se utiliz el Software MATLAB y las herramientas
para implementar los m-files.
Programa para ejecutar el mtodo de biseccin, evaluando la funcin
particular Paracadas.

Ejemplo1
Se desea determinar el coeficiente de arrastre c necesario para que un
paracaidista de masa m = 68 . 1Kg tenga una velocidad de 40 m/s despus de una
cada libre de t = 10 s. La aceleracin de la gravedad es 9.8m/s2 .
Solucin :
El problema se resuelve determinando la raz de la ecuacin (1)
f (c )

g *m
(1 e ( c / m )*t ) V (1)
c

Al sustituir los parmetros en(1) se obtiene :


f (c )

667.38
(1 e 0.146843c ) 40
c

La raz de la ecuacin 1 se define para los valores de c, que hagan f(c) = 0


A continuacin se muestra el cdigo de programacin para ejecutar el mtodo
iterativo de biseccin para obtener la raz de la ecuacin 1, donde f(c) = 0.

Ejemplo1
xl = input('Limite inferior del intervalo : ');
xu = input('Limite superior del intervalo : ');
es = input('Criterio de terminacion : ');
imax = input('Numero de iteraciones propuesto : ');
Biseccion (xl, xu, es, imax);
function Biseccion = f(xl, xu, es, imax)
ea = 0;
xr = 0;
iter = 0;
xrold = 0;
while (1)
xrold = xr;
xr = ( xl + xu ) / 2;
iter = iter + 1;
if xr ~= 0
ea = abs (( xr - xrold) / xr ) * 100 ;
end
test = Paracaidista (xl) * Paracaidista (xr);
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
ea = 0;
end
if (ea < es)||( iter >= imax), break, end
end
Biseccion = xr
Iteraciones = iter
Evaluacion = abs(Paracaidista (xr))
end
function Paracaidista = f (c)
p = (( 667.38 / c ) * ( 1 - exp ( -0.146843 * c ))) - 40 ;
Paracaidista = p;

Resultados
Para este caso el algoritmo de Biseccin, tiene 2 criterios de paro que estn
definidos por :
-

a es menor que un valor previamente prefijado s


El numero de iteraciones que el usuario quiere que se realicen para el
clculo del valor de la raz

Se define que, el paro se realice cuando se presente cualquiera de las 2


condiciones anteriores. Si se requiere bastante precisin se puede escoger un s
bastante pequeo bien dar un numero de iteraciones suficientemente grande.
Caso 1 : s = 0.5 , Iteraciones = 10

Caso 2 : s = 0.00001 , Iteraciones = 10

Caso 3 : s = 0.00001 , Iteraciones = 3

Note que a medida que se disminuye el nmero de iteraciones el criterio s , el


valor de c para la raz se hace ms impreciso, lo cual se puede observar en el
resultado de la evaluacin de f(c). Si s el nmero de iteraciones se aumenta,
el valor de c se vuelve ms preciso, tal como se muestra en el caso 4.

Caso 4 : s = 0.000001 , Iteraciones = 2000

Grfica de la funcin

Para, calcular races de otras funciones, lo nico que hay que hacer es definir
otra funcin que cumpla con los requisitos dados en la definicin. El programa de
biseccin sera el mismo function Biseccion = f(xl, xu, es, imax); y lo nico que habra
que redefinir es la funcin a la cual se le van a calcular las races test = Paracaidista
(xl) * Paracaidista (xr);

Para este caso a test se le asignara otra funcin f previamente definida


test = f (xl) * f (xr);

Donde f puede ser


definicin anterior

un polinomio; o cualquier funcin que cumpla con la

Ejemplo 2 :
Hallar la raz de f(x)= x2-2 en el intervalo [0,2].
Como f(x) es continua en el intervalo dado y f(0) f(2)<0, podemos asegurar que
existe una raiz, y como f(x) es diferenciable con derivada continua siendo f(x) >
0 en [0,2], la raz es nica.
El valor terico para la raz es : X 2 1.4114 ...

Ejemplo2
xl = input('Limite inferior del intervalo : ');
xu = input('Limite superior del intervalo : ');
es = input('Criterio de terminacion : ');
imax = input('Numero de iteraciones propuesto : ');
Biseccion1 (xl, xu, es, imax);
function Biseccion1 = f(xl, xu, es, imax)
ea = 0;
xr = 0;
iter = 0;
xrold = 0;
while (1)
xrold = xr;
xr = ( xl + xu ) / 2;
iter = iter + 1;
if xr ~= 0
ea = abs (( xr - xrold) / xr ) * 100 ;
end
test = Polinomio (xl) * Polinomio (xr);
if test < 0
xu = xr;
elseif test > 0
xl = xr;
else
ea = 0;
end
if (ea < es)||( iter >= imax), break, end
end
Biseccion = xr
Iteraciones = iter
Evaluacion = abs(Polinomio (xr))
end
function Polinomio = f (c)
p = exp(2*log(abs(c)))-2;
Polinomio = p;

Resultados
Caso 1 : s = 0.5 , Iteraciones = 10

Caso 2 : s = 0.000005, iteraciones = 1000

Grfica de la funcin

You might also like