Está en la página 1de 7

MÉTODOS NUMÉRICOS

BISECCIÓN
1. Aplicar bisección para hallar el mayor cero de h(x)=(x-2)2 – ln(x). con una
tolerancia de 10-5

 Primero graficamos la función para encontrar los puntos de intersección,


nuestras raíces:
x=0.1:0.01:4;
y1=(x-2).^2;
y2=log(x);
plot(x,y1,'r',x,y2,'k', 'linewidth', 2)
grid on

-1

-2

-3
0 0.5 1 1.5 2 2.5 3 3.5 4
 Escribir la función a la que se le va a aplicar bisección en un archivo tipo
function, esto se hace en otro editor:

function y=h(x)
y=(x-2).^2-log(x);
end

 Programa:
function [c] = bisec(f,a,b,tol)
%DATOS
% f es la función a la cual se le va a aplicar bisección
% y es introducida como una cadena de caracteres 'f'
% a y b son los extremos del intervalo
% tol es la tolerancia para el error
%RESULTADOS
% c es la aproximación al cero de la función f
k=0;
ya=feval(f,a);
yb=feval(f,b);
if ya*yb<=0
while abs(a-b)/2>tol
c = (a+b)/2;
yc=feval(f,c);
fprintf('%8d%17.11f%17.11f%17.11f%17.11f\n',k,a,b,c,yc);
k=k+1;
if yc==0
a=b;
elseif ya*yc<0
b=c;yb=yc;
else
a=c;ya=yc;
end
end
else
fprintf('Cambiar limites');
end
 En el Comand Windows ingresar los datos necesarios para correr el
programa:

>> a=3,b=4,tol=10.^(-5)
a=
3
b=
4
tol =
1.0000e-005
>> [c] = bisec('h',a,b,tol)
0 3.00000000000 4.00000000000 3.50000000000
0.99723703150
1 3.00000000000 3.50000000000 3.25000000000
0.38384500366
2 3.00000000000 3.25000000000 3.12500000000
0.12619071681
3 3.00000000000 3.12500000000 3.06250000000
0.00967467413
4 3.00000000000 3.06250000000 3.03125000000 -
0.04549851320
5 3.03125000000 3.06250000000 3.04687500000 -
0.01816920958
6 3.04687500000 3.06250000000 3.05468750000 -
0.00431157341
7 3.05468750000 3.06250000000 3.05859375000
0.00266547603
8 3.05468750000 3.05859375000 3.05664062500 -
0.00082706753
9 3.05664062500 3.05859375000 3.05761718750
0.00091819957
10 3.05664062500 3.05761718750 3.05712890625
0.00004531484
11 3.05664062500 3.05712890625 3.05688476563 -
0.00039093914
12 3.05688476563 3.05712890625 3.05700683594 -
0.00017282785
13 3.05700683594 3.05712890625 3.05706787109 -
0.00006376043
14 3.05706787109 3.05712890625 3.05709838867 -
0.00000922377
15 3.05709838867 3.05712890625 3.05711364746
0.00001804529
c=
3.0571
2. Aplicar bisección para hallar el mayor cero de h(x)=x3 – x-2con una tolerancia
de 10-5

 Primero graficamos la función para encontrar los puntos de intersección,


nuestras raíces:

x=-3:0.01:3;
y1=x.^3;
y2=x-2;
plot(x,y1,'r',x,y2,'k', 'linewidth', 2)
grid on

30

20

10

-10

-20

-30
-3 -2 -1 0 1 2 3
 Escribir la función a la que se le va a aplicar bisección en un archivo tipo
function, esto se hace en otro editor:

function y=h(x)
y=(x^3)-x+2;
end

 Programa:
function [c] = bisec(f,a,b,tol)
%DATOS
% f es la función a la cual se le va a aplicar bisecci�n
% y es introducida como una cadena de caracteres 'f'
% a y b son los extremos del intervalo
% tol es la tolerancia para el error
%RESULTADOS
% c es la aproximaci�n al cero de la función f
k=0;
ya=feval(f,a);
yb=feval(f,b);
if ya*yb<=0
while abs(a-b)/2>tol
c = (a+b)/2;
yc=feval(f,c);
fprintf('%8d%17.11f%17.11f%17.11f%17.11f\n',k,a,b,c,yc);
k=k+1;
if yc==0
a=b;
elseif ya*yc<0
b=c;yb=yc;
else
a=c;ya=yc;
end
end
else
fprintf('Cambiar limites');
end

 En el Comand Windows ingresar los datos necesarios para correr el


programa:
>> a=-2,b=-1,tol=10.^(-5)
a=
-2
b=
-1
tol =
1.0000e-005
>> [c] = bisec('h',a,b,tol)
0 -2.00000000000 -1.00000000000 -1.50000000000
0.12500000000
1 -2.00000000000 -1.50000000000 -1.75000000000 -
1.60937500000
2 -1.75000000000 -1.50000000000 -1.62500000000 -
0.66601562500
3 -1.62500000000 -1.50000000000 -1.56250000000 -
0.25219726563
4 -1.56250000000 -1.50000000000 -1.53125000000 -
0.05911254883
5 -1.53125000000 -1.50000000000 -1.51562500000
0.03405380249
6 -1.53125000000 -1.51562500000 -1.52343750000 -
0.01225042343
7 -1.52343750000 -1.51562500000 -1.51953125000
0.01097124815
8 -1.52343750000 -1.51953125000 -1.52148437500 -
0.00062217563
9 -1.52148437500 -1.51953125000 -1.52050781250
0.00517888647
10 -1.52148437500 -1.52050781250 -1.52099609375
0.00227944332
11 -1.52148437500 -1.52099609375 -1.52124023438
0.00082890586
12 -1.52148437500 -1.52124023438 -1.52136230469
0.00010343312
13 -1.52148437500 -1.52136230469 -1.52142333984 -
0.00025935425
14 -1.52142333984 -1.52136230469 -1.52139282227 -
0.00007795631
15 -1.52139282227 -1.52136230469 -1.52137756348
0.00001273947
c=
-1.5214