elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  PROBLEMA DE LOS DOS CUERPOS
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: PROBLEMA DE LOS DOS CUERPOS  (Leído 4,336 veces)
saraou

Desconectado Desconectado

Mensajes: 6


Ver Perfil
PROBLEMA DE LOS DOS CUERPOS
« en: 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!!!


En línea

fary


Desconectado Desconectado

Mensajes: 1.062



Ver Perfil WWW
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #1 en: 21 Noviembre 2012, 15:44 pm »

Hola, si se  hacerlo :P

saludos!


En línea

Un byte a la izquierda.
saraou

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #2 en: 21 Noviembre 2012, 15:49 pm »

y me podrias, por favor,  echar una mano?
En línea

$Edu$


Desconectado Desconectado

Mensajes: 1.842



Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #3 en: 22 Noviembre 2012, 00:40 am »

Claro, mas de uno te ayudara aca, solo deja tu intento, porque tareas no se hacen acá.
En línea

saraou

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #4 en: 22 Noviembre 2012, 10:37 am »

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!!



En línea

saraou

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #5 en: 23 Noviembre 2012, 17:01 pm »

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!!!
En línea

leosansan


Desconectado Desconectado

Mensajes: 1.314


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #6 en: 23 Noviembre 2012, 17:16 pm »

En las expresiones:
Código
  1. X1[i+1]=X1+(vx1*dt);
  2. .........
  3. .........
  4. Y1[i+1]=Y1+(vy1*dt);
que te dan la posición hay aceleración, tanto en OX como en OY y veo que usas las expresiones: x=x0+vx*t .....¿ y no faltaría: +1/2ax*t^2?. Idem para la y.
En línea

saraou

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #7 en: 23 Noviembre 2012, 17:23 pm »

acabo de probar y sigue dando una recta... pero gracias!!!!
En línea

za.asi

Desconectado Desconectado

Mensajes: 62


Ver Perfil
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #8 en: 23 Noviembre 2012, 20:49 pm »

La correccion de leosansan no era para que de unacurva, sino para incluir la aceleración.
En línea

cypascal

Desconectado Desconectado

Mensajes: 42


Ver Perfil WWW
Re: PROBLEMA DE LOS DOS CUERPOS
« Respuesta #9 en: 28 Noviembre 2012, 00:18 am »

Te comento:
1º) No estas aplicando las ecuaciones de Kepler (conservación del momento angular), sino las de gravitación universal (Newton)
2º) No vas a obtener una trayectoria elíptica de ninguna de las maneras, ya que supones la masa de la Tierra despreciable frente a la del Sol, diciendo que este último permanece quieto. Obtendras si acaso una trayectoria circular.
3º) Considerar dt=1dia es mucho considerar. Con esta consideración no se te cerrará la trayectoria ni por asomo.

Dicho todo esto, viendo el codigo, diría que falta cambiar el ángulo en cada iteración. Tampoco se muy bien que es lo que haces con las variables iniciales, que se te inicializan en cada iteración.

Igual me pongo a hacerlo de nuevo y si eso te cuento.

Un Saludo
En línea

Problemas interesantes de programación en C/C++ y Pascal en:
BLOG C/C++


WWW.CYPASCAL.BLOGSPOT.COM.ES
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema BlueZScanner y problema de conexión
Hacking Mobile
Kasswed 3 6,318 Último mensaje 6 Mayo 2006, 22:04 pm
por Gospel
La Gran Cita: cómo aplicar la teoría de los n-cuerpos a los n-datos
Noticias
wolfbcn 0 1,447 Último mensaje 30 Abril 2013, 17:45 pm
por wolfbcn
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines