Documentos de Académico
Documentos de Profesional
Documentos de Cultura
http://proton.ucting.udg.mx/~jnorato/materias/metodos/raices/biseccion/index.html
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.
%****************************************************************
%** 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