Está en la página 1de 2

Mtodo de Biseccin

http://proton.ucting.udg.mx/~jnorato/materias/metodos/raices/biseccion/index.html

El Mtodo de Biseccion, conocido tambin como de corte binario, de particin en


dos intervalos iguales o mtodo de Bolzano, es un mtodo de bsqueda incremental
donde el intervalo se divide siempre en dos. Si la funcin cambia de signo sobre un
intervalo, se evala el valor de la funcin en el punto medio. La posicin de la raz
se determina situndola en el punto medio del subintervalo dentro del cual ocurre
un cambi de signo. El proceso se repite hasta obtener una mejor aproximacin.

Enseguida se muestra el algoritmo para el Mtodo de Biseccion y el programa


realizado en Matlab.

Algoritmo

Paso 1: Escjanse los valores iniciales xl y xu de forma tal que la funcin cambie de
signo sobre el intervalo. Esto se puede verificar asegurndose de que f(xl)f(xu) < 0.

Paso 2: La primera aproximacin a la raz xr se determina como:

Paso 3: Realice las siguientes ecuaciones y determinece en que subinteralo cae


la raz:

a. si f(xl)f(xr)<0, entonces la raz se encuentra dentro del primer subintervalo.


Por lo tanto, resulvase xu=xr y contine en el paso 4.

b. si f(xl)f(xr)>0, entonces la raz se encuentra dentro del segundo


subintervalo. Por lo tanto, resulvase xl=xr, y contine en el paso 4.

c. si f(xl)f(xr)=0, entonces la raz es igual a xr y se terminan los clculos.

Paso 4: Calclese una nueva aproximacin a la raz mediante:

Paso 5: Decdase si la nueva aproximacin estn exacta como se desea. Si es


as, entonces los clculos terminan, de otra manera se regresa al paso 3.

Programa (en matlab)

%****************************************************************
%** Races de Ecuaciones **
%** Mtodo de Biseccion UdeG **
%** Maestra en Electrnica **
%** Ing. Jess Norato Valencia **
%** Materia: Mtodos Numricos **
%** Maestro: M.C. J.Gilberto Mateos Suarez 8/Dic/99 **
%****************************************************************
clear;
clc;
%****************************************************************
%** Se ingresan los datos de la ecuacin que deseamos **
%** conocer sus races, entre que intervalos y con que **
%** porcentaje de error. **
%****************************************************************
fprintf('\nCalculo de la raz de una ecuacion por mtodo de Biseccion\n\n');
y=input('Dame la funcin : ','s');
xl=input('Dame el intervalo inferior : ');
xu=input('Dame el intervalo superior : ');
e=input('Dame el porciento del error : ');
xi=0;
ea=100;
c=1;

%****************************************************************
%** Se hace el calculo para determinar si en los intervalos **
%** para los que se va a calcular esta comprendida la raiz **
%** de la ecuacin **
%****************************************************************
x=xl;
a=eval(y);
x=xu;
b=eval(y);
cc=a*b;
if cc>0
fprintf('\n\nLos intervalos que ha ingresado para hacer el calculo de la raiz\n\n');
fprintf('\nde la ecuacion no son los adecuados por no existir una raz entre \n\n');
fprintf('\nestos, Execute de nuevo el programa, por favor.\n\n');
break
end

%****************************************************************
%** Se realizan los clculos para determinar la raz en la **
%** siguiente seccion. **
%****************************************************************

while ea>e
xr=(xl+xu)/2;
x=xl;
yl=eval(y);
x=xr;
yr=eval(y);
ea=abs((xr-xi)/xr)*100;
z=yl*yr;
if z<0
xu=xr;
end
if z>0
xl=xr;
end
if z==0
fprintf('\n\n\n\nLa raz exacta es: %d',xr)
fprintf('\n\nNumero de iteraciones: %d',c);
break
end
xi=xr;
c=c+1;
end

%****************************************************************
%** Se imprimen resultados **
%****************************************************************

if ea<e
fprintf('\n\n\n\nLa raz exacta es: %d',xr)
fprintf('\n\nNumero de iteraciones: %d',c);
end

También podría gustarte