home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-SSP.ARJ / DEFORK.C < prev    next >
Encoding:
Text File  |  1984-08-07  |  943 b   |  38 lines

  1.    defork(iter,h,x,y,dy,iflag)
  2.  
  3.       /* subroutine to solve first-order ordinary differential */
  4.       /* equations y'=f(x,y) by Runge-Kutta method.            */
  5.  
  6.       int iflag,iter;
  7.       float dy[],h,x[],y[];
  8.  
  9.     {
  10.       int i;
  11.       float tk1,tk2,tk3,tk4,xn,yn;
  12.       float z;
  13.       double yprime();
  14.  
  15.       xn = x[0];
  16.       yn = y[0];
  17.       dy[0] = yprime(xn,yn,iflag);
  18.  
  19.       for(i = 0; i <= iter-2; i++)
  20.       {
  21.        xn = x[i];
  22.        yn = y[i];
  23.        tk1 = h * yprime(xn,yn,iflag);
  24.        xn = x[i] + (h * .5);
  25.        yn = y[i] + (tk1 * .5);
  26.        tk2 = h * yprime(xn,yn,iflag);
  27.        yn = y[i] + (tk2 * .5);
  28.        tk3 = h * yprime(xn,yn,iflag);
  29.        xn = x[i] + h;
  30.        yn = y[i] + tk3;
  31.        tk4 = h * yprime(xn,yn,iflag);
  32.        y[i+1] = y[i] + (tk1 + (2. * tk2) + (2. * tk3) + tk4)/6.0;
  33.        xn = x[i+1];
  34.        yn = y[i+1];
  35.        dy[i+1] = yprime(xn,yn,iflag);
  36.       }
  37.     }
  38.