Cosas en las que pienso mientras me titulo

Cómo simular dos cuerpos en el espacio

Hola de nuevo. Llevo casi 4 meses sin actualizar este que es mi blog porque no he querido ni he sabido qué agregar. Afortunadamente ya sé qué agregar. Les enseñaré a simular dos cuerpos como Dios quiso. Sin asumir que uno no se mueve porque está muy grande ni que se mueven en circulos ni ninguna de esas payasadas que hacen los físicos mediocres como lo era yo hace 10 meses. Nada de eso. Aqui iniciaremos solamente asumiendo un sistema con momento angular constante y momento lineal cero, dos condiciones que nos servirán y se pueden observar en la vida real. Empecemos:

Las Matemáticas

Vamos a usar matemáticas, para variar. No espero que entiendan todo, pueden saltarse a cuando me pongo a programar sin que se enteren de nada, no se preocupen. Lo que haré es presentar las condiciones que mencioné arriba en forma de ecuaciones, aplicar derivadas y obtener ecuaciones de movimiento.

Tienes dos objetos con masas M1M_1, M2M_2 que se mueven siguiendo vectores de dirección r1=(x1(t),y1(t),z1(t))\vec{r_1} = (x_1(t),y_1(t),z_1(t)), r2=(x2(t),y2(t),z2(t))\vec{r_2} = (x_2(t),y_2(t),z_2(t)), las cuales son funciones que dependen del tiempo que no conocemos. Lo que al final obtendremos son ecuaciones para sus aceleraciones, y le pediremos muy amablemente a la computadora que nos brinde soluciones usando estas ecuaciones, y valores iniciales (también llamados valores de frontera). Si no son amables, su código no va a correr y van a tener 19230123801923012380 años de código mal optimizado.

Vamos a simplificar algunas cosas antes de continuar. Para empezar, tenemos que agregar lo que antes mencioné, la conservación del momento lineal y del momento angular. Esto es:

r1M1+r2M2=0 \vec{r_1}M_1 + \vec{r_2}M_2= 0 μ(r×r˙)=L \mu(\vec{r} \times \dot{\vec{r}})= \vec{L}

Con L\vec{L} un valor constante. Agregué dos nuevas variables, μ, r\mu,\ \vec{r}, las cuales defino como:

1μ=i=121Mi \frac{1}{\mu} = \sum_{i=1}^2 \frac{1}{M_i} r=r1r2 \vec{r} = \vec{r_1} - \vec{r_2}

Y usaremos en un momento. Ahora regresemos a la ecuación 1. Reorganizandola un poco, podemos obtener r2\vec{r_2} en términos de r1\vec{r_1} o viceversa. Si usamos también la ecuación 4 obtenemos definiciones para r1, r2\vec{r_1},\ \vec{r_2} en términos de r\vec{r}:

r1=M2M1+M2r \vec{r_1} = \frac{M_2}{M_1 + M_2}\vec{r} r2=M1M1+M2r \vec{r_2} = -\frac{M_1}{M_1 + M_2}\vec{r}

Si asumimos que todas las masas que usaremos se quedan donde están, obtendremos descripciones para las velocidades de ambos cuerpos en términos de este nuevo vector r\vec{r}. Si además usamos la ecuación 3 obtenemos que las ecuaciones 5 y 6 se pueden escribir como:

r1=μM1r \vec{r_1} = \frac{\mu}{M_1}\vec{r} r2=μM2r \vec{r_2} = -\frac{\mu}{M_2}\vec{r}

Usaremos algo llamado Lagrangiano para obtener las ecuaciones de movimiento. Este es definido para este caso particular como:

L(r1,r2,r1˙,r2˙,t)=M12(r1˙2)+M22(r2˙2)+GM1M2r1r2 \mathcal{L}(\vec{r_1},\vec{r_2},\dot{\vec{r_1}},\dot{\vec{r_2}},t) = \frac{M_1}{2}\left(\dot{\vec{r_1}}^2\right) + \frac{M_2}{2}\left(\dot{\vec{r_2}}^2\right) + \frac{GM_1M_2}{\vert\vec{r_1}-\vec{r_2}\vert}

Que podemos reescribir como:

L(r,r˙,t)=μ2(r˙2)+Gμ(M1+M2)r \mathcal{L}(\vec{r},\dot{\vec{r}},t) = \frac{\mu}{2}\left(\dot{\vec{r}}^2\right) + \frac{G\mu(M_1+M_2)}{\vert\vec{r}\vert}

Muy bonito. Antes de empezar a derivar cosas vamos a definir qué coordenadas nos convendría usar. No le pienses mucho ya hice eso por ti vamos a usar coordenadas esféricas aplicadas a un caso particular que surge de una de nuestras condiciones iniciales.

Cuando asumimos que nuestro sistema tiene un solo momento angular esencialmente nos permitimos asumir que todo el movimiento ocurria en un plano, o lo que es lo mismo, que r1, r2, r\vec{r_1},\ \vec{r_2},\ \vec{r} pueden ser descritas asumiendo que una de las tres dimensiones es constante.

Gracias a eso, podemos usar coordenadas cilindricas (ρ,θ,z)(\rho, \theta, z) para describir el movimiento de los dos cuerpos, de la siguiente manera:

r1=μM1ρ(cos(θ)i^+sin(θ)j^+zρk^)r2=μM2ρ(cos(θ)i^+sin(θ)j^++zρk^)\begin{aligned} \vec{r_1} &=\frac{\mu}{M_1} \rho \left(\cos(\theta) \hat{i} + \sin(\theta) \hat{j} + \frac{z}{\rho} \hat{k}\right)\\ \vec{r_2} &= -\frac{\mu}{M_2} \rho \left(\cos(\theta) \hat{i} + \sin(\theta) \hat{j} + + \frac{z}{\rho} \hat{k} \right) \end{aligned}

Una vez hecho esto, podremos obtener el Lagrangiano en coordenadas cilíndricas, sabiendo que zz es constante:

L(ρ,ρ˙,θ,θ˙,t)=μρ2θ˙2+ρ˙22+Gμ(M1+M2)ρ \mathcal{L}({\rho},\dot{\rho},{\theta},\dot{\theta},t) = \mu\frac{\rho^2\dot{\theta}^2 + \dot{\rho}^2}{2} + \frac{G\mu(M_1 + M_2)}{\rho}

Notamos que efectivamente el sistema es reducido a uno de dos dimensiones. Ahora usando las ecuaciones Euler-Lagrange obtendremos las ecuaciones de movimiento que necesitamos:

Este sistema es de 3kn3k - n grados de libertad, variables independientes (que podemos manipular sin afectar a otras), donde kk es el número de cuerpos y nn es el número de restricciones que le pusimos al sistema.

k=2k = 2, así que antes de las restricciones tenemos 6 grados de libertad - tres coordenadas espaciales para cada cuerpo. Al restringir el movimiento cuando agregamos las ecuaciones 1 y 4, perdemos 4 grados de libertad, al tener dos ecuaciones que relacionan a los dos cuerpos.

Así pues, obtenemos dos grados de libertad, (ρ, θ)\left(\rho,\ \theta\right). Aplicaremos las ecuaciones Euler-Lagrange a estos dos grados de libertad que nos sobran:

μddt(ρ2θ˙)=0 \mu \frac{d}{dt}(\rho^2\dot{\theta}) = 0 ρ¨=ρθ˙2G(M1+M2)ρ2 \ddot{\rho} = \rho\dot{\theta}^2 -\frac{G(M_1 + M_2)}{\rho^2}

La ecuación 13 nos brinda la información de que

μρ2θ˙L \mu \rho^2\dot{\theta} \equiv L

es un valor constante respecto al tiempo, por lo que podemos reescribir a θ˙2\dot{\theta}^2 como:

θ˙2=L2μ2ρ4 \dot{\theta}^2 = \frac{L^2}{\mu^2 \rho^4}

Sustituyendo este valor en la ecuación 14 tenemos:

ρ¨=L2μ2ρ3G(M1+M2)ρ2 \ddot{\rho} = \frac{L^2}{\mu^2\rho^3} -\frac{G(M_1 + M_2)}{\rho^2}

¡Sorpresa! Obtuvimos una descripción para ρ¨\ddot{\rho} en términos de ρ\rho solamente.

Ahora buscamos θ¨\ddot{\theta}:

θ¨=2Lμρ3ρ˙ \ddot{\theta} = \frac{-2L}{\mu \rho^3}\dot{\rho}

Notamos que vamos a necesitar obtener el valor para ρ, ρ˙\rho,\ \dot{\rho} en nuestro programa. Esto lo haremos usando un Método Simpléctico de solución de ecuaciones diferenciales de segundo orden, el cual veremos aquí.

CC BY-SA 4.0 Eduardo Vazquez Kuri. Last modified: March 24, 2025. Website built with Franklin.jl and the Julia programming language.