home *** CD-ROM | disk | FTP | other *** search
- defork(iter,h,x,y,dy,iflag)
-
- /* subroutine to solve first-order ordinary differential */
- /* equations y'=f(x,y) by Runge-Kutta method. */
-
- int iflag,iter;
- float dy[],h,x[],y[];
-
- {
- int i;
- float tk1,tk2,tk3,tk4,xn,yn;
- float z;
- double yprime();
-
- xn = x[0];
- yn = y[0];
- dy[0] = yprime(xn,yn,iflag);
-
- for(i = 0; i <= iter-2; i++)
- {
- xn = x[i];
- yn = y[i];
- tk1 = h * yprime(xn,yn,iflag);
- xn = x[i] + (h * .5);
- yn = y[i] + (tk1 * .5);
- tk2 = h * yprime(xn,yn,iflag);
- yn = y[i] + (tk2 * .5);
- tk3 = h * yprime(xn,yn,iflag);
- xn = x[i] + h;
- yn = y[i] + tk3;
- tk4 = h * yprime(xn,yn,iflag);
- y[i+1] = y[i] + (tk1 + (2. * tk2) + (2. * tk3) + tk4)/6.0;
- xn = x[i+1];
- yn = y[i+1];
- dy[i+1] = yprime(xn,yn,iflag);
- }
- }