Você está na página 1de 20

Mtodos numricos para resolver ecuaciones diferenciales ordinarias de segundo orden

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

son funciones arbitrarias.

Observacin: (Existencia y unicidad de soluciones) Si el problema de valor en la frontera

cumple 1) 2) y en son funciones continuas en , en . ,

tiene solucin nica

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.

Mtodo de Taylor de orden n


(6) para cada donde (7) Ntese que el mtodo de Euler es el mtodo de Taylor de orden uno.

Algoritmo1 (ecuacin (5)) Paso 1 Tome

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)

que son dos ecuaciones de diferencias acopladas.

Algoritmo1 (ecuacin (8)) Paso 1 Tome

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

x(1)= ; f(1)= t(1)= ; for n=1:N x(n+1)=x(n)+h*f(t(n),x(n)); f(n+1)=f(n)+h*g(t(n),x(n),f(n)); t(n)=t(n-1)+h; end

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)

Algoritmo2 (ecuacin (8)) Paso 1 Tome

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)

que son dos ecuaciones de diferencias acopladas.

Algoritmo2 (ecuacin (12)) Paso 1 Tome

Salida

Paso 2 Paso 3

Para Haga

haga pasos 3,4

(calcule para

(calcule para ) (calcule para ) Paso 4 Salida

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

Mtodo Runge-Kutta de orden 4


El mtodo de Runge-Kutta es un mtodo de cuarto orden y requiere cuatro evaluaciones de la funcin por paso. Parece, pues, que el mtodo de Runge-Kutta ser ms interesante que los mtodos de orden 2 en la medida en que el paso que utilice sea doble que para tales mtodos. Esto es as, en general, aunque se debe tener presente que no siempre mayor orden en un mtodo es sinnimo de mayor precisin. No obstante, puede afirmarse que el mtodo de RungeKutta es superior, prcticamente siempre, a los mtodos de orden 2. Otra cosa importante que hay que notar, es que existen diversas variaciones en el mtodo de Runge-Kutta de cuarto orden pero el ms utilizado es el mtodo en el cual se elige un tamao de paso h y un nmero mximo de iteraciones N tal que

(13)

( (

) ) (14)

Por lo tanto la ecuacin de diferencia queda como: (15)

Algoritmo1 (ecuacin (15))

Paso 1

Tome

Salida Paso 2 Paso 3 Para Haga haga pasos 3,4

( (

) )

Paso 4

Tome (calcule para ) (calcule para )

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

( que son dos ecuaciones de diferencias acopladas. Algoritmo1 (ecuacin (16))

(16)

Paso 1

Tome

Salida Paso 2 Paso 3 Para Haga haga pasos 3,4

( (

) )

( ( (

) ) )

Paso 4

Tome (calcule para ( ) ) (calcule para ) (calcule para )

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.

Movimiento de un sistema acoplado masa-resorte


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. Resumen Se resolvi el sistema masa resorte con los mtodos de aproximacin numrica: mtodo de Euler, mtodo modifica de Euler y mtodo de Runge-Kutta de orden 4. Se hizo la comparacin con cado uno de estos mtodos con la solucin analtica. Encontramos que el mtodo con ms precisin a la solucin fue, el mtodo de Runge-Kutta de orden 4. Introduccin Uno de los movimientos ms importantes observados en la naturaleza es el movimiento oscilatorio. Una partcula oscila cuando se mueve peridicamente con respecto a la posicin de equilibrio tal y como ocurre por ejemplo en los pndulos, en masas sujetas a muelles a tomos y electrones en los slidos. De todos los movimientos oscilatorios el ms importante es el movimiento armnico, que constituye una aproximacin muy cercana a muchas de las oscilaciones encontradas en la naturaleza. Consideremos una masa m en una posicin de equilibrio y sujeta a una fuerza de recuperacin proporcional al desplazamiento x del equilibrio y opuesta a l segn la ecuacin (1) donde es la denominada constante de fuerza. La energa potencial U asociada a esta fuerza conservativa viene dada por . (2) Suponiendo que no acta ninguna otra fuerza sobre el cuerpo, y aplicando la segunda ley de Newton obtendremos la ecuacin diferencial del movimiento (3) que describe un oscilador armnico simple. Su movimiento es una oscilacin sinusoidal alrededor de la posicin de equilibrio. Cuando el sistema oscilador que se considera est sometido a rozamientos, este tiene prdidas de energa. Por lo que, si se tiene en cuenta una fuerza de rozamiento

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

es la frecuencia angular del oscilador simple (no amortiguado); en este

caso la solucin se puede escribir como sigue, , Donde forma, , (13) y (12)

. La solucin se puede arreglar de la siguiente

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;

% subamortiguado % amortiguamiento crtico % sobreamortiguado

% 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 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')

Mtodo modificado 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;

% subamortiguado % amortiguamiento crtico % sobreamortiguado

% 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')

Mtodo de Runge-Kutta de orden 4

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;

% subamortiguado % amortiguamiento crtico % sobreamortiguado

% 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')

Comparacin analtica vs aproximacin nmerica

Solucin analtica vs mtodo de Euler

Solucin analtica vs mtodo modificado de Euler

Solucin analtica vs RK-4

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.

Você também pode gostar