2013-08-07 8 views
53

Ho scritto una simulazione dei pianeti esterni del sistema solare utilizzando Euler symplectic method e l'ho implementato a) utilizzando repa eb) utilizzando yarr.Prestazioni "Repa" per simulazione planetaria

yarr seems to perform about x30 quicker than repa.

Dato questo, non ho nemmeno provato a usare il parallelismo. C'è qualche ovvio problema di prestazioni nel mio codice repa? Il repository è github. Posso produrre una versione ridotta repa -solo se questo è utile, ma in questo caso non si otterrà il confronto delle prestazioni rispetto a yarr.

In alternativa, come è possibile eseguire il debug dei problemi di prestazioni in repa?

+0

Potresti anche pubblicare il modulo 'Iniziale', quindi compila? – leftaroundabout

+0

https://github.com/idontgetoutmuch/Leapfrog/blob/master/Initial.hs – idontgetoutmuch

risposta

2

La maggior parte dei metodi di integrazione numerica di Eulero soffre di un errore cumulativo di arrotondamento che causerà la "simulazione" della simulazione. Potresti voler indagare su metodi di integrazione numerica avanzati, come Runge-Kutta del 4 ° ordine o predittore-correttore.

Un altro luogo in cui le simulazioni dei problemi di n-body diventano appiccicose è quando due corpi si avvicinano molto, come una luna con un'orbita molto eccentrica sul suo pianeta. Se si utilizzano incrementi di tempo fissi per la simulazione, l'errore durante grandi cambiamenti di velocità angolare può portare a errori di divisione per zero oa divisione di valori molto piccoli che provocano l'esplosione della simulazione. L'utilizzo di un delta-variabile variabile che dipende dalla velocità angolare può essere utile.

Questi suggerimenti si basano sull'esecuzione di molte simulazioni come un progetto per un corso di laurea di primo livello che ho frequentato nel 1973, mentre testavo vari metodi di integrazione numerica. I metodi di correzione dei predittori e Runge-Kutta sono presenti sin dagli albori dell'informatica digitale e sono disponibili numerosi libri. Vedi, ad es., Ricette numeriche: L'arte dello studio scientifico di William H. Press, Brian P. Flannery, Saul A. Teukolsky e William T. Vetterling. (Cambridge University Press, 1989)

+0

Nota che i codici NR sono in realtà protetti da copyright, quindi non puoi * veramente * usarli in codici pubblici. –

+2

Grazie, ma questo non sembra rispondere alla mia domanda che riguarda le * prestazioni * della libreria * repa * per questo particolare problema. Come una parte RK4 soffre dello stesso problema dei metodi di Eulero espliciti e impliciti che è che l'energia non è conservata; Avrei potuto aggiungere un "addolcimento" per affrontare il problema dei pianeti che si avvicinavano troppo ma per le orbite approssimativamente circolari considerate nell'articolo questo non è necessario. – idontgetoutmuch

+0

Kyle, non sto dicendo che il codice in Ricette numeriche sia usato senza permesso. Molti esempi mostrati nel libro si basano su metodi di calcolo numerico non protetti da copyright, alcuni addirittura precedenti allo sviluppo di computer digitali. È un buon punto di partenza se non si è familiari con le varie tecniche. –