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
   840   841   842   843   844   845   846   847   848   849   850