Factores que intervienen en la Administración por Valores.pdf
COMPARACIÓN DEL MÉTODO DE RONGE KUTTA (2-4) USANDO FORTRAN Y SCILAB 5.5
1. Año de la Diversificación Productiva y del Fortalecimiento de la
Educación
UNIVERSIDAD NACIONAL
DEL CALLAO
FACULTAD DE CIENCIAS
NATURALES Y MATEMÁTICA
FÍSICA TEÓRICA COMPUTACIONAL II
“COMPARACIÓN DEL MÉTODO DE RONGE KUTTA
(2-4) USANDO FORTRAN Y SCILAB 5.5”
MARCO ANTONIO ALPACA CHAMBA
ESCUELA PROFESIONAL DE: FÍSICA
𝒚"
− 𝟎. 𝟎𝟓𝒚′
+ 𝟎. 𝟏𝟓𝒚 = 𝟎
PROGRAM
IMPLICIT NONE
REAL, INTEGER…
03 -05-2015
2. PARA EL CASO DE ECUACIONES DIFERENCIALES ORDINARIAS DE ORDEN DOS.
Utilizar el método de RUNGE KUTTA2-4 y compararlos en la siguiente ecuación
diferencial.
Sea: 𝒚" − 𝟎. 𝟎𝟓𝒚′ + 𝟎. 𝟏𝟓𝒚 = 𝟎 con condiciones iniciales: 𝒚 𝟎
′
= 𝟎 , 𝒚 𝟎 = 𝟏 para t [0,5].
SOLUCIÓN:
PROGRAM RUNGE_KUTTA_SEGUNDO_ORDEN
REAL X0,X1,Y0,Z0,RK1X,RK1V,RK2X,RK2V,H
OPEN(UNIT=11,FILE='KUTTA2.TXT',STATUS='UNKNOWN',ACTION='WRITE')
PRINT*,''
PRINT*,
'====================================================================='
PRINT*,'METHOD DE RUNGEKUTTADE SEGUNDO ORDEN PARA ED DE ORDEN
SUPERIOR'
PRINT*,'==================================================================
===='
PRINT*,''
PRINT*,'INGRESAR EL VALOR INICIAL DE X0:'
READ(5,*)X0
PRINT*, 'INGRESAR EL VALOR FINAL DE X:'
READ*, X1
PRINT*, 'INGRESAR EL VALOR INICAL DE Y(EN X0):'
READ*, Y0
PRINT*, 'INGRESAR EL VALOR INICIAL DE Z0:'
READ*, Z0
PRINT*, 'INGRESAR LONGITUD DE PASO,H:'
READ*,H
PRINT*,''
PRINT*,('*',I=1,79)
PRINT '(5X,"RESULTADOS COMPUTACIONALES")'
PRINT*,('*',I=1,79)
PRINT*,''
N=(X1-X0)/H
K=1
PRINT 50
50 FORMAT(3X,'DATOS',5X,'TIME',9X,'POSITION',13X,"VELOCIDAD")
70 WRITE(11,60)K,X0,Y0,Z0
PRINT'(2X,I2,8X,F3.1,6X,F12.6,10X,F12.6)', K,X0,Y0,Z0
IF (X0.LE.(X1-0.0000001))THEN
DO WHILE (K < N+2)
RK1X=H*Z0
RK1V=H*F(X0,Y0,Z0)
RK2X=H*(Z0+0.5*RK1V)
RK2V=H*F(X0+H,Y0+RK1X,Z0+RK1V)
Y0=Y0+0.5*(RK1X+RK2X)
Z0=Z0+0.5*(RK1V+RK2V)
X0=X0+H
K=K+1
GOTO 70
ENDDO
END IF
60 FORMAT (2X,I2,8X,F3.1,6X,F12.6,10X,F12.6)
PRINT*,''
5. USANDO RONGE KUTTA DE CUARTO ORDEN
PROGRAM RUNGE_KUTTA_CUARTO_ORDEN
REAL X0,X1,Y0,Z0,RK1X,RK1V,RK2X,RK2V,RK3X,RK3V,RK4X,RK4V,H
OPEN(UNIT=12,FILE='KUTTA4.TXT',STATUS='UNKNOWN',ACTION='WRITE')
PRINT*,''
PRINT*,
'===================================================================
=='
PRINT*,'METHOD DE RUNGE KUTTA DE CUARTO ORDEN CON CONDICIONES
INICIALES PARA '
PRINT*,'ECUACIONES DIFERENCIALES ORDINARIAS DE SEGUNDO ORDEN'
PRINT*,'=============================================================
========='
PRINT*,''
PRINT*,'INGRESAR EL VALOR INICIAL DE X:'
READ(5,*)X0
PRINT*, 'INGRESAR EL VALOR FINAL DE X:'
READ*, X1
PRINT*, 'INGRESAR EL VALOR INICAL DE Y(EN X0):'
READ*, Y0
PRINT*, 'INGRESAR EL VALOR INICIAL DE Z0:'
READ*, Z0
PRINT*, 'INGRESAR LONGITUD DE PASO,H:'
READ*,H
PRINT*,''
PRINT*,('*',I=1,79)
PRINT '(5X,"RESULTADOS COMPUTACIONALES")'
PRINT*,('*',I=1,79)
PRINT*,''
N=(X1-X0)/H
K=1
PRINT 50
50 FORMAT(3X,'DATOS',5X,'TIME',8X,'POSITION',15X,"VELOCIDAD")
70 WRITE(12,60)K,X0,Y0,Z0
PRINT'(2X,I2,8X,F3.1,6X,F12.6,10X,F12.6)',K,X0,Y0,Z0
IF (X0.LE.(X1-0.0000001))THEN
DO WHILE (K < N+2)
RK1X=H*Z0
RK1V=H*F(X0,Y0,Z0)
RK2X=H*(Z0+0.5*RK1V)
RK2V=H*F(X0+0.5*H,Y0+0.5*RK1X,Z0+0.5*RK1V)
RK3X=H*(Z0+0.5*RK2V)
RK3V=H*F(X0+0.5*H,Y0+0.5*RK2X,Z0+0.5*RK2V)
RK4X=H*(Z0+RK3V)
RK4V=H*F(X0+H,Y0+RK3X,Z0+RK3V)
Y0=Y0+(RK1X +2*RK2X +2*RK3X+RK4X)/6
Z0=Z0+(RK1V+2*(RK2V+RK3V)+RK4V)/6
X0=X0+H
K=K+1
GOTO 70
ENDDO
6. END IF
60 FORMAT (2X,I2,8X,F3.1,6X,F12.6,10X,F12.6)
PRINT*,''
STOP
END PROGRAM
FUNCTION F(X,Y,Z)
REAL X,Y,Z
F=0.05*Z-0.15*Y+0*X
RETURN
END FUNCTION
8. JUNTANDO LAS DOS GRÁFICAS TENEMOS:
A=read('KUTTA4.txt',51,4);
d=A(:,1);
t=A(:,2);
x=A(:,3);
v=A(:,4);
B=read('KUTTA2.txt',51,4);
d1=B(:,1);
t1=B(:,2);
x1=B(:,3);
v1=B(:,4);
plot(t,x,'ro-')
plot(t1,x1,'b*-')
legend("RK4","RK2",3);
xlabel('Tiempo t (segundos)','fontsize',4)
ylabel('Posición Y(t)','fontsize',4)
title('COMPARACIÓN DE LOS MÉTODOS DE RK4 Y RK2','fontsize',5,)
xgrid