Вы находитесь на странице: 1из 3

PROGRAMA PARA RESOLVER EDOs

Ecuación diferencial ordinaria (EDO) para el péndulo simple:


𝑔
𝜃̈ + 𝑠𝑒𝑛(𝜃 ) = 0
𝑙
Esta ecuación de segundo orden se convierte en un sistema de EDO de primer orden de la siguiente manera:

𝜃̇ = 𝜔 𝜃0 = 𝜃 (𝑡 = 0)
𝑔
𝜔̇ = − 𝑠𝑒𝑛(𝜃 ) 𝜔0 = 𝜔(𝑡 = 0)
𝑙

USANDO EL PROGRAMA
IM : El número de ecuaciones diferenciales del sistema.
Y(1), Y(2), …,Y(IM) : Condición inicial en t=0 para cada variable incógnita
XL: Tiempo final.
XP: Tiempo inicial
H: Paso de integración.
E(J,1), E(J,2), …, E(J,IM): PRIMERA DERIVADA RESPECTO AL TIEMPO, DE CADA VARIABLE
INCOGNITA.
YA(1), YA(2), …, YA(IM):CADA VARIABLE INCOGNITA.

USANDO EL PROGRAMAPARA EL PENDULO SIMPLE:

IM=2

Y(1)= 0.15 𝜃0 = 0.15 𝑟𝑎𝑑


𝑑𝜃 𝑟𝑎𝑑
Y(2)=0.0 𝜔0 = ( ) = 0
𝑑𝑡 0 𝑠𝑒𝑔
XL: 0 segundos.
XP: Ingresado desde el teclado.
H: 0.001 segundos

E(J,1)= 𝜃̇
E(J,2)= 𝜔̇

YA(1)= 𝜃
YA(2)= 𝜔

NOTA:
También se cambia los parámetros, según sea el caso en el programa principal.
Lo mismo se hace con los parámetros que sean necesarios en la subroutina.
CODIFICACION DEL PROGRAMA ADECUADO
PROGRAM PENDULO

IMPLICIT NONE
INTEGER:: IM,LI,NDAT,J,I
REAL::L,g,m,XL,H,HH,XP,XA,XB,XM,E,CX,CY
REAL,DIMENSION(0:10):: YA,Y !, YN
REAL,DIMENSION(0:4,0:10)::EK
OPEN(5,FILE='RESULT.DAT') !Archivo donde se deposita la solucion.

WRITE(*,*)
WRITE(*,*)'*****************************************************************'
WRITE(*,*)'ESQUEMA DE RUNGE-KUTTA DE CUARTO ORDEN'
WRITE(*,*)' PARA UN CONJUNTO DE ECUACIONES'
WRITE(*,*)'*****************************************************************'

IM=2 ! Número de EDOs de primer orden que compone el sistema.

XP=0. ! Tiempo inicial. Valor asignado


WRITE(*,*)'TIEMPO INICIAL '
WRITE(*,*)XP

WRITE(*,*)'TIEMPO MAXIMO PARA DETENER LOS CALCULOS'


READ(*,*)XL !ingresado desde el teclado

Y(1)=0.15 ! Condición inicial de y(1) en t = 0 (theta inicial en t=0)


Y(2)=0.0 ! Condición inicial de y(2) en t = 0. (dtheta/dt inicial en t=0)

H=0.001 !Paso de integracion.

WRITE(*,*)'PASO DE INTEGRACION'
WRITE(*,*)' H= ',H !Paso de integracion

HH=H/2

NDAT=(XL-XP)/H !Numero de soluciones para cada variable incognita


!-------------- PARAMETROS PARA CALCULAR LA ENERGIA--
L=0.05 ! Longitud del pendulo ¡
g=9.8 ! Valor de la gravedad ¡
m=0.1 ! Masa del pendulo ¡
!----------------------------------------------------
DO LI=1,NDAT
XB=XP !Tiempo anterior
XP=XP+H !Tiempo nuevo
XM=XB+HH !Tiempo en el punto medio

J=1 !Esta parte calcula k-1.


DO I=1,IM
YA (I) =Y (I)
END DO
XA=XB
CALL FUNCT(EK,J,YA)

J=2 !Esta parte calcula k-2.


DO I=1,IM
YA(I)=Y(I) +EK(1,I)*H/2
END DO
XA=XM
CALL FUNCT(EK,J,YA)

J=3 !Esta parte calcula k-3


DO I=1,IM
YA(I)=Y(I) +EK(2,I)*H /2
END DO

XA=XM
CALL FUNCT(EK,J,YA)

J=4 !Esta parte calcula k-4.


DO I=1,IM
YA(I)=Y(I)+EK(3,I)*H
END DO

XA=XP
CALL FUNCT(EK,J,YA)
DO I=1, IM !Esquema de Runge-Kutta de 4o. orden
Y(I)=Y(I)+(EK(1,I)+EK(2,I)*2+EK(3,I)*2+EK(4,I))*H/6
END DO

E=(m*l*l*y(2)**2)/2-m*g*l*cos(y(1)) ! Energia
CX= L*SIN(Y(1)) !coordenada X
CY= -L*COS(Y(1)) !coordenada Y

WRITE (5,'(1x,f10.4,2x,5f12.6)') XP,Y(1),Y(2),CX,CY,E ! t,theta,dtheta/dt,X,Y,Energia


END DO
END PROGRAM PENDULO
!* * * * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * *
SUBROUTINE FUNCT(EK,J,YA) !DEFINE EL SISTEMA DE EDOS A RESOLVER
DIMENSION EK(0:4,0:10),YA(0:10)
REAL L,g

L=0.05 ! Longitud del pendulo


g=9.8 ! Valor de la gravedad
EK(J,1)=YA(2) ! Primera ecuacion diferencial
EK(J,2)=-G*SIN(YA(1))/L ! Segunda ecuacion direrencial

END SUBROUTINE

Вам также может понравиться