# include # include # include using namespace std; void f4 ( double t, double u[], double dudt[] ); int main ( ) // // MIDPOINT_F4 uses the midpoint method on problem F4, the predator-prey function. // { double dt = 0.1, dudt[2], t0 = 0.0, t1, th, tmax = 20.0, u0[2] = { 300, 150 }, u1[2], uh[2]; int i; while ( true ) { cout << " " << t0 << " " << u0[0] << " " << u0[1] << "\n"; if ( tmax <= t0 ) { break; } // // Half step. // f4 ( t0, u0, dudt ); th = t0 + 0.5 * dt; for ( i = 0; i < 2; i++ ) { uh[i] = u0[i] + 0.5 * dt * dudt[i]; } // // Full step. // f4 ( th, uh, dudt ); t1 = t0 + dt; for ( i = 0; i < 2; i++ ) { u1[i] = u0[i] + dt * dudt[i]; } // // Shift. // t0 = t1; for ( i = 0; i < 2; i++ ) { u0[i] = u1[i]; } } return 0; } void f4 ( double t, double u[], double dudt[] ) { double alpha = 0.01, f, r; r = u[0]; f = u[1]; dudt[0] = 2 * r - alpha * r * f; dudt[1] = - f + alpha * r * f; return; }