Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - saraou

#1
Muchisimas gracias! ahora ya puedo avanzar con el trabajo.
Un saludo! :)
#2
acabo de probar y sigue dando una recta... pero gracias!!!!
#3
He simplificqdo el problema que quiero resolver. Ahora considero que el sol esta fijo y quiero calcular la orbita de la tierra elrededor del sol. Aqui esta:

#include <cmath>
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;



   double dt = 1;
   const int L=365;
   double d[L];

   double X01= 1.52e8, vx01= 0 ,   vx1[L],  ax1[L], X1[L], fx1[L];
   double Y01= 0,  vy01= 2.98e4,   vy1[L],  ay1[L], Y1[L], fy1[L];
   double q1;

 

   double G= 6.674e-11 , m2=1.98e30 , m1=5.97e24 ;


int main()


    ofstream output("output.dat");


for(int i=0;i<=L;i++)
     {
           
             vx1[0]=vx01;
             X1[0]=X01;
             vy1[0]=vy01;
             Y1[0]=Y01;
             q1=atan(Y1/X1);
             d= sqrt((pow((X1),2))+(pow((Y1),2)));



             fx1= (G*m1*m2*(cos(q1)))/(pow(d,2));
             ax1= fx1/m1;
             vx1[i+1]=vx1+(ax1*dt);
             X1[i+1]=X1+(vx1*dt);
           
           // cout<<"\n Les positions OX1 sont:"<<X1;




             
             fy1=(G*m1*m2*(sin(q1)))/(pow(d,2));
             ay1= fy1/m1;
             vy1[i+1]=vy1+(ay1*dt);
             Y1[i+1]=Y1+(vy1*dt);
           
          //  cout<<"\n Les positions OY1 sont:"<<Y1;




   


     output << X1 << " " << Y1 << endl;
   

    }
   
   
return 0 ;
}



Por que obtengo una recta y no la orbita eliptica que deberia de salir?? muchas gracias!!!
#4
Esto es lo que he intentado hacer, pero no hay forma. No obtengo ningun resultado.



//El cuerpo 1 se corresponde a la Tierra. El 2, a la Luna.
// Consideramos que el centro de masas del sistema Tierra-Luna se encuentra en el origen de coordenadas.
// La Tierra se encuentra a 4668 km del CM. La Luna a 379432 km.
// Para calcular la velocidad de rotacion de ambos cuerpos multiplicamos la velocidad angular del sistema (2.67e-6) por la distancia a la que se encuentra cada cuerpo.


#include <cmath>
#include <iostream>
#include <fstream>
#include <cstdlib>

using namespace std;


   
   double dt = 1;
   const int L=200;
   double d= 3.84e8;

   double X01= -4.5e3, vx01= -8.79 ,   vx1[L],  ax1[L], X1[L], fx1[L];
   double Y01= 4.5e3,  vy01= 8.79,   vy1[L],  ay1[L], Y1[L], fy1[L];
   double q1[L], q10 = -0.785;

   double X02= 2.68e5, vx02= 715.54,   vx2[L],  ax2[L], X2[L], fx2[L];
   double Y02= 2.68e5, vy02= 715.54,   vy2[L],  ay2[L], Y2[L], fy2[L];
   double q2[L], q20 = 0.785;

   double G= 6.674e-11 , m1= 5.97e24, m2=7.35e22 ;

int main()


    ofstream output("output.dat");


for(int i=1;i<=L;i++)
     {
           
             vx1[0]=vx01;
             X1[0]=X01;
             vy1[0]=vy01;
             Y1[0]=Y01;
             q1[0]=q10;
             q1=atan(Y1/X1);

             vx2[0]=vx02;
             X2[0]=X02;
             vy2[0]=vy02;
             Y2[0]=Y02;
             q2[0]=q20;
             q2=atan(Y2/X2);



           /*OX para el primer cuerpo*/

             fx1[i-1] = ((G*m1*m2)/(sqrt(pow(d,2))))*cos(q1[i-1]);
             ax1[i-1]= fx1[i-1]/m1;
             vx1=vx1[i-1]+(ax1[i-1]*dt);
             X1=X1[i-1]+(vx1[i-1]*dt);
           
            cout<<"\n Las posiciones OX1 son:"<<X1[i-1];
         

             /*OY para el primer cuerpo*/
             
             fy1[i-1] = ((G*m1*m2)/(sqrt(pow(d,2))))*sin(q1[i-1]);
             ay1[i-1]= fy1[i-1]/m1;
             vy1=vy1[i-1]+(ay1[i-1]*dt);
             Y1=Y1[i-1]+(vy1[i-1]*dt);
           
            cout<<"\n Las posiciones OY1 son:"<<Y1[i-1];



           /*OX para el segundo cuerpo*/
             fx2[i-1] = ((G*m1*m2)/(sqrt(pow(d,2))))*cos(q2[i-1]);
             ax2[i-1]= fx2[i-1]/m2;
             vx2=vx2[i-1]+(ax2[i-1]*dt);
             X2=X2[i-1]+(vx2[i-1]*dt);
           
            cout<<"\n Las posiciones OX2 son:"<<X2[i-1];
         

             /*OY para el segundo cuerpo*/
             
             fy2[i-1] = ((G*m1*m2)/(sqrt(pow(d,2))))*sin(q2[i-1]);
             ay2[i-1]= fy2[i-1]/m2;
             vy2=vy2[i-1]+(ay2[i-1]*dt);
             Y2=Y2[i-1]+(vy2[i-1]*dt);
           
            cout<<"\n Las posiciones OY2 son:"<<Y2[i-1];     

   


     output << X1[i-1] << " " << Y1[i-1] << endl;
     output << X2[i-1] << " " << Y2[i-1] << endl;
    }
   
   
return 0 ;
}





Muchas gracias a todo aquel que me ayude!!



#5
y me podrias, por favor,  echar una mano?
#6
Programación C/C++ / PROBLEMA DE LOS DOS CUERPOS
21 Noviembre 2012, 15:28 PM
Holaaa!!! alguien sabe como resolver el problema de kepler de los dos cuerpos mediante c++ y empleando el metodo de integracion de euler, para una vez conocida la fuerza, poder hallar la velocidad y luego la posicion de ambos cuerpos y trazar asi su trayectoria???
llevo ya unas semanas peleandome con este proyecto pero no soy quien a sacarlo a delante!!
muchas gracias!!!