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

  1.    defoha(iter,h,x,y,dy,iflag,err)
  2.  
  3.       /* subroutine to solve first-order ordinary differential  */
  4.       /* equations y' = f(x,y) by Hamming's method.             */
  5.  
  6.       int iflag,iter;
  7.       float dy[],err[],h,x[],y[];
  8.  
  9.     {
  10.       int n,lda;
  11.       float cnpi,pmc,pmni,pnpi,pmpi,pmnpi,xn,yn;
  12.       double yprime();
  13.  
  14.       err[0] = 0.;
  15.       err[1] = 0.;
  16.       err[2] = 0.;
  17.       err[3] = 0.;
  18.       lda = 4;
  19.       defork(lda,h,x,y,dy,iflag);
  20.       pmc = 0.0;
  21.       for(n = 3; n <= iter-2; n++)
  22.       {
  23.        pnpi = y[n-3]+(4./3.)*h*(2.*dy[n]-dy[n-1]+2.*dy[n-2]);
  24.        pmni = pnpi-(112./121.) * pmc;
  25.        xn = x[n+1];
  26.        pmnpi = yprime(xn,pmni,iflag);
  27.        cnpi = (1./8.)*(9.*y[n]-y[n-2]+3.*h*(pmnpi+2.*dy[n]-dy[n-1]));
  28.        y[n+1] = cnpi + (9./121.) * (pnpi-cnpi);
  29.        xn = x[n+1];
  30.        yn = y[n+1];
  31.        dy[n+1] = yprime(xn,yn,iflag);
  32.        pmc = pnpi-cnpi;
  33.        err[n+1] = cnpi-pnpi;
  34.       }
  35.     }
  36.  
  37.