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

  1.    desoad(iter,h,x,y,dy,iflag)
  2.  
  3.       /* subroutine to solve second-order ordinary differential */
  4.       /* equations y" = f(x,y,y') by Adams' method.             */
  5.  
  6.       int iflag,iter;
  7.       float dy[],h,x[],y[];
  8.  
  9.     {
  10.       int i,lda;
  11.       float u1,u2,u3,u4,xn,yn,dyn;
  12.       double ydopri();
  13.  
  14.       lda = 4;
  15.       desork(lda,h,x,y,dy,iflag);
  16.       u1 = ydopri(x[0],y[0],dy[0],iflag);
  17.       u2 = ydopri(x[1],y[1],dy[1],iflag);
  18.       u3 = ydopri(x[2],y[2],dy[2],iflag);
  19.       u4 = ydopri(x[3],y[3],dy[3],iflag);
  20.  
  21.       for(i = 3; i <= iter-2; i++)
  22.       {
  23.        y[i+1] = y[i]+h*(55.*dy[i]-59.*dy[i-1]+37.*dy[i-2]-9.*dy[i-3])/24.;
  24.        dy[i+1] = dy[i]+h*(55.*u4-59.*u3+37.*u2-9.*u1)/24.;
  25.        u1 = u2;
  26.        u2 = u3;
  27.        u3 = u4;
  28.        u4 = ydopri(x[i+1],y[i+1],dy[i+1],iflag);
  29.       }
  30.     }
  31.