metodo de biseccion y falsa posicion

19
UNIVERSIDAD SANTO TOMÁS FACULTAD DE INGENIERÍA MECÁNICA MÉTODOS NUMÉRICOS ‘’MÉTODOS DE BISECCIÓN Y FALSA POSICIÓN’’ Por: Edinson Ferley Guillén Cruz 2091277 Para el desarrollo de problemas en ingeniería, utilizamos los diferentes tipos de cálculos que existen solucionando el problema fácilmente, pero en ocasiones aparecen problemas que para su solución son necesarios aplicar métodos numéricos para conocer una respuesta precisa y aproximada a un valor real. En este caso se utiliza el método de bisección y falsa posición para conocer las raíces de una función de la forma más precisa posible. EJERCICIO 1 Una correa en v con una longitud de L=500 mmes usada para transmitir potencia entre ejes mediante poleas de radio R=60 mmy r=40 mm. Tomando θ como la mitad del ángulo de contacto de la polea pequeña y c como la distancia entre ejes, es posible escribir la siguiente relación para la transmisión: tanθθ= 0.5 LπR Rr Calcular el angulo θ empleando cinco cifras significativas.

Upload: eddie-guillen

Post on 13-Aug-2015

193 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: Metodo de Biseccion y Falsa Posicion

UNIVERSIDAD SANTO TOMÁSFACULTAD DE INGENIERÍA MECÁNICA

MÉTODOS NUMÉRICOS‘’MÉTODOS DE BISECCIÓN Y FALSA POSICIÓN’’

Por:Edinson Ferley Guillén Cruz

2091277

Para el desarrollo de problemas en ingeniería, utilizamos los diferentes tipos de cálculos que existen solucionando el problema fácilmente, pero en ocasiones aparecen problemas que para su solución son necesarios aplicar métodos numéricos para conocer una respuesta precisa y aproximada a un valor real. En este caso se utiliza el método de bisección y falsa posición para conocer las raíces de una función de la forma más precisa posible.

EJERCICIO 1

Una correa en v con una longitud de L=500mmes usada para transmitir potencia entre ejes mediante poleas de radio R=60mmy r=40mm. Tomando θ como la mitad del ángulo de contacto de la polea pequeña y c como la distancia entre ejes, es posible escribir la siguiente relación para la transmisión:

tanθ−θ=0.5L−πRR−r

Calcular el angulo θ empleando cinco cifras significativas.

Para desarrollar el ejercicio por los métodos de bisección y falsa posición es necesario graficar la función para saber cuántas raíces tiene, ya que estos métodos solo aplican para funciones con una única raíz.

Page 2: Metodo de Biseccion y Falsa Posicion

Primero se debe igualar la función a cero.

tanθ−θ−0.5 L−πRR−r

=0

Luego con el programa Matlab escribir un código en un .m para graficar la función con los valores dados en el enunciado.

%Grafica ejercicio 2 poleasfunction grafica_ejercicio_poleas()L=500;R=60;r=40;teta=0:0.1:pi/2; f=(tan(teta))-(teta)-((0.5*L-pi*R)/(R-r));plot(teta,f);grid on

En el código se observa que teta es el dominio de la función, que va de 0 a pi/2 en intervalos de 0.1, lo cual nos da la siguiente gráfica:

Luego con la herramienta de lupa se definen los limites inferior (X l) y superior (Xu) de la primera iteración entre el punto de corte con el eje x.

X l=1 y Xu=1.4

Page 3: Metodo de Biseccion y Falsa Posicion

Teniendo claros los límites y el código de la gráfica, se desarrolla el ejercicio implementando el código de bisección e ingresando la ecuación que genera los gráficos con sus respectivas variables, también se implementa el código de la gráfica al final del código de bisección para que al ejecutar el programa nos muestre también la gráfica. El código queda así:

%Universidad Santo Tomas%Facultadad de Ingenieria Mecanica%Metodos Numericos%Algoritmo De Biseccion Para aproximar la raiz de una funcion F(x)=0%Edinson Guillen%--------------------------------------------------------------------function ejer_poleas_biseccion()grafica_ejercicio_poleas()disp('Metodo de Biseccion');tetal=input('Defina el valor del limite inferior:');tetau=input('Defina el valor del limite superior:');n=input('Defina el numero de cifras significativas:');Es=0.5*10^(2-n);fl=f(tetal);fu=f(tetau);it=1; if sign(fl)==sign(fu) disp('Error: La funcion debe cambiar de signo en (xl,xu)'); return;end%Proceso IterativoEa=Es+1; while (Ea>Es) tetamn=(tetal+tetau)/2; fm=f(tetamn); if fl*fm<0 tetaln=tetal; tetaun=tetamn; elseif fl*fm>0 tetaln=tetamn; tetaun=tetau; else sprintf('La raiz es xm=%3.5f', tetamn) return; end %Muestra calculos de la iteracion if it>=2 Ea=abs((tetamn-tetam)/tetamn)*100; disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetam: ' sprintf('%3.5f',tetamn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetam): ' sprintf('%3.5f',fm) ... ' Ea: ' sprintf('%3.5f',Ea)]); else

Page 4: Metodo de Biseccion y Falsa Posicion

disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetam: ' sprintf('%3.5f',tetamn) ... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetam): ' sprintf('%3.5f',fm) ... ' Ea: -']); end %Actualizacion de variables fl=f(tetal); fu=f(tetau); tetal=tetaln; tetau=tetaun; tetam=tetamn; it=it+1;end%Fin de la funcion principal function fteta = f(teta)L=500;R=60;r=40;fteta=(tan(teta))-(teta)-((0.5*L-pi*R)/(R-r)); function grafica_ejercicio_poleas()L=500;R=60;r=40;teta=0:0.1:pi/2; f=(tan(teta))-(teta)-((0.5*L-pi*R)/(R-r));plot(teta,f);grid on Al ejecutar el programa este nos pide el límite inferior, el límite superior, y el número de cifras significativas. Introduciendo los valores que sacamos con la gráfica y con 5 cifras significativas nos da la siguiente tabla:

Page 5: Metodo de Biseccion y Falsa Posicion

Como se observa en la tabla, el programa por el método de bisección realizo 16 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la gráfica corta al eje x.

Luego llenamos la siguiente tabla:

Método de Bisección (Poleas) Numero de Iteraciones it=16Intervalo de la solución xl=1,34847 xm=1,34848 xu=1,34849

Valores de la función f(xl)=-0,00031 f(xm)=0,00005 f(xu)=0,00017Error aproximado 0,00045

Ahora se desarrolla el ejercicio por el método de Falsa posición, donde tomamos el mismo código de la gráfica y lo escribimos en el código de falsa posición quedando así:

%Universidad Santo Tomas%Facultadad de Ingenieria Mecanica%Metodos Numericos%Algoritmo De Biseccion Para aproximar la raiz de una funcion F(x)=0%Edinson Guillen%--------------------------------------------------------------------function ejer_poleas_falsa_posicion()grafica_ejercicio_poleas()disp('Metodo de Falsa posicion');tetal=input('Defina el valor del limite inferior:');tetau=input('Defina el valor del limite superior:');n=input('Defina el numero de cifras significativas:');Es=0.5*10^(2-n);fl=f(tetal);fu=f(tetau);it=1; if sign(fl)==sign(fu) disp('Error: La funcion debe cambiar de signo en (xl,xu)'); return;end%Proceso IterativoEa=Es+1; while (Ea>Es) tetarn= (tetau)-((fu.*(tetal-tetau))/(fl-fu)); fr=f(tetarn); if fl*fr<0 tetaln=tetal; tetaun=tetarn; elseif fl*fr>0 tetaln=tetarn; tetaun=tetau; else sprintf('La raiz es xm=%3.5f', tetarn) return;

Page 6: Metodo de Biseccion y Falsa Posicion

end %Muestra calculos de la iteracion if it>=2 Ea=abs((tetarn-tetar)/tetarn)*100; disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetar: ' sprintf('%3.5f',tetarn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetar): ' sprintf('%3.5f',fr) ... ' Ea: ' sprintf('%3.5f',Ea)]); else disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetar: ' sprintf('%3.5f',tetarn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetar): ' sprintf('%3.5f',fr) ... ' Ea: -']); end %Actualizacion de variables fl=f(tetal); fu=f(tetau); tetal=tetaln; tetau=tetaun; tetar=tetarn; it=it+1;end%Fin de la funcion principal function fteta = f(teta)L=500;R=60;r=40;fteta=(tan(teta))-(teta)-((0.5*L-pi*R)/(R-r)); function grafica_ejercicio_poleas()L=500;R=60;r=40;teta=0:0.1:pi/2; f=(tan(teta))-(teta)-((0.5*L-pi*R)/(R-r));plot(teta,f);grid on

Al igual que con el método de bisección, al ejecutar el programa este nos pide el límite inferior, el límite superior, y el número de cifras significativas. Introduciendo los valores que sacamos con la gráfica y con 5 cifras significativas nos da la siguiente tabla:

Page 7: Metodo de Biseccion y Falsa Posicion

Como se observa en la tabla, el programa por el método de falsa posición realizo 15 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la gráfica corta al eje x.

Luego llenamos la siguiente tabla:

Método de Falsa Posición (Poleas) Numero de Iteraciones it=15Intervalo de la solución xl=1,34846 xr=1,34848 xu=1,34848

Valores de la función f(xl)=-0,00033 f(xr)=-0,00004 f(xu)=0,00005Error aproximado 0,00018

Luego como se puede evidenciar el método más preciso para el desarrollo del problema es el de falsa posición, porque muestra un menor porcentaje de error así como un menor número de iteraciones.

EJERCICIO 2

En el mecanismo de cuatro barras mostrado, la relación entre el Angulo de entrada θ y el angulo de salida φ esta dada por la ecuación de freudenstein.

R1cosφ−R2cosθ+R3−cos (φ−θ )=0

Dónde:

R1=da

R2=db

R3=d2+a2+b2−c2

2ab

Si d=16cm, a=8cm, b=12cm y c=12 determine numéricamente φ para θ=20 tomando como punto inicial φ0=85.Realice cinco iteraciones tomando cinco cifras significativas.

Page 8: Metodo de Biseccion y Falsa Posicion

Para desarrollar el ejercicio por los métodos de bisección y falsa posición es necesario graficar la función para saber cuántas raíces tiene, ya que estos métodos solo aplican para funciones con una única raíz.

Como la ecuación ya está igualada a cero, lo que se hace es hacer un cambio de variables en la ecuación, donde φ es reemplazado por θ, y θ se reemplaza por su valor numérico que es de 20°, para que cuando se introduzca la ecuación y los datos en los códigos de bisección y falsa posición no sea necesario cambiar la variable teta por fi, quedando la ecuación de la siguiente forma:

(R1cos (θ )−R2cos (20 )+R3−cos (θ−20 ))=0

Luego con el programa Matlab escribir un código en un .m para graficar la función con los valores dados en el enunciado.

function grafica_ejercicio_barras()a=8;b=12;c=12;d=16;teta=0:0.1:pi;R1=d/a;R2=d/b;R3=((d^2)+(a^2)+(b^2)-(c^2))/(2*a*b);f=(R1*cos(teta)-R2*cos(20)+R3-cos(teta-20)); plot(teta,f);grid on

Page 9: Metodo de Biseccion y Falsa Posicion

En el código se observa que teta es el dominio de la función, que va de 0 a pi en intervalos de 0.1, lo cual nos da la siguiente gráfica:

Luego con la herramienta de lupa se definen los limites inferior (X l) y superior (Xu) de la primera iteración entre el punto de corte con el eje x.

X l=1.5 y Xu=2

Teniendo claros los límites y el código de la gráfica, se desarrolla el ejercicio implementando el código de bisección e ingresando la ecuación que genera los gráficos con sus respectivas variables, también se implementa el código de la gráfica al final del código de bisección para que al ejecutar el programa nos muestre también la gráfica. El código queda así:

%Universidad Santo Tomas%Facultadad de Ingenieria Mecanica%Metodos Numericos%Algoritmo De Biseccion Para aproximar la raiz de una funcion F(x)=0%Edinson Guillen%--------------------------------------------------------------------function ejer_barras_biseccion()grafica_ejercicio_barras()disp('Metodo de Biseccion');tetal=input('Defina el valor del limite inferior:');tetau=input('Defina el valor del limite superior:');n=input('Defina el numero de cifras significativas:');Es=0.5*10^(2-n);fl=f(tetal);fu=f(tetau);it=1;

Page 10: Metodo de Biseccion y Falsa Posicion

if sign(fl)==sign(fu) disp('Error: La funcion debe cambiar de signo en (xl,xu)'); return;end%Proceso IterativoEa=Es+1; while (Ea>Es) tetamn=(tetal+tetau)/2; fm=f(tetamn); if fl*fm<0 tetaln=tetal; tetaun=tetamn; elseif fl*fm>0 tetaln=tetamn; tetaun=tetau; else sprintf('La raiz es xm=%3.5f', tetamn) return; end %Muestra calculos de la iteracion if it>=2 Ea=abs((tetamn-tetam)/tetamn)*100; disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetam: ' sprintf('%3.5f',tetamn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetam): ' sprintf('%3.5f',fm) ... ' Ea: ' sprintf('%3.5f',Ea)]); else disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetam: ' sprintf('%3.5f',tetamn) ... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetam): ' sprintf('%3.5f',fm) ... ' Ea: -']); end %Actualizacion de variables fl=f(tetal); fu=f(tetau); tetal=tetaln; tetau=tetaun; tetam=tetamn; it=it+1;end%Fin de la funcion principal function fteta = f(teta)a=8;b=12;c=12;

Page 11: Metodo de Biseccion y Falsa Posicion

d=16;R1=d/a;R2=d/b;R3=((d^2)+(a^2)+(b^2)-(c^2))/(2*a*b);fteta=(R1*cos(teta)-R2*cos(20)+R3-cos(teta-20)); function grafica_ejercicio_barras()a=8;b=12;c=12;d=16;teta=0:0.1:pi;R1=d/a;R2=d/b;R3=((d^2)+(a^2)+(b^2)-(c^2))/(2*a*b);f=(R1*cos(teta)-R2*cos(20)+R3-cos(teta-20)); plot(teta,f);grid on

Al ejecutar el programa este nos pide el límite inferior, el límite superior, y el número de cifras significativas. Introduciendo los valores que sacamos con la gráfica y con 5 cifras significativas nos da la siguiente tabla:

Como se observa en la tabla, el programa por el método de bisección realizo 16 iteraciones para

llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la gráfica corta al eje x.

Luego llenamos la siguiente tabla:

Método de Bisección (Barras) Numero de Iteraciones it=16Intervalo de la solución xl=1,70831 xm=1,70832 xu=1,70833

Valores de la función f(xl)=0,00000 f(xm)=-0,00001 f(xu)=-0,00004Error aproximado 0,00045

Page 12: Metodo de Biseccion y Falsa Posicion

Ahora se desarrolla el ejercicio por el método de Falsa posición, donde tomamos el mismo código de la gráfica y lo escribimos en el código de falsa posición quedando así:

%Universidad Santo Tomas%Facultadad de Ingenieria Mecanica%Metodos Numericos%Algoritmo De Biseccion Para aproximar la raiz de una funcion F(x)=0%Edinson Guillen%--------------------------------------------------------------------function ejer_barras_falsa_posicion()grafica_ejercicio_barras()disp('Metodo de Falsa posicion');tetal=input('Defina el valor del limite inferior:');tetau=input('Defina el valor del limite superior:');n=input('Defina el numero de cifras significativas:');Es=0.5*10^(2-n);fl=f(tetal);fu=f(tetau);it=1; if sign(fl)==sign(fu) disp('Error: La funcion debe cambiar de signo en (xl,xu)'); return;end%Proceso IterativoEa=Es+1; while (Ea>Es) tetarn= (tetau)-((fu.*(tetal-tetau))/(fl-fu)); fr=f(tetarn); if fl*fr<0 tetaln=tetal; tetaun=tetarn; elseif fl*fr>0 tetaln=tetarn; tetaun=tetau; else sprintf('La raiz es xm=%3.5f', tetarn) return; end %Muestra calculos de la iteracion if it>=2 Ea=abs((tetarn-tetar)/tetarn)*100; disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ... ' tetar: ' sprintf('%3.5f',tetarn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetar): ' sprintf('%3.5f',fr) ... ' Ea: ' sprintf('%3.5f',Ea)]); else disp([' It: ' sprintf('%4i',it) ... ' tetal: ' sprintf('%3.5f',tetal) ... ' tetau: ' sprintf('%3.5f',tetau) ...

Page 13: Metodo de Biseccion y Falsa Posicion

' tetar: ' sprintf('%3.5f',tetarn)... ' f(tetal): ' sprintf('%3.5f',fl) ... ' f(tetau): ' sprintf('%3.5f',fu) ... ' f(tetar): ' sprintf('%3.5f',fr) ... ' Ea: -']); end %Actualizacion de variables fl=f(tetal); fu=f(tetau); tetal=tetaln; tetau=tetaun; tetar=tetarn; it=it+1;end%Fin de la funcion principal function fteta = f(teta)a=8;b=12;c=12;d=16;R1=d/a;R2=d/b;R3=((d^2)+(a^2)+(b^2)-(c^2))/(2*a*b);fteta=(R1*cos(teta)-R2*cos(20)+R3-cos(teta-20)); function grafica_ejercicio_barras()a=8;b=12;c=12;d=16;teta=0:0.1:pi;R1=d/a;R2=d/b;R3=((d^2)+(a^2)+(b^2)-(c^2))/(2*a*b);f=(R1*cos(teta)-R2*cos(20)+R3-cos(teta-20)); plot(teta,f);grid on

Al igual que con el método de bisección, al ejecutar el programa este nos pide el límite inferior, el límite superior, y el número de cifras significativas. Introduciendo los valores que sacamos con la gráfica y con 5 cifras significativas nos da la siguiente tabla:

Page 14: Metodo de Biseccion y Falsa Posicion

Como se observa en la tabla, el programa por el método de falsa posición realizo 18 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la gráfica corta al eje x.

Luego llenamos la siguiente tabla:

Método de Falsa Posición (Barras) Numero de Iteraciones it=18Intervalo de la solución xl=1,70831 xr=1,70832 xu=1,70832

Valores de la función f(xl)=0,00000 f(xr)=0,00000 f(xu)=-0,00002Error aproximado 0,00047

Luego como se puede evidenciar el método más preciso para el desarrollo del problema es el de bisección, porque muestra un menor porcentaje de error así como un menor número de iteraciones.