test_ode
    
    
    
      test_ode,
      a Fortran90 code which
      defines a set of test initial
      value problems for ordinary differential equations (ODE).
    
    
      These problems have the common form:
      
        determine (some values of) the function Y(T)
      
      given
      
        Y'(T) = F(T,Y)
      
      with initial value
      
        Y(T0) = Y0
      
    
    
      A uniform interface makes it easy to solve all the problems
      automatically, or to concentrate on a single one.
    
    
      The problems include:
      
        - 
          Enright and Pryce #A1,
          neqn = 1,
          y' = -y;
         
        - 
          Enright and Pryce #A2,
          neqn = 1,
          y' = -y^3/2;
         
        - 
          Enright and Pryce #A3,
          neqn = 1,
          y' = cos(t)*y;
         
        - 
          Enright and Pryce #A4,
          neqn = 1,
          y' = y*(20-y)/80;
         
        - 
          Enright and Pryce #A5,
          neqn = 1,
          y' = (y-t)/(y+t);
         
        - 
          Enright and Pryce #B1,
          neqn = 2,
          y1' = 2*y1*(1-y2)
          y2' = - y2*(1-y1);
         
        - 
          Enright and Pryce #B2,
          neqn = 3,
          y1' = -y1+y2
          y2' = y1-2*y2+y3
          y3' = y2-y3;
         
        - 
          Enright and Pryce #B3,
          neqn = 3,
          y1' = -y1
          y2' = y1-y2^2
          y3' = y2^2;
         
        - 
          Enright and Pryce #B4,
          neqn = 3,
          y1' = (-y2-y1*y3) / sqrt(y1^2+y2^2)
          y2' = (y1-y2*y3) / sqrt(y1^2+y2^2)
          y3' = y1 / sqrt(y1^2+y2^2);
         
        - 
          Enright and Pryce #B5,
          neqn = 3,
          y1' = y2*y3
          y2' = -y1*y3
          y3' = -0.51*y1*y2;
         
        - 
          Enright and Pryce #C1,
          neqn = 10;
         
        - 
          Enright and Pryce #C2,
          neqn = 10;
         
        - 
          Enright and Pryce #C3,
          neqn = 10;
         
        - 
          Enright and Pryce #C4,
          neqn = 51;
         
        - 
          Enright and Pryce #C5,
          neqn = 30;
         
        - 
          Enright and Pryce #D1,
          neqn = 4;
         
        - 
          Enright and Pryce #D2,
          neqn = 4;
         
        - 
          Enright and Pryce #D3,
          neqn = 4;
         
        - 
          Enright and Pryce #D4,
          neqn = 4;
         
        - 
          Enright and Pryce #D5,
          neqn = 4;
         
        - 
          Enright and Pryce #E1,
          neqn = 2;
         
        - 
          Enright and Pryce #E2,
          neqn = 2;
         
        - 
          Enright and Pryce #E3,
          neqn = 2;
         
        - 
          Enright and Pryce #E4,
          neqn = 2;
         
        - 
          Enright and Pryce #E5,
          neqn = 2;
         
        - 
          Enright and Pryce #F1,
          neqn = 2;
         
        - 
          Enright and Pryce #F2,
          neqn = 1;
         
        - 
          Enright and Pryce #F3,
          neqn = 2;
         
        - 
          Enright and Pryce #F4,
          neqn = 1;
         
        - 
          Enright and Pryce #F5,
          neqn = 1;
         
        - 
          Lotka-Volterra Predator-Prey Equations,
          neqn = 2;
         
        - 
          The Lorenz System,
          neqn = 3;
         
        - 
          The Van der Pol equation,
          neqn = 2;
         
        - 
          The Linearized Damped Pendulum,
          neqn = 2;
         
        - 
          The Nonlinear Damped Pendulum,
          neqn = 2;
         
        - 
          Duffing's Equation,
          neqn = 2,
         
        - 
          Duffing's Equation with Damping and Forcing,
          neqn = 2;
         
        - 
          Shampine's Ball of Flame,
          neqn = 1,
          y' = y^2-y^3;
         
        - 
          Polking's First Order System,
          neqn = 1,
          y' = y^2-a*t+b;
         
        - 
          the Knee problem,
          neqn = 1,
          y' = y*(y-t)/eps;
         
      
    
    
      Licensing:
    
    
      The information on this web page is distributed under the MIT license.
    
    
      Languages:
    
    
      test_ode is available in
      a Fortran90 version and
      a MATLAB version.
    
    
      Related Data and Programs:
    
    
      
      test_ode_test
    
    
      
      f90_ode_solver,
      a Fortran90 code which 
      solves one or more differential equations (ODE) using a method of a
      particular order, either explicit or implicit.  Some methods require
      a nonlinear equation solver.  Some methods used a fixed stepsize,
      while others adapt the stepsize based on an error estimate.
    
    
      
      lorenz_ode,
      a Fortran90 code which
      approximates solutions to the Lorenz system,
      creating output files that can be displayed by gnuplot().
    
    
      
      midpoint,
      a Fortran90 code which
      solves one or more ordinary differential equations (ODE)
      using the midpoint method.
    
    
      
      nms,
      a Fortran90 code which
      includes the ddriv() package of ODE solvers.
    
    
      
      ode,
      a Fortran90 code which
      implements the Shampine and Allen ODE solver.
    
    
      
      predator_prey_ode,
      a Fortran90 code which
      solves a pair of predator prey ordinary differential equations (ODE).
    
    
      
      rkf45,
      a Fortran90 code which
      implements a Runge-Kutta-Fehlberg ODE solver.
    
    
      
      stiff_ode,
      a Fortran90 code which 
      considers an ordinary differential equation (ODE) which is
      an example of a stiff ODE.
    
    
      References:
    
    
      
        - 
          David Arnold, John Polking,
          Ordinary Differential Equations using Matlab,
          Second Edition,
          Prentice Hall, 1999,
          ISBN: 0130113816.
         
        - 
          Wayne Enright, John Pryce,
          Two Fortran packages for assessing initial value methods,
          ACM Transactions on Mathematical Software,
          Volume 13, Number 1, March 1987, pages 1-27.
         
        - 
          Wayne Enright, John Pryce,
          Algorithm 648:
          NSDTST and STDTST,
          ACM Transactions on Mathematical Software,
          Volume 13, Number 1, March 1987, pages 28-34.
         
        - 
          Thomas Hull, Wayne Enright, BM Fellen, Arthur Sedgwick,
          Comparing numerical methods for ordinary differential equations,
          SIAM Journal on Numerical Analysis,
          Volume 9, 1972, pages 603-637.
         
        - 
          Cleve Moler,
          Cleve's Corner: Stiff Differential Equations,
          MATLAB News and Notes,
          May 2003, pages 12-13.
         
      
    
    
      
        - 
          
          https://pitagora.dm.uniba.it/~testset/,
          Test Set for IVP Solvers.
        
 
        - 
          
           https://www.unige.ch/math/~hairer/testset/testset.html
          Stiff ODE test set of Hairer and Wanner.
        
 
      
    
    
      Source Code:
    
    
      
    
    
    
      Last revised on 02 October 2023.