Está en la página 1de 13

SESION4: Mtodo de la Biseccin (15 Noviembre del 2010)

ALUMNO : MARN RENGIFO, KELMAN

PROFESOR

MACO VASQUEZ, WILSON

CURSO

ANALISIS NUMERICO

ESCUELA

FSICA

2010

PROGRAMAS MEJORADOS
%METODO DE LA BISECCION function biseccion clear; clc; fprintf('\calculo de la raiz de una ecuacion por mtodo de Biseccin\n\n'); y=input('Dame la funcion:','s'); % Se ingresa la funcin x1=input('Dame el intervalo inferior :'); % Se ingresa el intervalo inferior xu=input('Dame el intervalo superior :'); % Se ingresa el intervalo superior e=input('Dame el porciento del error :'); % Se ingresa el porciento de error xi=0; ea=100; c=1; x=x1; a=eval(y); % Evalua la funcin en el intervalo ingresado x=xu; b=eval(y); % Evalua la funcin en el intervalo ingresado cc=a*b; if cc>0; fprintf('\n\nLos intervalos que ha ingresado para hacer el cculo de la raiz\n\n'); fprintf('\nde la ecuacin no son los adecuados por no existir una raz entre \n\n'); fprintf('\nestos, Ejecute de nuevo el programa, por favor.\n\n'); return end while ea>e % Repite las declaraciones segun el numero definido de veces xr=(x1+xu)/2; x=x1; y1=eval(y); x=xr; yr=eval(y); ea=abs((xr-xi)/xr)*100; % Establece la tolerancia z=y1*yr; if z<0 xu=xr; end if z>0 x1==xr; end if z==0 fprintf('\n\n\n\nLa raiz exacta es: %d',xr); fprintf('\n\nNumero de iteraciones: %d',c); break end xi=xr; c=c+1; end if ea<e fprintf('\n\n\n\nLa raiz exacta es: %d',xr); fprintf('\n\nNumero de iteraciones: %d',c); end %fprintf: Convierte el resultado en una cadena de caracteres que devuelve

%como valor de retorno. % while: Repite las declaraciones un numero definido de veces % if: Es un condicional que sirve apra ejecutar sentencias (es decir, % si se cumple la condicin se realiza el ajuste indicado en la % instruccion, caso contrario no se ejecuta). % abs: valor absoluto

function biseccion1 f=input(' Ingrese la funcion f(x)=','s'); % Se ingresa la funcin a=input(' Ingrese el Limite Inferior del intervalo que contiene a la raiz buscada:'); % Se ingresa el intervalo inferior b=input(' Ingrese el Limite Superior del intervalo que contiene a la raiz buscada:'); % Se ingresa el intervalo superior n=input(' Ingrese el Numero de Iteraciones:'); % Se ingresa el numero de iteraciones xmi=a; xma=b; % define como minimo al limite inferior y maximo al limite superior x=a; fa=eval(f); % Evalua la funcion en en el limite inferior x=b; fb=eval(f); % Evalua la funcion en el limite superior if fa*fb>0 % Evalua si cumple la condicion indicada fprintf('En el intervalo dado no existen raices'); fprintf('\n') else i=1; % contador, i=1 while i<=n r=(a+b)/2; % asgina a la variable r la operacion de biseccion (pto medio) x=a; fa=eval(f); x=b; fb=eval(f); x=r; fr=eval(f); fprintf('\n') % Pasa a la siguiente linea fprintf('%3.0f%10.6f%10.6f%10.6f%10.6f%\n',i,a,b,r); if fr==0; break fprintf('la raiz es:\n'),r else if fa*fr<0 % si el producto de funciones es menor que cero, b=r; % entonces b=r else % caso contrario, a=r; % se evalua para a=r end end i=i+1; % se va iterando de modo consecutivo end fprintf('\nLa raiz es:\n'),r end x=xmi:0.1:xma; % define el intervalo para el domnio (con un paso de 0.1) y=eval(f(x)); % asigna a la variable y la evaluacion de la funcion f(x) plot(x,y); % Grafica la funcion f(x) xlabel('X') % Etiqueta el eje horizontal ylabel('Y') % Etiqueta el eje vertical title(['Grafica f(x)=',f]); % Establece un titulo a la grafica end % finalizar %else : comando que ejecuta las condiciones del if (es decir,"si se cumple

% la condicion se ejecuta, caso contrario se evalua lo siguiente"). % plot : crea un grafico a partir de vectores y/o columnas de matrices, con % escalas lineales sobre ambos ejes. % for : repite las declaraciones un numero determinado de veces.

Ejemplos de Aplicacin de los Programas Biseccion y Biseccin 1 hecho en clase


A continuacin se muestran algunos ejemplos que he desarrollado del Burden usando el programa Biseccion hecho en clase:

1- Aplique el mtodo de biseccin Para encontrar soluciones exactas dentro de 10-5 para los siguientes problemas.

(
Solucin: Para Analticamente:
=

< 10-5 < -5

Log

-n log 2 < -5 n >5/0.3 >1 6.66 n= 17

Numricamente: PROGRAMA biseccin

> In biseccion at 5 Dame la funcion: 2*x*(cos(2*x))-(x+1).^2 Dame el intervalo inferior :-2 Dame el intervalo superior :1 Dame el porciento del error:2 La raiz exacta es: -5.000000e-001

Numero de iteraciones: 2>> 17

Numricamente: PROGRAMA biseccin1

Ingrese la funcion f(x)=2*x*(cos(2*x))-(x+1).^2 Ingrese el Limite Inferior:-2 Ingrese el Limite Superior:1 Ingrese el Numero de Iteraciones:17 TABLA DE LA BISECCION 1. -2.000000 1.000000 -0.500000 2. -2.000000 -0.500000 -1.250000 3. -1.250000 -0.500000 -0.875000 4. -0.875000 -0.500000 -0.687500 5. -0.875000 -0.687500 -0.781250 6. -0.875000 -0.781250 -0.828125 7. -0.828125 -0.781250 -0.804688 8. -0.804688 -0.781250 -0.792969 9. -0.804688 -0.792969 -0.798828 10. -0.798828 -0.792969 -0.795898 11. -0.798828 -0.795898 -0.797363 12. -0.798828 -0.797363 -0.798096 13. -0.798828 -0.798096 -0.798462 14. -0.798462 -0.798096 -0.798279 15. -0.798279 -0.798096 -0.798187 16. -0.798187 -0.798096 -0.798141 17. -0.798187 -0.798141 -0.798164 La raiz es: r= -0.7982

Grfica de f(x) 3

-1

-2

-3

-4

-5 -2

-1.5

-1

-0.5 X

0.5

Analticamente:
=

< 10-5 < -5

Log

-n log 2 < -5 n >5/0.3 >1 6.66 n= 17 Numricamente: METODO DE BISECCION

Ingrese la funcion f(x)=x-(2.^(-x)) Ingrese el Limite Inferior del intervalo que contiene a la raiz buscada: 0 Ingrese el Limite Superior del intervalo que contiene a la raiz buscada: 1 Ingrese el Numero de Iteraciones: 17 TABLA DE LA BISECCION 1 0.000000 1.000000 0.500000 2 0.500000 1.000000 0.750000

3 0.500000 0.750000 0.625000 4 0.625000 0.750000 0.687500 5 0.625000 0.687500 0.656250 6 0.625000 0.656250 0.640625 7 0.640625 0.656250 0.648438 8 0.640625 0.648438 0.644531 9 0.640625 0.644531 0.642578 10 0.640625 0.642578 0.641602 11 0.640625 0.641602 0.641113 12 0.641113 0.641602 0.641357 13 0.641113 0.641357 0.641235 14 0.641113 0.641235 0.641174 15 0.641174 0.641235 0.641205 16 0.641174 0.641205 0.641190 17 0.641174 0.641190 0.641182 La raiz es: r= 0.6412

Por tanto es necesario hacer 17 iteraciones para obtener una aproximacin exacta dentro de 10-5 :

P17 = 0.641182

Grfica de f(x) 0.5

Y
-0.5 -1 0

0.1

0.2

0.3

0.4

0.5 X

0.6

0.7

0.8

0.9

2- Aplique el mtodo de biseccin para encontrar las soluciones exactas dentro de 10-2 para en cada intervalo:

Partiendo de: < 10-2


= <

10-2

< 10-2 < -2

Log

-n log 2 < -2 n >2/0.3 > 6.66 n= 7 Luego aplico el algoritmo del mtodo de biseccin para evaluar la funcin obteniendo: METODO DE LA BISECCION: Ingrese la funcin: (x.^4)-(2*(x.^3))-(4*(x.^2))+4*x+4 Ingrese el lmite inferior del intervalo que contiene a la raz buscada -2

Ingrese el lmite superior del intervalo que contiene a la raz buscada 1 Ingrese el nmero de iteraciones 7 Tabla de la biseccin: 1 2 3 4 5 6 7 -1.500000 -1.250000 -1.375000 -1.437500 -1.406250 -1.421875 -1.414063

Por tanto es necesario hacer 7 iteraciones para obtener una aproximacin exacta dentro de 10-2 :

P7=-1.414063

Grfica de f(x) 12

10

Y
4 2 0 -2 -2

-1.5

-1

-0.5 X

0.5

a. [0,2]

< 10-2 < -2

Log2 + log 0.3 -n log 2 < -2

n >2.3/0.3 >7.66 n= 8 METODO DE LA BISECCION: Ingrese la funcin: (x.^4)-(2*(x.^3))-(4*(x.^2))+4*x+4 Ingrese el lmite inferior del intervalo que contiene a la raz buscada 0 Ingrese el lmite superior del intervalo que contiene a la raz buscada 2 Ingrese el nmero de iteraciones 8 TABLA DE LA BISECCIN: 1 2 3 4 5 6 7 8 1.000000 1.500000 1.250000 1.375000 1.437500 1.406250 1.421875 1.414063

Por tanto es necesario hacer 8 iteraciones para obtener una aproximacin exacta dentro de 10-2 :

P8=1.414063

Grfica de f(x) 5 4 3 2 1

Y
0 -1 -2 -3 -4 0

0.2

0.4

0.6

0.8

1 X

1.2

1.4

1.6

1.8

b.
=

< 10-2 < -2

log

-n log 2 < -2 n >2/0.3 > 6.66 ; n= 7

METODO DE LA BISECCION: Ingrese la funcin: (x.^4)-(2*(x.^3))-(4*(x.^2))+4*x+4 Ingrese el lmite inferior del intervalo que contiene a la raz buscada 2 Ingrese el lmite superior del intervalo que contiene a la raz buscada 3 Ingrese el nmero de iteraciones 7 TABLA DE LA BISECCIN: 1 2 3 4 2.500000 2.750000 2.625000 2.687500

5 6 7

2.718750 2.734375 2.726563

Por tanto es necesario hacer 7 iteraciones para obtener una aproximacin exacta dentro de 10-2 :

P7= 2.726563

Grfica de f(x) 8

Y
0 -2 -4 -6 2

2.1

2.2

2.3

2.4

2.5 X

2.6

2.7

2.8

2.9

c. [-1,0]
=

< 10-2 < -2

Log

-n log 2 < -2 n >2/0.3 > 6.66 n= 7 METODO DE LA BISECCION: Ingrese la funcin: (x.^4)-(2*(x.^3))-(4*(x.^2))+4*x+4

Ingrese el lmite inferior del intervalo que contiene a la raz buscada -1 Ingrese el lmite superior del intervalo que contiene a la raz buscada 0 Ingrese el nmero de iteraciones 7 TABLA DE LA BISECCIN: 1 2 3 4 5 6 7 -0.500000 -0.750000 -0.625000 -0.687500 -0.718750 -0.734375 -0.726563

Por tanto es necesario hacer 7 iteraciones para obtener una aproximacin exacta dentro de 10-2 :

P7 = - 0.726563
Grfica de f(x) 4 3.5 3 2.5 2 1.5 1 0.5 0 -0.5 -1 -1

-0.9

-0.8

-0.7

-0.6

-0.5 X

-0.4

-0.3

-0.2

-0.1