Page 845 - Chapra y Canale. Metodos Numericos para Ingenieros 5edición_Neat
P. 845
27.3 EDO Y VALORES PROPIOS CON BIBLIOTECAS Y PAQUETES 821
Program PredPrey
USE msimsl
INTEGER :: mxparm, n
PARAMETER (mxparm=50, n=2)
INTEGER :: ido, istep, nout
REAL :: param(mxparm), t, tend, tol, y(n)
EXTERNAL fcn
CALL UMACH (2, nout)
t = 0.0
y(1) = 2.0
y(2) = 1.0
tol = 0.0005
CALL SSET (mxparm, 0.0, param, 1)
param(10) = 1.0
PRINT ‘(4X, “ISTEP”, 5X, “Time”, 9X, “Y1”, 11X, “Y2”)’
ido = 1
istep = 0
WRITE (nout,‘(I6,3F12.3)’) istep, t, y
DO
istep = istep + 1
tend = istep
CALL IVPRK (ido, n, fcn, t, tend, tol, param, y)
IF (istep .LE. 10) EXIT
WRITE (nout,‘(I6,3F12.3)’) istep, t, y
IF (istep .EQ. 10) ido = 3
END DO
END PROGRAM
SUBROUTINE fcn (n, t, y, yprime)
IMPLICIT NONE
INTEGER :: n
REAL :: t, y(n), yprime(n)
yprime(1) = 1.2*y(1) – 0.6*y(1)*y(2)
yprime(2) = –0.8*y(2) + 0.3*y(1)*y(2)
END SUBROUTINE
Una corrida de ejemplo es:
istep time y1 y2
0 .000 2.000 1.000
1 1.000 3.703 1.031
2 2.000 5.433 1.905
3 3.000 3.390 3.533
4 4.000 1.407 3.073
5 5.000 1.048 1.951
6 6.000 1.367 1.241
7 7.000 2.393 .959
8 8.000 4.344 1.161
9 9.000 5.287 2.421
10 10.000 2.561 3.624
6/12/06 14:03:10
Chapra-27.indd 821 6/12/06 14:03:10
Chapra-27.indd 821

