Euler method for ODE in c++

Hi Everybody
I am beginner in c++ and I need your help plz. I implemented euler method for solving simple ODEs (y' = x -y, y(0)=1)and it is forward in time(from t=0 to t=1) and it worked well, my question is : I want to run this code backward in time(t=1 to t=0) what i have to change in my code?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* Euler for a set of first order differential equations */

#include <stdio.h>
#include <math.h>
#define dist 0.2               /* stepsize in t*/
#define MAX 1.0                /* max for t */
int N=1;
void euler(double x, double y[], double step); /* Euler function */

double f(double x, double y[], int i);          /* function for derivatives */

main()
{
double t, y[N];
int j;

y[0]=1.0;                                       /* initial condition */

 
for (j=0; j*dist<=MAX ;j++)                     /* time loop */
{
   t=j*dist;
   printf("j =  %d,t = %f y[0] = %f\n", j,t, y[0]);
   euler(t, y, dist);

}

}

void euler(double x, double y[], double step)
{
double  s[N];      /* for euler */
int i;
{
for (i=0;i<N;i++)
 {     s[i]=step*f(x, y, i);
}
}

{
for (i=0;i<N;i++) 
     y[i]+=s[i];
}
}
double  f(double x, double y[], int i)
{
      return(x-y[0]);                 /* derivative of first equation */
}

many thanks in advance!
Last edited on
Topic archived. No new replies allowed.