Sei sulla pagina 1di 14

UNIVERSIDAD SANTO TOMS FACULTAD DE INGENIERA MECNICA MTODOS NUMRICOS

MTODOS DE BISECCIN Y FALSA POSICIN Por: Edinson Ferley Guilln Cruz 2091277 Para el desarrollo de problemas en ingeniera, utilizamos los diferentes tipos de clculos que existen solucionando el problema fcilmente, pero en ocasiones aparecen problemas que para su solucin son necesarios aplicar mtodos numricos para conocer una respuesta precisa y aproximada a un valor real. En este caso se utiliza el mtodo de biseccin y falsa posicin para conocer las races de una funcin de la forma ms precisa posible. EJERCICIO 1 Una correa en v con una longitud de es usada para transmitir potencia entre ejes mediante poleas de radio y . Tomando como la mitad del ngulo de contacto de la polea pequea y como la distancia entre ejes, es posible escribir la siguiente relacin para la transmisin:

Calcular el angulo

empleando cinco cifras significativas.

Para desarrollar el ejercicio por los mtodos de biseccin y falsa posicin es necesario graficar la funcin para saber cuntas races tiene, ya que estos mtodos solo aplican para funciones con una nica raz.

Primero se debe igualar la funcin a cero.

Luego con el programa Matlab escribir un cdigo en un .m para graficar la funcin con los valores dados en el enunciado.
%Grafica ejercicio 2 poleas 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

En el cdigo se observa que teta es el dominio de la funcin, que va de 0 a pi/2 en intervalos de 0.1, lo cual nos da la siguiente grfica:

Luego con la herramienta de lupa se definen los limites inferior ( ) y superior ( iteracin entre el punto de corte con el eje x. y

) de la primera

Teniendo claros los lmites y el cdigo de la grfica, se desarrolla el ejercicio implementando el cdigo de biseccin e ingresando la ecuacin que genera los grficos con sus respectivas variables, tambin se implementa el cdigo de la grfica al final del cdigo de biseccin para que al ejecutar el programa nos muestre tambin la grfica. El cdigo 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 Iterativo Ea=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) 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 lmite inferior, el lmite superior, y el nmero de cifras significativas. Introduciendo los valores que sacamos con la grfica y con 5 cifras significativas nos da la siguiente tabla:

Como se observa en la tabla, el programa por el mtodo de biseccin realizo 16 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la grfica corta al eje x. Luego llenamos la siguiente tabla: Mtodo de Biseccin (Poleas) Numero de Iteraciones Intervalo de la solucin Valores de la funcin Error aproximado it=16 xl=1,34847 f(xl)=-0,00031 0,00045 xm=1,34848 f(xm)=0,00005 xu=1,34849 f(xu)=0,00017

Ahora se desarrolla el ejercicio por el mtodo de Falsa posicin, donde tomamos el mismo cdigo de la grfica y lo escribimos en el cdigo de falsa posicin 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 Iterativo Ea=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) ... ' 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 mtodo de biseccin, al ejecutar el programa este nos pide el lmite inferior, el lmite superior, y el nmero de cifras significativas. Introduciendo los valores que sacamos con la grfica y con 5 cifras significativas nos da la siguiente tabla:

Como se observa en la tabla, el programa por el mtodo de falsa posicin realizo 15 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la grfica corta al eje x. Luego llenamos la siguiente tabla: Mtodo de Falsa Posicin (Poleas) Numero de Iteraciones Intervalo de la solucin Valores de la funcin Error aproximado it=15 xl=1,34846 f(xl)=-0,00033 0,00018 xr=1,34848 f(xr)=-0,00004 xu=1,34848 f(xu)=0,00005

Luego como se puede evidenciar el mtodo ms preciso para el desarrollo del problema es el de falsa posicin, porque muestra un menor porcentaje de error as como un menor nmero de iteraciones. EJERCICIO 2 En el mecanismo de cuatro barras mostrado, la relacin entre el Angulo de entrada de salida esta dada por la ecuacin de freudenstein. ( Dnde: ) y el angulo

Si d=16cm, a=8cm, b=12cm y c=12 determine numricamente para tomando como punto inicial .Realice cinco iteraciones tomando cinco cifras significativas.

Para desarrollar el ejercicio por los mtodos de biseccin y falsa posicin es necesario graficar la funcin para saber cuntas races tiene, ya que estos mtodos solo aplican para funciones con una nica raz. Como la ecuacin ya est igualada a cero, lo que se hace es hacer un cambio de variables en la ecuacin, donde es reemplazado por , y se reemplaza por su valor numrico que es de 20, para que cuando se introduzca la ecuacin y los datos en los cdigos de biseccin y falsa posicin no sea necesario cambiar la variable teta por fi, quedando la ecuacin de la siguiente forma:

( )

))

Luego con el programa Matlab escribir un cdigo en un .m para graficar la funcin 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

En el cdigo se observa que teta es el dominio de la funcin, que va de 0 a pi en intervalos de 0.1, lo cual nos da la siguiente grfica:

Luego con la herramienta de lupa se definen los limites inferior ( ) y superior ( iteracin entre el punto de corte con el eje x. y

) de la primera

Teniendo claros los lmites y el cdigo de la grfica, se desarrolla el ejercicio implementando el cdigo de biseccin e ingresando la ecuacin que genera los grficos con sus respectivas variables, tambin se implementa el cdigo de la grfica al final del cdigo de biseccin para que al ejecutar el programa nos muestre tambin la grfica. El cdigo 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;

if sign(fl)==sign(fu) disp('Error: La funcion debe cambiar de signo en (xl,xu)'); return; end %Proceso Iterativo Ea=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; 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 lmite inferior, el lmite superior, y el nmero de cifras significativas. Introduciendo los valores que sacamos con la grfica y con 5 cifras significativas nos da la siguiente tabla:

Como se observa en la tabla, el programa por el mtodo de biseccin realizo 16 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la grfica corta al eje x. Luego llenamos la siguiente tabla: Mtodo de Biseccin (Barras) Numero de Iteraciones Intervalo de la solucin Valores de la funcin Error aproximado it=16 xl=1,70831 f(xl)=0,00000 0,00045 xm=1,70832 f(xm)=-0,00001 xu=1,70833 f(xu)=-0,00004

Ahora se desarrolla el ejercicio por el mtodo de Falsa posicin, donde tomamos el mismo cdigo de la grfica y lo escribimos en el cdigo de falsa posicin 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 Iterativo Ea=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) ...

' ' ' ' ' end

tetar: ' sprintf('%3.5f',tetarn)... f(tetal): ' sprintf('%3.5f',fl) ... f(tetau): ' sprintf('%3.5f',fu) ... f(tetar): ' sprintf('%3.5f',fr) ... Ea: -']);

%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 mtodo de biseccin, al ejecutar el programa este nos pide el lmite inferior, el lmite superior, y el nmero de cifras significativas. Introduciendo los valores que sacamos con la grfica y con 5 cifras significativas nos da la siguiente tabla:

Como se observa en la tabla, el programa por el mtodo de falsa posicin realizo 18 iteraciones para llegar a una respuesta con cinco cifras significativas aproximadas al punto donde la grfica corta al eje x. Luego llenamos la siguiente tabla: Mtodo de Falsa Posicin (Barras) Numero de Iteraciones Intervalo de la solucin Valores de la funcin Error aproximado it=18 xl=1,70831 f(xl)=0,00000 0,00047 xr=1,70832 f(xr)=0,00000 xu=1,70832 f(xu)=-0,00002

Luego como se puede evidenciar el mtodo ms preciso para el desarrollo del problema es el de biseccin, porque muestra un menor porcentaje de error as como un menor nmero de iteraciones.

Potrebbero piacerti anche