Académique Documents
Professionnel Documents
Culture Documents
Wilfrido Antonio Gmez Arias (wilantgomari@hotmail.com) Laboratorio de Fsica Computacional Facultad de Ciencias, Universidad Nacional Autnoma de Mxico, Ciudad Universitaria, Coyoacn, 04510, Mxico, D.F., septiembre de 2011.
Introduccin
Muchos fenmenos fsicos se pueden describir mediante ecuaciones diferenciales ordinarias. Por ejemplo la cada libre de un cuerpo en un medio viscoso, el movimiento de un sistema masa resorte, la oscilacin de un pndulo, entre muchos otros. En algunos casos la ecuacin o el sistema de ecuaciones diferenciales es lineal y su solucin analtica puede encontrarse fcilmente mediante varios mtodos matemticos. Sin embargo, existen fenmenos que son descritos por ecuaciones diferenciales no son lineales, por ejemplo, la oscilacin del pndulo. Una alternativa para solucionar ecuaciones diferenciales lineales o no lineales son los mtodos numricos. Los mtodos Runge-Kutta estn entre los ms utilizados para la solucin de estos problemas. Aunque existen otros mtodos numricos para la solucin de ecuaciones diferenciales ordinarias como el mtodo de los residuos ponderados y las diferencias finitas (mtodo de Euler), estos mtodos pueden utilizar algoritmos complicados y algunos estn restringidos a ecuaciones diferenciales lineales.
Objetivo
Utilizando los mtodos numricos para resolver ecuaciones diferenciales ordinarias: mtodo de Euler, mtodo modificado de Euler y mtodo de Runge-Kutta 4, resolver la ecuacin diferencial de segundo orden del tipo (1) Con las condiciones de frontera (2) Este problema as planteado se denomina un problema de contorno o con valores en la frontera. En particular estudiaremos el caso en el que el problema de frontera es lineal, es decir, cuando la funcin es de la forma (3)
donde
Mtodo de Euler
El mtodo ms elemental de resolucin de , (4)
es conocido con el nombre de mtodo de Euler. Consiste en aproximar el valor de (5) A esta ecuacin se le llama ecuacin de diferencias asociada al mtodo de Euler y expresa el hecho de que la derivada de en , dada por puede ser aproximada mediante el cociente incremental. Es decir en se traza la tangente y se toma como valor de el que toma tal tangente en . Ver figura 1. Figura 1.
Salida Paso 2 Paso 3 Para Haga (calcule para (calcule para ) Paso 4 Salida ) haga pasos 3,4
Programa en Matlab
Entradas: valor inicial , tiempo inicial , tamao de paso h, nmero de puntos N Salidas: valores tal que
x(1)= ; t(1)= ; for n=1:N x(n+1)=x(n)+h*f(t(n),x(n)); t(n)=t(n-1)+h; end
Ahora, si aplicamos la ecuacin de diferencias asociada al mtodo de Euler a la ecuacin (3) obtenemos entonces (8)
Salida Paso 2 Paso 3 Para Haga (calcule para ) (calcule para ) (calcule para ) Paso 4 Salida haga pasos 3,4
Programa en Matlab
Entradas: valor inicial , Salidas: valores tal que , tiempo inicial , tamao de paso h, nmero de puntos N
Mtodo modificado de Euler Esto mtodo se deduce seleccionando la forma ms apropiada de cuatro parmetros con que se aproxima el polinomio de Taylor de orden 3, es decir, (9) con (10) Seleccionando deducimos el mtodo modificado de Euler, por lo tanto la ecuacin de diferencia queda como (11)
Salida Paso 2 Paso 3 Para Haga (calcule para (calcule para ) Paso 4 Salida ) haga pasos 3,4
Programa en Matlab
Entradas: valor inicial , tiempo inicial , tamao de paso h, nmero de puntos N Salidas: valores tal que
x(1)= ; t(1)= ; for n=1:N x(n+1)=x(n)+h/2*(f(t(n),x(n))+h*f(t(n+1),x(n) + h*f(t(n),x(n))); t(n+1)=t(n)+h; end
Ahora, si aplicamos la ecuacin de diferencias asociada al mtodo modificado de Euler a la ecuacin (3) obtenemos entonces
(12)
Salida
Paso 2 Paso 3
Para Haga
(calcule para
Programa en Matlab
Entradas: valor inicial , Salidas: valores tal que , tiempo inicial , tamao de paso h, nmero de puntos N
x(1)= ; f(1)= t(1)= ; for n=1:N x(n+1)=x(n)+h/2*(f(t(n),x(n))+h*f(t(n),x(n) + h*f(t(n),x(n))); f(n+1)=f(n)+h/2*(g(t(n),x(n))+h*g(t(n),x(n) + h*g(t(n),x(n))); t(n)=t(n-1)+h; end
(13)
( (
) ) (14)
Paso 1
Tome
( (
) )
Paso 4
Paso 5
Salida
Programa en Matlab
Entradas: valor inicial , tiempo inicial , tamao de paso h, nmero de puntos N Salidas: valores tal que
x(1)= ; t(1)= ; for n=1:N k1=h*f(t(n),y(n)); k2=h*f(t(n)+h/2,y(n)+k1/2); k3=h*f(t(n)+h/2,y(n)+k2/2); k4=h*f(t(n)+h,y(n)+k3); x(n+1)=x(n)+1/6*h*(k1+2*k2+2*k3+k4); t(n+1)=t(n)+h; end
Ahora, si aplicamos la ecuacin de diferencias asociada al mtodo de Runge-Kutta de orden 4 a la ecuacin (3) obtenemos entonces
(16)
Paso 1
Tome
( (
) )
( ( (
) ) )
Paso 4
Paso 5
Salida
Programa en Matlab
Entradas: valor inicial , , tiempo inicial , tamao de paso h, nmero de puntos N
Salidas: valores
x(1)= ; f(1)= t(1)= ; for n=1:N
tal que
k1x=h*f(t(n),x(n)); k2x=h*f(t(n)+h/2,y(n)+k1x/2); k3x=h*f(t(n)+h/2,y(n)+k2x/2); k4x=h*f(t(n)+h,y(n)+k3x); x(n+1)=x(n)+1/6*h*(k1x+2*k2x+2*k3x+k4x); k1f=h*g(t(n),f(n)); k2f=h*g(t(n)+h/2,y(n)+k1f/2); k3f=h*g(t(n)+h/2,y(n)+k2f/2); k4f=h*g(t(n)+h,y(n)+k3f); x(n+1)=x(n)+1/6*h*(k1f+2*k2f+2*k3f+k4f); t(n+1)=t(n)+h; end
Bibliografa
[1] Richard L. Burden / J. Douglas Faires , Anlisis Numrico, (Sptima edicin) [2] J. H. Mathews, K. D. Fink: Mtodos Numricos con Matlab., Prentice-Hall, 2000.
proporcional a la velocidad (buena aproximacin en muchos casos), esta fuerza suele representarse por la expresin emprica (4) donde c es la constante de amortiguamiento. Dado que se opone al movimiento, signo opuesto a la velocidad del objeto, realiza un trabajo negativo y es la causa de que la energa disminuya. Introduciendo este trmino en la 2 ley de Newton obtenemos la ecuacin diferencial de movimiento de un sistema amortiguado (5) Objetivo Determinar las soluciones de la ecuacin diferencial ordinaria que describe el movimiento de un sistema acoplado masa-resorte (oscilador armnico amortiguado), utilizando para ello los mtodos de aproximacin numrica, que sern escritos en el lenguaje de programacin Matlab. Los mtodos de aproximacin a utilizar son: el mtodo de Euler, mtodo modificado de Euler y el mtodo de Runge-Kutta de orden 4. Posteriormente hacer una comparacin de las soluciones aproximadas con la solucin analtica. Planteamiento del problema El movimiento de un sistema acoplado masa-resorte est descrito por la ecuacin diferencial de movimiento de un sistema amortiguado. Por lo tanto debemos hacer el anlisis de la ecuacin
Solucin analtica [1,2] Una forma de resolver analticamente esta ecuacin es encontrando su ecuacin caracterstica de la siguiente forma: proponiendo la solucin , y sustituyendo en la ecuacin (5) obtenemos para , , que tiene las siguientes soluciones, . (8) Dependiendo de los valores de los parmetros que intervienen, podemos obtener tres casos posibles:
(6)
(7)
sobre amortiguado crtico amortiguado En el primer caso, las races de la ecuacin (7) de tal modo que la solucin tiene la forma, , y , son reales y negativas,
(9)
el movimiento no es oscilatorio, la amplitud inicial x decae a cero tan rpidamente como grandes sean y , es decir, dependiendo de que tan grande sea la razn , la resistencia del medio es grande comparado con . Un ejemplo de este tipo de sistemas son los amortiguadores automticos que cierran las puertas sin golpear y sin qye oscilen. Las constantes y se determinan por las condiciones iniciales. En el caso crtico, las races estn degeneradas, = = , qu se tiene un caso especial de oscilaciones sobre amortiguadas y la solucin general toma la forma: , (10)
El tercer caso resulta el ms interesante fsicamente. Hay dos valores complejos de donde , (11)
Donde
caso la solucin se puede escribir como sigue, , Donde forma, , (13) y (12)
y dependen de las condiciones iniciales. El movimiento es oscilatorio con frecuencia , pero su amplitud decae con el tiempo de forma exponencial; la atenuacin de est determinada por la exponencial decreciente, las oscilaciones terminan y sisipa toda la energa inicial, este es claramente un sistema no conservativo. Solucin numrica [3,4,5] Resolver la ecuacin (5) de manera numrica, es hacer uso de los mtodos de aproximacin para resolver ecuaciones diferenciales ordinarias de segundo orden [5].
Los mtodos de aproximacin a utilizar son: el mtodo de Euler, el mtodo modificado de Euler y el mtodo de Runge-Kutta de orden 4. Estos sern escritos en el lenguaje de Matlab. Antes de comenzar que debemos definir los parmetros de la ecuacin (5). Estos parmetros son: x= desplazamiento desde la posicin de equilibrio t= tiempor (s) m= 20 kg masa c= c1, c2, c3 coeficiente de amortiguamiento (N*s/m) c1= 5 (subamortiguado) c2= 40 (amortiguamiento crtico) c3 = 200 (sobreamortiguado) k= 20 N/m constante del resorte. x=10 velocidad inicial x= 1 desplazamiento inicial Mtodo de Euler Programa
%Movimiento de un sistema acoplado masa resorte que est descrito por la %ecuain diferencial ordinaria que sigue: % m(d^2x/dt^2+cdx/dt+kx=0 % % y(a) % % - a y b son los puntos inicial y final respectivamente - xi(1) y yi(1) son las condiciones iniciales x(a) y respectivamente, donde i=1,2,3. - N es el nmero de pasos
% Limpiamos la memoria y borramos las figuras habidas clear, clf %Solucin: % Ingresamos los parmetros a=0; b=15; N=100; m=20; k=20; c1=5; c2=40; c3=45;
% Algoritmo del mtodo de Euler x1=zeros(1,N+1); y1=zeros(1,N+1); x1(1)=1; y1(1)=0; for j=1:N x1(j+1)=x1(j)+h*y1(j); y1(j+1)=y1(j)-(h/m)*(c1*y1(j)+k*x1(j)); end x2=zeros(1,N+1); y2=zeros(1,N+1); x2(1)=1; y2(1)=0; for j=1:N x2(j+1)=x2(j)+h*y2(j); y2(j+1)=y2(j)-(h/m)*(c2*y2(j)+k*x2(j)); end x3=zeros(1,N+1); y3=zeros(1,N+1); x3(1)=1; y3(1)=0; for j=1:N x3(j+1)=x3(j)+h*y3(j); y3(j+1)=y3(j)-(h/m)*(c3*y3(j)+k*x3(j)); end plot(t,x1,'+-',t,x2,'r+-',t,x3,'g+-') xlabel ('t (s)'); ylabel('x')
Programa
%Movimiento de un sistema acoplado masa resorte que est descrito por la %ecuain diferencial ordinaria que sigue: % m(d^2x/dt^2+cdx/dt+kx=0 % % y(a) % % - a y b son los puntos inicial y final respectivamente - xi(1) y yi(1) son las condiciones iniciales x(a) y respectivamente, donde i=1,2,3. - N es el nmero de pasos
% Limpiamos la memoria y borramos las figuras habidas clear, clf %Solucin: % Ingresamos los parmetros a=0; b=15; N=100; m=20; k=20; c1=5; c2=40; c3=45;
% Inicio de calculo y tamao de paso N=100; h=(b-a)/N; t=zeros(1,N+1); t=a:h:b; % Algoritmo del mtodo modificado de Euler x1=zeros(1,N+1); y1=zeros(1,N+1); x1(1)=1; y1(1)=0; for j=1:N x01(j)=x1(j)+h*y1(j); y01(j)=y1(j)-1/m*(c1*y1(j)+k*x1(j)); x1(j+1)=x1(j)+h/2*(y1(j)+y01(j)); y1(j+1)=y1(j)+h/2*(-1/m*(c1*y1(j)+k*x1(j))1/m*(c1*y01(j)+k*x01(j))); end x12=zeros(1,N+1); y12=zeros(1,N+1); x12(1)=1;
y12(1)=0; for j=1:N x01(j)=x12(j)+h*y12(j); y01(j)=y12(j)-1/m*(c2*y12(j)+k*x12(j)); x12(j+1)=x12(j)+h/2*(y12(j)+y01(j)); y12(j+1)=y12(j)+h/2*(-1/m*(c2*y12(j)+k*x12(j))1/m*(c2*y01(j)+k*x01(j))); end x13=zeros(1,N+1); y13=zeros(1,N+1); x13(1)=1; y13(1)=0; for j=1:N x01(j)=x13(j)+h*y13(j); y01(j)=y13(j)-1/m*(c3*y13(j)+k*x13(j)); x13(j+1)=x13(j)+h/2*(y13(j)+y01(j)); y13(j+1)=y13(j)+h/2*(-1/m*(c3*y13(j)+k*x13(j))1/m*(c3*y01(j)+k*x01(j))); end plot(t,x1,'r-',t,x12,'b-',t,x13,'g-') xlabel ('t (s)'); ylabel('x')
Programa
%Movimiento de un sistema acoplado masa resorte que est descrito por la %ecuain diferencial ordinaria que sigue: % m(d^2x/dt^2+cdx/dt+kx=0 % % y(a) % % - a y b son los puntos inicial y final respectivamente - xi(1) y yi(1) son las condiciones iniciales x(a) y respectivamente, donde i=1,2,3. - N es el nmero de pasos
% Limpiamos la memoria y borramos las figuras habidas clear, clf %Solucin: % Ingresamos los parmetros a=0; b=15; N=100; m=20; k=20; c1=5; c2=40; c3=200;
% Inicio de calculo y tamao de paso N=100; h=(b-a)/N; t=zeros(1,N+1); t=a:h:b; y1(:,1) = [1;0]; t(1)=0; % condicin inicial y2(:,1) = [1;0]; t(1)=0; % condicin inicial y3(:,1) = [1;0]; t(1)=0; % condicin inicial A1=[0,1; -k/m,-c1/m]; A2=[0,1; -k/m,-c2/m]; A3=[0,1; -k/m,-c3/m]; % Algoritmo de Runge y Kutta de 4to. orden for n=1:N k1 = h*A1*y1(:,n); k2 = h*A1*(y1(:,n)+k1/2); k3 = h*A1*(y1(:,n)+k2/2); k4 = h*A1*(y1(:,n)+k3); y1(:,n+1) = y1(:,n) + (k1 + 2*k2 + 2*k3 +k4)/6; end
for n=1:N k1 = h*A2*y2(:,n); k2 = h*A2*(y2(:,n)+k1/2); k3 = h*A2*(y2(:,n)+k2/2); k4 = h*A2*(y2(:,n)+k3); y2(:,n+1) = y2(:,n) + (k1 + 2*k2 + 2*k3 +k4)/6; end for n=1:N k1 = h*A3*y3(:,n); k2 = h*A3*(y3(:,n)+k1/2); k3 = h*A3*(y3(:,n)+k2/2); k4 = h*A3*(y3(:,n)+k3); y3(:,n+1) = y3(:,n) + (k1 + 2*k2 + 2*k3 +k4)/6; end % Grafica plot(t,y1(1,:), '-', t,y1(2,:), ':',t,y2(1,:), 'r-', t,y2(2,:), 'b:',t,y3(1,:), 'g-', t,y3(2,:), 'y:') xlabel ('t (s)'); ylabel('x y v')
Conclusin Al comparar los mtodos de aproximacin con la solucin analtica que se muestran en las grficas anteriores, nos damos cuenta que la aproximacin de Runge-Kutta de orden 4 es ms precisa que el mtodo de Euler y mtodo modificado de Euler. Esto concuerda con la teora de aproximaciones numricas. Es por eso que el mtodo de Runge-Kutta de orden 4 es uno de los mtodos de aproximacin ms utilizados para resolver ecuaciones diferenciales ordinaria.
Bibliografa [1] Jerry B. Marion, Dinmica clsica de las partculas y sistemas, Revert (2da. edicin). [2]Enrique Ypez Mulia, Miztli Y. Ypez Martnez, Mecnica Analtica, Las prensas de ciencias (2007). [3] Richard L. Burden / J. Douglas Faires , Anlisis Numrico, (Sptima edicin) [4] J. H. Mathews, K. D. Fink: Mtodos Numricos con Matlab., Prentice-Hall, 2000. [5] W. G. Arias, Mtodos numricos para resolver ecuaciones diferenciales ordinarias.