//etude d'une orbite avec la methode de Runge //avec frottement #include #include #include "dislin.h" using namespace std; int main() { //declaration de toutes les constantes que nous allons utiliser dans les caculs const double RT = 6378.; const double GM = 398645.; //G * masse_terre double alt = 1000.; const double R0 = RT + alt; const double V0 = sqrt(GM/R0); const double CX = 0.001; //coefficient de frottement const int steps = 60000; double xpos[steps], ypos[steps], xvel[steps], yvel[steps]; xpos[0] = R0; ypos[0] = 0.0; //conditions initiales xvel[0] = 0.0; yvel[0] = V0; double dT = 1.; //pas d'integration //methode de Runge //vitesse initiale en t0 - dt/2 double normR, xacc, yacc; normR = sqrt(xpos[0]*xpos[0] + ypos[0]*ypos[0]); xacc = - GM / (normR*normR*normR) * (xpos[0]-CX*ypos[0]) ; //force ou acceleration yacc = - GM / (normR*normR*normR) * (ypos[0]+CX*xpos[0]); xvel[0] = xvel[0] - xacc*dT/2.; //vitesse yvel[0] = yvel[0] - yacc*dT/2.; int nsteps = 0; int norbits = 0; for (int i=1; i