Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <math.h>
- #include "ode.h"
- #define ALPHA 0.01
- #define TOL 1e-6
- #define REL 1
- #define DX 0.1
- void f(double x, double y[], double yp[]) {
- yp[0] = 2.0 * y[0] - ALPHA * y[0] * y[1];
- yp[1] = -y[1] + ALPHA * y[0] * y[1];
- }
- int main(int argc, char *argv[]) {
- double y[2]; // y[0] - r; y[1] - f
- double x;
- double step = 1e-3;
- FILE *fdat;
- // first situation
- fdat = fopen("sit1.dat", "w");
- x = 0.0;
- y[0] = 10.0;
- y[1] = 30.0;
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", 0.0, y[0], y[1]);
- //printf("x = %.1lf\tr = %.10e\tf = %.10e\n", 0.0, y[0], y[1]);
- while (x <= 20.0) {
- autoint(2, &x, x + DX, y, &step, TOL, REL, f);
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", x, y[0], y[1]);
- //printf("x = %.1lf\tr = %.10e\tf = %.10e\n", x, y[0], y[1]);
- }
- fclose(fdat);
- // second situation
- fdat = fopen("sit2.dat", "w");
- x = 0.0;
- y[0] = 30.0;
- y[1] = 10.0;
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", 0.0, y[0], y[1]);
- while (x <= 20.0) {
- autoint(2, &x, x + DX, y, &step, TOL, REL, f);
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", x, y[0], y[1]);
- }
- fclose(fdat);
- // third situation
- fdat = fopen("sit3.dat", "w");
- x = 0.0;
- y[0] = 300.0;
- y[1] = 100.0;
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", 0.0, y[0], y[1]);
- while (x <= 20.0) {
- autoint(2, &x, x + DX, y, &step, TOL, REL, f);
- fprintf(fdat, "%.1lf\t%.10e\t%.10e\n", x, y[0], y[1]);
- }
- fclose(fdat);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment