//etude d'une orbite avec la methode de Runge #include #include #include "dislin.h" using namespace std; int main() { const int steps = 50000; const double GM = 1.; //G * M double xpos[steps], ypos[steps], xvel[steps], yvel[steps]; //conditions initiales pour orbite circulaire //xpos[0] = 1.0; ypos[0] = 0.0; //xvel[0] = 0.0; yvel[0] = 1.0; //conditions initiales pour orbite elliptique //si V0 < 1 -> ellipse //si V0 > 1 -> hyperbole xpos[0] = 1.0; ypos[0] = 0.0; xvel[0] = 0.0; yvel[0] = 0.5; double dT = 0.002; //pas d'integration double normR, xacc, yacc; //methode de Runge //velocite initiale dans t0 - dt/2 normR = sqrt(xpos[0]*xpos[0] + ypos[0]*ypos[0]); xacc = - GM * xpos[0] / (normR*normR*normR); //force ou acceleration, GM = 1 yacc = - GM * ypos[0] / (normR*normR*normR); xvel[0] = xvel[0] - xacc*dT/2.; //vitesse yvel[0] = yvel[0] - yacc*dT/2.; for (int i=1; i