stringtranslate.com

Simulación de N cuerpos

Una simulación de N cuerpos de la formación cosmológica de un cúmulo de galaxias en un universo en expansión

En física y astronomía , una simulación de N -cuerpos es una simulación de un sistema dinámico de partículas, generalmente bajo la influencia de fuerzas físicas, como la gravedad (ver problema de n - cuerpos para otras aplicaciones). Las simulaciones de N cuerpos son herramientas ampliamente utilizadas en astrofísica , desde la investigación de la dinámica de sistemas de pocos cuerpos como el sistema Tierra - Luna - Sol hasta la comprensión de la evolución de la estructura a gran escala del universo . [1] En cosmología física , las simulaciones de N -cuerpos se utilizan para estudiar procesos de formación de estructuras no lineales, como filamentos de galaxias y halos de galaxias, debido a la influencia de la materia oscura . Se utilizan simulaciones directas de N cuerpos para estudiar la evolución dinámica de los cúmulos estelares .

Naturaleza de las partículas

Las 'partículas' tratadas por la simulación pueden corresponder o no a objetos físicos que son de naturaleza particulada. Por ejemplo, una simulación de N cuerpos de un cúmulo de estrellas podría tener una partícula por estrella, por lo que cada partícula tiene algún significado físico. Por otro lado, una simulación de una nube de gas no puede permitirse el lujo de tener una partícula por cada átomo o molécula de gas, ya que esto requeriría del orden de10 23 partículas por cada mol de material (ver constante de Avogadro ), por lo que una sola 'partícula' representaría una cantidad mucho mayor de gas (a menudo implementada mediante hidrodinámica de partículas suavizadas ). Esta cantidad no necesita tener ningún significado físico, sino que debe elegirse como un compromiso entre precisión y requisitos informáticos manejables.

Simulación de Materia Oscura

La materia oscura juega un papel importante en la formación de galaxias. La evolución temporal de la densidad f (en el espacio de fases) de las partículas de materia oscura se puede describir mediante la ecuación de Boltzmann sin colisiones.

En la ecuación, es la velocidad y Φ es el potencial gravitacional dado por la ecuación de Poisson . Estas dos ecuaciones acopladas se resuelven en un Universo de fondo en expansión, que se rige por las ecuaciones de Friedmann , tras determinar las condiciones iniciales de las partículas de materia oscura. El método convencional empleado para inicializar posiciones y velocidades de partículas de materia oscura implica mover partículas dentro de una red cartesiana uniforme o una configuración de partículas similar al vidrio. [2] Esto se hace mediante el uso de una aproximación de teoría lineal o una teoría de perturbaciones de bajo orden . [3]

Simulaciones de cuerpos N gravitacionales directos

Simulación de N-cuerpos de 400 objetos con parámetros cercanos a los de los planetas del Sistema Solar

En las simulaciones gravitacionales directas de N cuerpos, las ecuaciones de movimiento de un sistema de N partículas bajo la influencia de sus fuerzas gravitacionales mutuas se integran numéricamente sin aproximaciones simplificadoras. Estos cálculos se utilizan en situaciones donde las interacciones entre objetos individuales, como estrellas o planetas, son importantes para la evolución del sistema.

Las primeras simulaciones gravitacionales directas de N cuerpos fueron llevadas a cabo por Erik Holmberg en el Observatorio de Lund en 1941, determinando las fuerzas entre estrellas en el encuentro de galaxias mediante la equivalencia matemática entre la propagación de la luz y la interacción gravitacional: colocando bombillas en las posiciones de las estrellas y Al medir los flujos de luz direccionales en las posiciones de las estrellas mediante una fotocélula, las ecuaciones de movimiento se pueden integrar con esfuerzo. [4] Las primeras simulaciones puramente calculativas fueron realizadas por Sebastian von Hoerner en el Astronomisches Rechen-Institut de Heidelberg , Alemania. Sverre Aarseth de la Universidad de Cambridge (Reino Unido) ha dedicado toda su vida científica al desarrollo de una serie de códigos de cuerpos N altamente eficientes para aplicaciones astrofísicas que utilizan pasos de tiempo adaptativos (jerárquicos), un esquema vecino de Ahmad-Cohen y la regularización de encuentros cercanos. La regularización es un truco matemático para eliminar la singularidad en la ley de gravitación newtoniana de dos partículas que se acercan arbitrariamente entre sí. Los códigos de Sverre Aarseth se utilizan para estudiar la dinámica de cúmulos estelares, sistemas planetarios y núcleos galácticos. [ cita necesaria ]

Simulaciones de relatividad general

Muchas simulaciones son lo suficientemente grandes como para que los efectos de la relatividad general al establecer una cosmología de Friedmann-Lemaitre-Robertson-Walker sean significativos. Esto se incorpora en la simulación como una medida evolutiva de la distancia (o factor de escala ) en un sistema de coordenadas en movimiento , lo que hace que las partículas se desaceleren en las coordenadas en movimiento (así como debido al desplazamiento al rojo de su energía física). Sin embargo, las contribuciones de la relatividad general y la velocidad finita de la gravedad pueden ignorarse, ya que las escalas de tiempo dinámicas típicas son largas en comparación con el tiempo de cruce de la luz para la simulación, y la curvatura espacio-temporal inducida por las partículas y las velocidades de las partículas son pequeñas. . Las condiciones de contorno de estas simulaciones cosmológicas suelen ser periódicas (o toroidales), de modo que un borde del volumen de simulación coincide con el borde opuesto.

Optimizaciones de cálculo

Las simulaciones de N cuerpos son simples en principio, porque implican simplemente integrar las 6 N ecuaciones diferenciales ordinarias que definen los movimientos de las partículas en la gravedad newtoniana . En la práctica, el número N de partículas involucradas suele ser muy grande (las simulaciones típicas incluyen muchos millones, la simulación Millennium incluyó diez mil millones) y el número de interacciones entre partículas que necesitan calcularse aumenta del orden de N 2 , y por lo tanto, La integración de las ecuaciones diferenciales puede resultar prohibitivamente costosa desde el punto de vista computacional. Por lo tanto, comúnmente se utilizan una serie de mejoras.

La integración numérica generalmente se realiza en pequeños intervalos de tiempo utilizando un método como la integración por salto . Sin embargo, toda integración numérica conduce a errores. Los pasos más pequeños dan menos errores pero se ejecutan más lentamente. La integración de Leapfrog es aproximadamente de segundo orden en el paso de tiempo, otros integradores, como los métodos de Runge-Kutta, pueden tener una precisión de cuarto orden o mucho mayor.

Uno de los refinamientos más simples es que cada partícula lleva consigo su propia variable de paso de tiempo, de modo que las partículas con tiempos dinámicos muy diferentes no tienen que evolucionar hacia adelante al ritmo del tiempo más corto.

Existen dos esquemas de aproximación básicos para disminuir el tiempo de cálculo de tales simulaciones. Estos pueden reducir la complejidad computacional a O (N log N) o mejor, con pérdida de precisión.

Métodos de árbol

En los métodos de árbol , como la simulación de Barnes-Hut , generalmente se usa un octree para dividir el volumen en celdas cúbicas y solo las interacciones entre partículas de celdas cercanas deben tratarse individualmente; Las partículas en células distantes pueden tratarse colectivamente como una única partícula grande centrada en el centro de masa de la célula distante (o como una expansión multipolar de bajo orden ). Esto puede reducir drásticamente el número de interacciones de pares de partículas que deben calcularse. Para evitar que la simulación se vea saturada por el cálculo de las interacciones entre partículas, las celdas deben refinarse a celdas más pequeñas en partes más densas de la simulación que contienen muchas partículas por celda. Para simulaciones en las que las partículas no están distribuidas uniformemente, los métodos de descomposición de pares bien separados de Callahan y Kosaraju producen un tiempo O ( n  log  n ) óptimo por iteración con dimensión fija.

Método de malla de partículas

Otra posibilidad es el método de malla de partículas en el que el espacio se discretiza en una malla y, a los efectos de calcular el potencial gravitacional , se supone que las partículas están divididas entre los vértices circundantes de 2x2 de la malla. La energía potencial Φ se puede encontrar con la ecuación de Poisson.

donde G es la constante de Newton y es la densidad (número de partículas en los puntos de la malla). La transformada rápida de Fourier puede resolver esto de manera eficiente yendo al dominio de la frecuencia donde la ecuación de Poisson tiene la forma simple

donde está el número de onda comoving y los sombreros denotan transformadas de Fourier. Desde , el campo gravitacional ahora se puede encontrar multiplicando por y calculando la transformada inversa de Fourier (o calculando la transformada inversa y luego usando algún otro método). Dado que este método está limitado por el tamaño de la malla, en la práctica se utiliza una malla más pequeña o alguna otra técnica (como la combinación con un árbol o un algoritmo simple partícula-partícula) para calcular las fuerzas a pequeña escala. A veces se utiliza una malla adaptativa, en la que las celdas de la malla son mucho más pequeñas en las regiones más densas de la simulación.

Optimizaciones de casos especiales

Se utilizan varios algoritmos de perturbación gravitacional diferentes para obtener estimaciones bastante precisas de la trayectoria de los objetos en el Sistema Solar .

La gente suele decidir poner un satélite en una órbita congelada . La trayectoria de un satélite que orbita cerca de la Tierra se puede modelar con precisión a partir de la órbita elíptica de dos cuerpos alrededor del centro de la Tierra y agregando pequeñas correcciones debido al achatamiento de la Tierra , la atracción gravitacional del Sol y la Luna y la resistencia atmosférica. , etc. Es posible encontrar una órbita congelada sin calcular la trayectoria real del satélite.

La trayectoria de un pequeño planeta, cometa o nave espacial de largo alcance a menudo se puede modelar con precisión partiendo de la órbita elíptica de dos cuerpos alrededor del Sol y agregando pequeñas correcciones de la atracción gravitacional de los planetas más grandes en sus órbitas conocidas.

Algunas características de las trayectorias a largo plazo de un sistema de partículas se pueden calcular directamente. No es necesario calcular la trayectoria real de ninguna partícula en particular como paso intermedio. Tales características incluyen la estabilidad de Lyapunov , el tiempo de Lyapunov , varias medidas de la teoría ergódica , etc.

Sistemas de dos partículas

Aunque hay millones o miles de millones de partículas en las simulaciones típicas, normalmente corresponden a una partícula real con una masa muy grande, normalmente 10 9 masas solares . Esto puede introducir problemas con interacciones de corto alcance entre las partículas, como la formación de sistemas binarios de dos partículas . Como se supone que las partículas representan una gran cantidad de partículas de materia oscura o grupos de estrellas, estos binarios no son físicos. Para evitar esto, se utiliza una ley de fuerza newtoniana suavizada , que no diverge como el radio del cuadrado inverso en distancias cortas. La mayoría de las simulaciones implementan esto de forma bastante natural ejecutando las simulaciones en celdas de tamaño finito. Es importante implementar el procedimiento de discretización de tal manera que las partículas siempre ejerzan una fuerza evanescente sobre sí mismas.

Reblandecimiento

El ablandamiento es un truco numérico utilizado en las técnicas de N-cuerpos para evitar divergencias numéricas cuando una partícula se acerca demasiado a otra (y la fuerza llega al infinito). Esto se obtiene modificando el potencial gravitacional regularizado de cada partícula como

(en lugar de 1/r) donde es el parámetro de suavizado. El valor del parámetro de ablandamiento debe establecerse lo suficientemente pequeño para mantener las simulaciones realistas.

Resultados de simulaciones de N -cuerpos

Las simulaciones de N cuerpos arrojan resultados sobre la distribución de la materia oscura a gran escala y la estructura de los halos de materia oscura. Según simulaciones de materia oscura fría, la distribución general de la materia oscura a gran escala no es del todo uniforme. En cambio, muestra una estructura que se asemeja a una red, que consta de vacíos, paredes, filamentos y halos. Además, las simulaciones muestran que la relación entre la concentración de los halos y factores como la masa, el espectro de fluctuación inicial y los parámetros cosmológicos está relacionada con el tiempo real de formación de los halos. [5] En particular, los halos con menor masa tienden a formarse antes y, como resultado, tienen concentraciones más altas debido a la mayor densidad del Universo en el momento de su formación. Se ha descubierto que las formas de los halos no son perfectamente esféricas. Por lo general, los halos se alargan y se prolongan cada vez más hacia sus centros. Sin embargo, las interacciones entre la materia oscura y los bariones afectarían la estructura interna de los halos de materia oscura. Se necesitan simulaciones que modelen tanto la materia oscura como los bariones para estudiar estructuras a pequeña escala.

Incorporando bariones, leptones y fotones en simulaciones.

Muchas simulaciones simulan únicamente materia oscura fría y, por tanto, incluyen únicamente la fuerza gravitacional. La incorporación de bariones , leptones y fotones en las simulaciones aumenta drásticamente su complejidad y, a menudo, es necesario realizar simplificaciones radicales de la física subyacente. Sin embargo, esta es un área extremadamente importante y muchas simulaciones modernas ahora están tratando de comprender los procesos que ocurren durante la formación de galaxias y que podrían explicar el sesgo de las galaxias.

Complejidad computacional

Reif y Tate [6] demuestran que si el problema de alcanzabilidad de n cuerpos se define de la siguiente manera: dados n cuerpos que satisfacen una ley de potencial electrostático fija, se determina si un cuerpo alcanza una bola de destino en un período de tiempo determinado donde requerimos un poli( n ) bits de precisión y el tiempo objetivo es poli( n ) está en PSPACE .

Por otro lado, si la pregunta es si el cuerpo finalmente llega a la bola de destino, el problema es difícil en PSPACE. Estos límites se basan en límites de complejidad similares obtenidos para el trazado de rayos .

Simulaciones de ejemplo

Código repetitivo común

La implementación más simple de simulaciones de N cuerpos es una propagación ingenua de cuerpos en órbita; ingenuo al implicar que las únicas fuerzas que actúan sobre los cuerpos en órbita es la fuerza gravitacional que ejercen entre sí. En lenguajes de programación orientados a objetos , como C++ , algún código repetitivo es útil para establecer las estructuras matemáticas fundamentales, así como los contenedores de datos necesarios para la propagación; a saber, vectores de estado y, por tanto , vectores , y algún objeto fundamental que contenga estos datos, así como la masa de un cuerpo en órbita. Este método también es aplicable a otros tipos de simulaciones de N cuerpos; una simulación de masas puntuales con cargas utilizaría un método similar, sin embargo la fuerza sería por atracción o repulsión por interacción de campos eléctricos. De todos modos, la aceleración de una partícula es el resultado de la suma de los vectores de fuerza, divididos por la masa de la partícula:

Un ejemplo de un método programáticamente estable y escalable para contener datos cinemáticos de una partícula es el uso de matrices de longitud fija, que en código optimizado permite una fácil asignación de memoria y predicción de los recursos consumidos; como se ve en el siguiente código C++:

estructura Vector3 { doble e [ 3 ] = { 0 };      Vector3 () {}  ~ Vector3 () {}  Vector3 en línea ( doble e0 , doble e1 , doble e2 )       { esto -> e [ 0 ] = e0 ;   esto -> e [ 1 ] = e1 ;   esto -> e [ 2 ] = e2 ;   }};estructura entidad orbital { doble e [ 7 ] = { 0 };      Entidad Orbital () {}  ~ Entidad Orbital () {}  OrbitalEntity en línea ( doble e0 , doble e1 , doble e2 , doble e3 , doble e4 , doble e5 , doble e6 )               { esto -> e [ 0 ] = e0 ;   esto -> e [ 1 ] = e1 ;   esto -> e [ 2 ] = e2 ;   esto -> e [ 3 ] = e3 ;   esto -> e [ 4 ] = e4 ;   esto -> e [ 5 ] = e5 ;   esto -> e [ 6 ] = e6 ;   }};

Tenga en cuenta que OrbitalEntitycontiene suficiente espacio para un vector de estado, donde:

Además, OrbitalEntitycontiene suficiente espacio para un valor de masa.

Inicialización de parámetros de simulación.

Comúnmente, las simulaciones de N cuerpos serán sistemas basados ​​en algún tipo de ecuaciones de movimiento ; De estos, la mayoría dependerá de alguna configuración inicial para "iniciar" la simulación. En sistemas como los que dependen de algún potencial gravitacional o eléctrico, la fuerza sobre una entidad de simulación es independiente de su velocidad. Por lo tanto, para sembrar las fuerzas de la simulación, simplemente se necesitan posiciones iniciales, pero esto no permitirá la propagación: se requieren velocidades iniciales. Considere un planeta que orbita alrededor de una estrella: no tiene movimiento, pero está sujeto a la atracción gravitacional hacia su estrella anfitriona. A medida que avanza el tiempo y se agregan pasos de tiempo , ganará velocidad de acuerdo con su aceleración. Para un instante dado en el tiempo, la aceleración resultante de un cuerpo debido a sus masas vecinas es independiente de su velocidad; sin embargo, para el paso de tiempo , el cambio de posición resultante es significativamente diferente debido a la dependencia inherente de la propagación con la velocidad. En los mecanismos de propagación básicos, como el método simpléctico de Euler que se utilizará a continuación, la posición de un objeto en solo depende de su velocidad en , ya que el cambio de posición se calcula mediante

Sin aceleración, es estático; sin embargo, desde la perspectiva de un observador que solo ve la posición, se necesitarán dos pasos de tiempo para ver un cambio en la velocidad.

Se puede lograr una simulación similar a la del sistema solar tomando distancias promedio de masas puntuales equivalentes a planetas desde una estrella central. Para mantener el código simple, se utiliza un enfoque no riguroso basado en semiejes mayores y velocidades medias. Se debe reservar espacio de memoria para estos cuerpos antes de configurarlos; Para permitir la escalabilidad, se puede utilizar un comando malloc :

OrbitalEntity * orbital_entities = malloc ( tamaño de ( OrbitalEntity ) * ( 9 + N_ASTEROIDS ));       entidades_orbitales [ 0 ] = { 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 0,0 , 1.989e30 }; // una estrella similar al sol       entidades_orbitales [ 1 ] = { 57.909e9 , 0.0 , 0.0 , 0.0 , 47.36e3 , 0.0 , 0.33011e24 }; // un planeta similar a mercurio       entidades_orbitales [ 2 ] = { 108.209e9 , 0.0 , 0.0 , 0.0 , 35.02e3 , 0.0 , 4.8675e24 }; // un planeta similar a venus       entidades_orbitales [ 3 ] = { 149.596e9 , 0.0 , 0.0 , 0.0 , 29.78e3 , 0.0 , 5.9724e24 }; // un planeta similar a la tierra       entidades_orbitales [ 4 ] = { 227.923e9 , 0.0 , 0.0 , 0.0 , 24.07e3 , 0.0 , 0.64171e24 }; // un planeta similar a marte       entidades_orbitales [ 5 ] = { 778.570e9 , 0.0 , 0.0 , 0.0 , 13e3 , 0.0 , 1898.19e24 }; // un planeta similar a júpiter       entidades_orbitales [ 6 ] = { 1433.529e9 , 0.0 , 0.0 , 0.0 , 9.68e3 , 0.0 , 568.34e24 }; // un planeta similar a saturno       entidades_orbitales [ 7 ] = { 2872.463e9 , 0.0 , 0.0 , 0.0 , 6.80e3 , 0.0 , 86.813e24 }; // un planeta similar a urano       entidades_orbitales [ 8 ] = { 4495.060e9 , 0.0 , 0.0 , 0.0 , 5.43e3 , 0.0 , 102.413e24 }; // un planeta similar a neptuno       

donde N_ASTEROIDSes una variable que permanecerá en 0 temporalmente, pero permite la inclusión futura de un número significativo de asteroides, a discreción del usuario. Un paso crítico para la configuración de simulaciones es establecer los rangos de tiempo de la simulación, así como el paso de tiempo incremental que hará avanzar la simulación:

doble t_0 = 0 ;   doble t = t_0 ;   doble dt = 86400 ;   doble t_end = 86400 * 365 * 10 ; // aproximadamente una década en segundos        doble BIG_G = 6.67e-11 ; // constante gravitacional    

Las posiciones y velocidades establecidas anteriormente se interpretan como correctas para .

Lógicamente, el alcance de una simulación sería para el período en el que .

Propagación

Una simulación completa puede constar de cientos, miles, millones, miles de millones o, a veces, billones de pasos de tiempo. En el nivel elemental, cada paso de tiempo (para simulaciones con partículas que se mueven debido a fuerzas ejercidas sobre ellas) implica

Lo anterior se puede implementar de manera bastante simple con un bucle while que continúa mientras existe en el rango antes mencionado:

mientras ( t < t_end ) { para ( size_t m1_idx = 0 ; m1_idx < 9 + N_ASTEROIDS ; m1_idx ++ ) { Vector3 a_g = { 0 , 0 , 0 };                       for ( size_t m2_idx = 0 ; m2_idx < 9 + N_ASTEROIDS ; m2_idx ++ ) { if ( m2_idx != m1_idx ) { Vector3 r_vector ;                   r_vector . e [ 0 ] = entidades_orbitales [ m1_idx ]. e [ 0 ] - entidades_orbitales [ m2_idx ]. mi [ 0 ]; r_vector . e [ 1 ] = entidades_orbitales [ m1_idx ]. e [ 1 ] - entidades_orbitales [ m2_idx ]. mi [ 1 ]; r_vector . e [ 2 ] = entidades_orbitales [ m1_idx ]. e [ 2 ] - entidades_orbitales [ m2_idx ]. mi [ 2 ];               doble r_mag = sqrt ( r_vector . e [ 0 ] * r_vector . e [ 0 ] + r_vector . e [ 1 ] * r_vector . e [ 1 ] + r_vector . e [ 2 ] * r_vector . e [ 2 ]);               doble aceleración = -1,0 * BIG_G * ( entidades_orbitales [ m2_idx ]. e [ 6 ]) / pow ( r_mag , 2,0 );           Vector3 r_unit_vector = { r_vector . e [ 0 ] / r_mag , r_vector . e [ 1 ] / r_mag , r_vector . mi [ 2 ] / r_mag };              a_g . e [ 0 ] += aceleración * r_unit_vector . mi [ 0 ]; a_g . e [ 1 ] += aceleración * r_unit_vector . mi [ 1 ]; a_g . e [ 2 ] += aceleración * r_unit_vector . mi [ 2 ]; } }                 entidades_orbitales [ m1_idx ]. mi [ 3 ] += a_g . mi [ 0 ] * dt ; entidades_orbitales [ m1_idx ]. mi [ 4 ] += a_g . mi [ 1 ] * dt ; entidades_orbitales [ m1_idx ]. mi [ 5 ] += a_g . mi [ 2 ] * dt ; }                for ( size_t entidad_idx = 0 ; entidad_idx < 9 + N_ASTEROIDS ; entidad_idx ++ ) { entidades_orbitales [ entidad_idx ]. e [ 0 ] += entidades_orbitales [ idx_entidad ]. mi [ 3 ] * dt ; entidades_orbitales [ entidad_idx ]. e [ 1 ] += entidades_orbitales [ idx_entidad ]. mi [ 4 ] * dt ; entidades_orbitales [ entidad_idx ]. e [ 2 ] += entidades_orbitales [ idx_entidad ]. mi [ 5 ] * dt ; } t += dt ; }                               

Centrándonos en los cuatro planetas rocosos internos de la simulación, las trayectorias resultantes de la propagación anterior se muestran a continuación:

Ver también

Referencias

  1. ^ Trenti, Michele; Choza, Piet (2008). "Simulaciones de N cuerpos (gravitacionales)". Scholarpedia . 3 (5): 3930. Código bibliográfico : 2008SchpJ...3.3930T. doi : 10.4249/scholarpedia.3930 .
  2. ^ CMBaugh; E. Gaztañaga; G. Efstathiou (1995). "Una comparación de la evolución de los campos de densidad en la teoría de perturbaciones y simulaciones numéricas - II. Análisis de recuentos en celdas". Avisos mensuales de la Real Sociedad Astronómica . arXiv : astro-ph/9408057 . doi :10.1093/mnras/274.4.1049. eISSN  1365-2966.
  3. ^ Jenkins, Adrian (21 de abril de 2010). "Condiciones iniciales de la teoría de perturbaciones lagrangianas de segundo orden para resimulaciones". Avisos mensuales de la Real Sociedad Astronómica . 403 (4): 1859–1872. arXiv : 0910.0258 . doi :10.1111/j.1365-2966.2010.16259.x. eISSN  1365-2966. ISSN  0035-8711.
  4. ^ Holmberg, Erik (1941). "Sobre las tendencias de agrupamiento entre las nebulosas. II. Un estudio de encuentros entre modelos de laboratorio de sistemas estelares mediante un nuevo procedimiento de integración". La revista astrofísica . 94 (3): 385–395. Código bibliográfico : 1941ApJ....94..385H. doi : 10.1086/144344 .
  5. ^ Navarro, Julio F.; Frenk, Carlos S.; White, Simon DM (diciembre de 1997). "Un perfil de densidad universal a partir de agrupaciones jerárquicas". La revista astrofísica . 490 (2): 493–508. arXiv : astro-ph/9611107 . doi :10.1086/304888. eISSN  1538-4357. ISSN  0004-637X.
  6. ^ John H. Reif; Stephen R. Tate (1993). "La complejidad de la simulación de N-cuerpos". Autómatas, Lenguajes y Programación . Apuntes de conferencias sobre informática. págs. 162-176. CiteSeerX 10.1.1.38.6242 . 

Otras lecturas