Académique Documents
Professionnel Documents
Culture Documents
Cdigo: 082924H
'' 2 '2
y =2 x y 5 y
Para las condiciones:
Resolucin:
Usando la codificacin en Fortran 90
Program Adams_Bashfort
!Declaracion de variables
Real(4) X(100),Y(100),Z(100),F(100),Dx,H
Integer N
!Salida por Archivo
Open(1,FILE='AdamsBashfort.TXT')
!Ingreso de datos
Write(*,*)'=============================================='
Write(*,*)'Programa para la resolucion de EDO de orden 2'
Write(*,*)' usando el metodo de Adams-Bashfort '
Write(*,*)'=============================================='
Write(*,*)'Ingrese las condiciones iniciales X0,Y0,Z0'
Read(*,*) X(1),Y(1),Z(1)
Write(*,*)'Ingrese el valor de la variacion de X'
Read(*,*) Dx
Write(*,*)'Ingrese el valor de los puntos a estudiar'
Read(*,*) N
Write(*,*)'==============================================='
!Calculos para N<=2 y N>2
!Calculo de H
H=Dx/N
Do I=1,N+1
IF (I.LE.2) Then
!Calculo de X(N),Y(N),F(N) usando Euler
X(I+1)=X(I)+Dx
F(I)=Fun(X(I),Y(I),Z(I))
Y(I+1)=Y(I)+Dx*(F(I))
Else
F(I)=Fun(X(I),Y(I),Z(I))
Z(I+1)=Z(N)+(H/24)*(55*F(N)-59*F(N-1)+37*F(N-2)-9*F(N-3))
Y(N+1)=Y(N)+(H/24)*(55*Z(N)-59*Z(N-1)+37*Z(N-2)-9*Z(N-3))
X(I+1)=X(I)+H
End If
End Do
!soluciones en Tabla
Write(*,*)'============================================='
Write(*,*)'Las soluciones de la Edo Son:'
Write(*,*)'I X(I) Y(I) F(I) '
Write(*,*)'---------------------------------------------'
Do I=1,N+1
Write(*,100)I-1,X(I),Y(I),F(I)
Write(1,100)I-1,X(I),Y(I),F(I)
End Do
!Formatos de salida
100 Format(1X,I3,3X,3(1X,F8.4))
Close(1)
End Program
!Funcion de la Edo
Function Fun(A,B,C)
Fun=2*A*(B**2)-5*(C**2)
Return
End Function
0 0 1.2 -0.8
3 0.9 0 -0.7023
4 1 -0.1009 -4.125
Object 15
2. Usando la codificacin de Adams Moulton Resolver la siguiente ecuaciones diferencial
y ' =4 xcos( 2 y )
Resolucin:
Usando la codificacin en Fortran 90
Program Adams_moulton
!declaracion de variables
Real(4) Xf,Tol,X(100),Y(100),F(100),Dx
Real(4) aY,vY
Integer N
!Salida por Archivo
Open(1,FILE='AdamsMoulton.TXT')
!ingreso de datos
Write(*,*)'=============================================='
Write(*,*)'Programa para la resolucion de EDO de orden 1'
Write(*,*)' usando el metodo de Adams-Moulton '
Write(*,*)'=============================================='
Write(*,*)'Ingrese las condiciones iniciales'
Read(*,*) X(1),Y(1)
Write(*,*)'Ingrese el valor final de X y el numero N'
Read(*,*) Xf,N
Write(*,*)'Ingrese el valor de la tolerancia'
Read(*,*) Tol
!calculos para N<=2 y N>2
!calculo de deltaX
Dx=(Xf-X(1))/N
Do I=1,N+1
IF (I.LE.2) Then
!calculo de X(N),Y(N),F(N) usando Euler
X(I+1)=X(I)+Dx
F(I)=Fun(X(I),Y(I))
Y(I+1)=Y(I)+Dx*(F(I))
Else
X(I+1)=X(I)+Dx
F(I)=Fun(X(I),Y(I))
aY=Y(I)
!Calulo del Fn en funcion al <yn>
10 F(I+1)=Fun(X(I+1),aY)
Y(I+1)=Y(I)+0.0416*Dx*((9*F(I+1))+(19*F(I))-(5*F(I-1))+F(I-2))
!calculo de la Convergencia
vY=ABS(Y(I)-aY)
!ciclo If
If (vY.GT.TOL) Then
aY=Y(I)
GoTo 10
Else
End If
End If
End Do
!soluciones en Tabla
Write(*,*)'============================================='
Write(*,*)'Las soluciones de la Edo Son:'
Write(*,*)'I X(I) Y(I) F(I) '
Write(*,*)'---------------------------------------------'
Do I=1,N+1
Write(*,100)I-1,X(I),Y(I),F(I)
Write(1,100)I-1,X(I),Y(I),F(I)
End Do
!formatos de salida
100 Format(1X,I3,3X,3(1X,F8.4))
Close(1)
End Program
!Funcion de la Edo
Function Fun(A,B)
Real(4) A,B
Fun=4*A+Cos(2*B)
End Function
0 0 1.5 -0.99
1 0.1 1.401 -0.5429
1.5
1.45
Valores Y(N)
1.4
1.35
1.3
1.25
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
Valores X(N)
3. Usando la codificacin de Stormer-Verlet Resolver la siguiente ecuaciones diferencial
Donde N=4
Resolucin:
Usando la codificacin en Fortran 90
Program Stormer_verlet
Real(4) Y(100),X(100),F(100),Tol
Integer N
!Salida por Archivo
Open(1,FILE='StormerVerlet.TXT')
5 Write(*,*)'=============================================='
Write(*,*)'Programa para la resolucion de EDO de orden 2 '
Write(*,*)' usando el metodo de stormer-verlet '
Write(*,*)'=============================================='
Write(*,*)'Ingrese las condiciones iniciales'
Read(*,*) X(1),Y(1),Y(2)
Write(*,*)'Ingrese el punto final del dominio'
Read(*,*) Xf
Write(*,*)'Ingrese los puntos a analizar y la tolerancia'
Read(*,*) N,Tol
Write(*,*)'=============================================='
!calculo de datos
H=(XF-X(1))/N
X(2)=X(1)+H
Do I=2,N
Write(*,*)'Para el Punto N:', I
IN=0 !Iteracion de cada valor para N
A=Y(I)
X(I+1)=X(I)+H
10 IN=IN+1
aY=(A-Y(I-1))/(2*H)
F(I)=Fun(X(I),Y(I),aY)
Y(I+1)=2*Y(I)-Y(I-1)+(F(I)*(H**2))
Ea=ABS(A-Y(I+1))
Write(*,100)IN,X(I+1),Y(I+1),Ea
!Convergencia
IF(Ea.GT.TOL)Then
A=(Y(I+1)+A)/2
GoTo 10
Else
End If
Write(*,*)'El valor final de N:,',I,' = ',Y(I+1)
End Do
!soluciones en Tabla
Write(*,*)'============================================='
Write(*,*)'Las soluciones de la Edo Son:'
Write(*,*)' I X(I) Y(I) F(N) '
Write(*,*)'---------------------------------------------'
Do I=1,N+1
Write(*,100) I-1,X(I),Y(I),F(I)
Write(1,100) I-1,X(I),Y(I),F(I)
End Do
100 Format(1X,I3,3X,3(1X,F8.4))
Close(1)
End
Function Fun(A,B,C)
Fun=5*Sin(A*B)-3*(C**2)
Return
End
0 0 1.2 0
4 0.4 1.2953 0
1.3
1.28
1.26
1.24
Y(N)
1.22
1.2
1.18
1.16
1.14
0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45
X(N)
4. Usando la codificacin de Numerov Resolver las siguientes ecuaciones diferenciales
y '' =Y ( 64 +5 t 2 ) +10 t 3
Para las condiciones:
x 0=0.0 y 0=1.5 x 1=0.1 y 1=1.9 x f =0.5
Donde N=5
Resolucin:
Usando la codificacin en Fortran 90
Program Numerov
Real(4) Y(100),X(100)
!Salida de datos por archivo
Open(1,FILE='Numerov.txt')
Write(*,*)'================================================'
Write(*,*)'Programa de solucion de ecuaciones diferenciales'
Write(*,*)' Usando el metodo de Numerov '
Write(*,*)'================================================'
Write(*,100)
Read(*,*)X(1)
Write(*,110)
Read(*,*)Y(1)
Write(*,101)
Read(*,*)X(2)
Write(*,111)
Read(*,*)Y(2)
Write(*,102)
Read(*,*)N
Write(*,*)'============================================='
!procesamiento de datos
H=X(2)-X(1)
Do I=2,N+1
X(I+1)=X(I)+H
A=1+G(X(I+1))*(0.083333)*H**2
B=1-G(X(I))*(0.4166667)*H**2
C=1+G(X(I-1))*(0.0833333)*H**2
D=(S(X(I+1))+10*S(X(I))+S(X(I-1)))*(0.0833333)*H**2
Y(I+1)=(2*Y(I)*B-Y(I-1)*C+D)/A
End Do
!Formats
100 Format(1X,'Ingrese el primer valor de X : '$)
110 Format(1X,'Ingrese el primer valor de Y : '$)
101 Format(1X,'Ingrese el segundo valor de X : '$)
111 Format(1X,'Ingrese el segundo valor de Y : '$)
102 Format(1X,'Ingrese el numero de N (Max 100):'$)
103 Format(1X,I3,3(2X,F8.4))
Write(*,*)'================================================='
Write(*,*)'Las soluciones de la Edo Son:'
Write(*,*)'N X(N) Y(N) '
Write(*,*)'-------------------------------------------------'
Do I=1,N+1
Write(*,103)I-1,X(I),Y(I)
Write(1,103)I-1,X(I),Y(I)
End Do
Close(1)
End
Function G(T)
G=64+5*(T**2)
Return
End
Function S(T)
S=10*(T**3)
Return
End
N X(N) Y(N)
0 0 1.5
1 0.1 1.9
2 0.2 1.1448
3 0.3 -0.3069
4 0.4 -1.5675
5 0.5 -1.8576
1.5
0.5
Y(N)
0
0 0.1 0.2 0.3 0.4 0.5 0.6
-0.5
-1
-1.5
-2
-2.5
X(N)