Você está na página 1de 13

Universidad Nacional del Callao

Facultad de Ciencias Naturales y Matemática


Escuela Profesional de Fı́sica

Tema:
Desarrollo del movimiento del ”Oscilador Armónico Simple y Amortiguado” en Fortran.

Curso:
Mecánica Clásica

Profesor:
Mg. Alva Zabaleta, Rolando

Alumno
Mena Poma, Jose Omar
Código: 1529120356
Índice
1. Marco Teórico 2
1.1. Oscilador Armónico Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2. Oscilador Armónico Amortiguado . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2. Resultados codificando en Fortran 5


2.1. Codificación del Oscilador Armónico Simple . . . . . . . . . . . . . . . . . . . . 5
2.2. Gráfica de los resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.3. Codificación del Oscilador Armónico Sobre Amortiguado . . . . . . . . . . . . . 7
2.4. Gráfica de los resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.5. Codificación del Oscilador Armónico Sobre Amortiguado . . . . . . . . . . . . . 9
2.6. Gráfica de los resultados obtenidos . . . . . . . . . . . . . . . . . . . . . . . . . 12

1
1. Marco Teórico
1.1. Oscilador Armónico Simple
A modo de recordatorio empezamos recordando las caracterı́sticas de un sistema sencillo
que recoge las caracterı́sticas esenciales del movimiento armónico simple: el movimiento de una
masa puntual unida a un muelle alrededor del equilibrio. Reducir el problema a su máxima sim-
plicidad (conservando las caracterı́sticas de interés) requiere varias aproximaciones razonables.
Consideramos una masa puntual m y un movimiento en una única dimensión, i.e. el movimiento
tiene un único grado de libertad; el muelle no tiene masa y su comportamiento es perfectamente
lineal. Como grado de libertad para la descripción del sistema escogemos el desplazamiento en
la coordenada x de la posición de equilibrio, según indica la figura 1.

Donde su Energı́a Cinética (T ) esta definido por:


1
T = mẋ2
2
Donde su Energı́a Potencial (V ) esta definido por:
1
V = kx2
2
Definiendo el lagrangiano L = T − V
1 1
L = mẋ2 − kx2
2 2
Obtenemos las ecuaciones de movimiento aplicando el ecuación de Lagrange del movimiento:
 
d ∂L ∂L
− =0
dt ∂ ẋ ∂x
 
d ∂L d
= (mẋ) = mẍ
dt ∂ ẋ dt
∂L
= −kx
∂x

mẍ + kx = 0

k
ẍ = − x
m

2
1.2. Oscilador Armónico Amortiguado
En los apartados anteriores la oscilación del sistema considerado se mantendrı́a por un
tiempo infinito sin ver disminuida su amplitud. Esta descripción, obviamente, no reproduce
de forma fiel o verosı́mil el comportamiento de multitud de sistemas fı́sicos reales. ¿Cómo
podemos modificar nuestra descripción de un oscilador armónico alrededor del equilibrio para
obtener un descripción más acorde a lo observado en la naturaleza? Obtuvimos la ecuación
de movimiento ẍ + w02 = 0 uniendo una ley dinámica mẍ = F con una forma particular de
la fuerza F = −kx. Para enriquecer nuestra descripción, no modificaremos la ley dinámica
(que no es más que la segunda ley de Newton) y sı́ en cambio nos plantearemos qué clase
de modificación sencilla de la forma de la fuerza es útil a nuestro propósito. Para mantener la
linealidad del sistema, tan solo consideramos términos con una única potencia de x: eso descarta
automáticamente cualquier término x2 , xẋ, x3 , etc, en F . Tampoco queremos incluir derivadas
temporales de orden superior ... x, etc. Esto nos deja con una única dependencia para modificar
la forma de la fuerza: ẋ. Fı́sicamente, resulta razonable; supone añadir términos que dependen
de la ”velocidad” del grado de libertad x, cosa habitual al describir, por ejemplo, la presencia
de fuerzas de rozamiento. Dicho esto, escribimos explı́citamente la forma de la fuerza que se
añadirá a este contexto:

Fext = −bẍ
Donde su Energı́a Cinética (T ) esta definido por:
1
T = mẋ2
2
Donde su Energı́a Potencial (V ) esta definido por:
1
V = kx2
2
Definiendo el lagrangiano L = T − V
1 1
L = mẋ2 − kx2
2 2
Obtenemos las ecuaciones de movimiento aplicando el ecuación de Lagrange del movimiento:
 
d ∂L ∂L
− = Fext
dt ∂ ẋ ∂x

mẍ + kx = −bẋ

(kx + bẋ)
ẍ = −
m
Para determiar si era amortiguado, crı́ticamente amortiguado o sobre amortiguado se recu-
rrira al siguiente cambio de variable x = ezt
b k
(z 2 + z + )ezt = 0
m m
Ya que ezt 6= 0, entonces: r
b b2 k
z=− ± 2

2m 4m m
b2 k
Donde 4 = 2

4m m
3
4 < 0 ,es amortiguado
Si: 4 = 0 ,es crı́ticamente amortiguado
4 > 0 ,es sobre amortiguado

b < 2√km ,es amortiguado
Entonces cuando: b = 2√km ,es crı́ticamente amortiguado
b > 2 km ,es sobre amortiguado

4
2. Resultados codificando en Fortran
2.1. Codificación del Oscilador Armónico Simple
PROGRAM OSCILADOR-ARMONICO-S
IMPLICIT NONE
INTEGER:: IM,LI,NDAT,J,I
REAL::K,m,XL,H,HH,XP,XA,XB,XM,E
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 ! Condición inicial de y(1) en t = 0 (x inicial en t=0)


Y(2)=2 ! Condición inicial de y(2) en t = 0. (dx/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–


K=0.1 ! Valor de la constante elastica ¡
m=0.5 ! 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

5
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*Y(2)*Y(2)+K*Y(1)*Y(1))*0.5 ! Energia

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

END DO

END PROGRAM

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SUBROUTINE FUNCT(EK,J,YA) !DEFINE EL SISTEMA DE EDOS A RESOLVER
DIMENSION EK(0:4,0:10),YA(0:10)
REAL K,m

m=0.5 ! Masa
K=0.1 ! Valor de la constante elastica

EK(J,1)=YA(2) ! Primera ecuacion diferencial


EK(J,2)=-K*YA(1)/m ! Segunda ecuacion direrencial
END SUBROUTINE

6
2.2. Gráfica de los resultados obtenidos

2.3. Codificación del Oscilador Armónico Sobre Amortiguado


PROGRAM OSCILADOR-ARMONICO-A
IMPLICIT NONE
INTEGER:: IM,LI,NDAT,J,I
REAL::K,m,b,XL,H,HH,XP,XA,XB,XM,E
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 ! Condición inicial de y(1) en t = 0 (x inicial en t=0)


Y(2)=2 ! Condición inicial de y(2) en t = 0. (dx/dt inicial en t=0)
H=0.001 !Paso de integracion.

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

HH=H/2

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

!————– PARAMETROS PARA CALCULAR LA ENERGIA–


K=0.1 ! Valor de la constante elastica ¡
m=0.5 ! Masa del pendulo ¡
b=0.1
!—————————————————-

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*Y(2)*Y(2)+K*Y(1)*Y(1))*0.5 ! Energia

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

8
END DO

END PROGRAM

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SUBROUTINE FUNCT(EK,J,YA) !DEFINE EL SISTEMA DE EDOS A RESOLVER
DIMENSION EK(0:4,0:10),YA(0:10)
REAL K,m,b

m=0.5 ! Masa
K=0.1 ! Valor de la constante elastica
b=0.1

EK(J,1)=YA(2) ! Primera ecuacion diferencial


EK(J,2)=-(K*YA(1)+b*YA(2))/m ! Segunda ecuacion direrencial
END SUBROUTINE

2.4. Gráfica de los resultados obtenidos

2.5. Codificación del Oscilador Armónico Sobre Amortiguado


PROGRAM OSCILADOR-ARMONICO-SA
IMPLICIT NONE
INTEGER:: IM,LI,NDAT,J,I
REAL::K,m,b,XL,H,HH,XP,XA,XB,XM,E
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’

9
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 ! Condición inicial de y(1) en t = 0 (x inicial en t=0)


Y(2)=2 ! Condición inicial de y(2) en t = 0. (dx/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–


K=0.1 ! Valor de la constante elastica ¡
m=0.5 ! Masa del pendulo ¡
b=0.5
!—————————————————-

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

10
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*Y(2)*Y(2)+K*Y(1)*Y(1))*0.5 ! Energia

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

END DO

END PROGRAM

!* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SUBROUTINE FUNCT(EK,J,YA) !DEFINE EL SISTEMA DE EDOS A RESOLVER
DIMENSION EK(0:4,0:10),YA(0:10)
REAL K,m,b

m=0.5 ! Masa
K=0.1 ! Valor de la constante elastica
b=0.5

EK(J,1)=YA(2) ! Primera ecuacion diferencial


EK(J,2)=-(K*YA(1)+b*YA(2))/m ! Segunda ecuacion direrencial
END SUBROUTINE

11
2.6. Gráfica de los resultados obtenidos

12

Você também pode gostar