Hola:
Tengo en mente hacer un programa en C que me calcule las posiciones en coordenadas cartesianas y polares de la órbita de Venus respecto al Sol. La idea sería que el programa fuera sacando las sucesivas posiciones, velocidades y aceleraciones en cartesianas por integración numérica -método de Euler-, con un bucle for, y que el usuario seleccionara el infinitesimal de tiempo para hacer la integración.
No me hace falta introducir nada relacionado con perturbaciones gravitacionales de la órbita.
Había pensado dividir la órbita en cuatro cuadrantes y ver qué pasa con la aceleración centrípeta, la velocidad y la aceleración en cada uno de ellos, pero no me funciona. Éste sería el código para el tercer cuadrante:
Toda ayuda es bienvenida.
Tengo en mente hacer un programa en C que me calcule las posiciones en coordenadas cartesianas y polares de la órbita de Venus respecto al Sol. La idea sería que el programa fuera sacando las sucesivas posiciones, velocidades y aceleraciones en cartesianas por integración numérica -método de Euler-, con un bucle for, y que el usuario seleccionara el infinitesimal de tiempo para hacer la integración.
No me hace falta introducir nada relacionado con perturbaciones gravitacionales de la órbita.
Había pensado dividir la órbita en cuatro cuadrantes y ver qué pasa con la aceleración centrípeta, la velocidad y la aceleración en cada uno de ellos, pero no me funciona. Éste sería el código para el tercer cuadrante:
Código:
posiciony = 0, posicionx = -1.082082e11, velocidadx = 0, velocidady = 3.501e4, aceleracionx = 1.133e-2; /* Las sucesivas posiciones y valores de la velocidad y la aceleración se calculan por la intergración de Euler. El Sol es el centro de coordenadas */ for( i = 0; i <= repeticiones; i++ ) { if( posicionx <= 0 && posiciony >= b ) // Condiciones para el 3º cuadrante. { velocidadx = aceleracionx * diferencial; velocidady = aceleraciony * diferencial; posicionx += velocidadx * diferencial; posiciony -= velocidady * diferencial; unitariox = posicionx / ( sqrt( ( pow( posicionx, 2 ) ) + ( pow( posiciony, 2 ) ) ) ); unitarioy = posiciony / ( sqrt( ( pow( posicionx, 2 ) ) + ( pow( posiciony, 2 ) ) ) ); aceleracionx = ( G * masasolar / ( sqrt( ( pow( posicionx, 2 ) ) + pow( posiciony, 2 ) ) ) ) * unitariox; aceleraciony = ( G * masasolar / ( sqrt( ( pow( posicionx, 2 ) ) + pow( posiciony, 2 ) ) ) ) * unitarioy; } }
Comentario