Sie sind auf Seite 1von 6

Algoritmos y cdigos en octave de biseccin

El mtodo de la biseccin consiste en encontrar la raz de una funcin en un


determinado intervalo. Dicho intervalo lo vamos dividiendo cada paso por la mitad,
quedndonos con la mitad que tenga la raz. Al hacer cada vez ms pequeos los
intervalos lo que se conseguimos es una mejor aproximacin a la raz buscada. El
proceso de ir partiendo los intervalos se apoyan en el mtodo de la sucesin de
intervalos encajados de cantor.

Sea f una funcin continua en [a, b] que satisface f(a)f(b) < 0. Entonces f tiene,
necesariamente, al menos un cero en (a, b). Supongamos por simplicidad que
este cero es nico, y llammosle

Algoritmos del mtodo de la biseccin

Paso 1.- Elija valores iniciales inferior, x I, y superior, xu, que encierren la raz, de
forma tal que la funcin cambie de signo en el intervalo. Esto se verifica
comprobando que f(xI) f(xu)<0

Paso 2.- Una aproximacin de la raz x, se determina mediante:

X+ X u
Xr= 2

Paso 3.- Realice las siguientes evaluaciones para determinar en que subintervalo
est la raz:

a) Si f(xI) f(xr)< 0, entonces la raz se encuentra dentro del subintervalo inferior

o izquierdo. Por lo tanto, haga X u= X y vuelva al paso 2.


r

b) Si f(xI) f(xr)> 0, entonces la raz se encuentra dentro del subintervalo inferior

o derecho. Por lo tanto, haga X X y vuelva al paso 2.


r

c) Si f(xI) f(xr)= 0, la raz es igual a xr; termina el clculo.


Ejemplo.-

2 13 15
x x =0
56 28

Paso 1.-

XI= -0.7 Xu= -0.6

X

(0.7 )
f

13 15 51
f ( X u ) =(0.6 )2 (0.6 ) =
56 28 1400

f(xI) * f(xu) < 0

Paso 2.-

X+ X u (0.7 ) +(0.6)
Xr= = =0.65
2 2

Paso 3.-

f(xI)* f(xr) f(xI)* f(xr) = 0

f(xI) f(xI) f(xr)< 0 = Xu= Xr


f(xI) f(xr) > 0 = XI= Xr
f(xI) f(xr) = 0 = Xr = sol
f(xr) = f(-0.65)= 0.037 => f(xI) f(xr) = (+)(+) > 0
Iteracin 2

Paso 1.- XI= -0.65

Xu= -0.6

Paso 2.-

(0 . 65 ) +(0 . 6)
Xr= =0 .625
2

Paso 3.-

+

f(xI) f(xr)= f (0.65 )f (0.625 )=

2 13 15
f (0.625 )=(0.625 ) (0.625 ) =
56 28

5
sol=Xr=0.625=
8
Cdigos en octave de biseccin

function [c,err,yc]=bisect(f,a,b,delta)

%datos

% - f es la funcion, introducida como

% una cadena de caracteres "f"

% - a y b son el estremos izquierdo y el extremo derecho

% - delta es la tolerancia

% Resultados

% - c es el cero

% yc= f(c)

% err es el error estimado de la aproximacion a c

ya=feval=(f,a);

yb=feval(f,b);

if ya*yb>0,break,end

max1=1+round((log(b-a)-log(delta))/log(2) ;

for k=1;max1

c=(a+b)/2;

yc=feaval(f,c);

if yc==0

a=c;

b=c;

elseif yb*yc>0

b=c;

yb=yc;

else

a=c;

ya=yc;

end

if b-a < delta, break, end


end

c=(a+b)/2;

err=abs(b-a);

yc=feval(f,c)

Das könnte Ihnen auch gefallen