Wersja RK4 dla grawitacji

0

Jak wyglądają wzory metody RK4 zastosowane do równań Newtona, gdzie wyliczamy nie tylko jedną wartość, lecz dwie: r - pozycja i v - prędkość?

Może jakiś zgrabny kod, bo szukałem długo, ale znajduję same jakieś takie rozpaczliwe wypociny, jak np. to:
http://www.dreamincode.net/forums/topic/355569-rk4-for-n-body-simulation/
jakoś nie ma mam siły tego czytać; przecież to powinno zajmować 5 linii kodu, a nie 600:
http://pl.wikipedia.org/wiki/Algorytm_Rungego-Kutty

0

Znalazłem coś, i jakoś tak to chyba powinno być:

RK4 w wersji z r i v, czyli dla równań II-rzędu.

r1 = r; v1 = v;
a1 = a(r1); // obliczamy siłę w punkcie r1, bo grawitacja zależy tylko od r, więc tak wystarczy

r2 = r + v1*dt/2; v2 = v + a1*dt/2;
a2 = a(r2);

r3 = r + v2*dt/2; v3 = v + a2*dt/2;
a3 = a(r3, v3, dt/2.0)

x4 = r + v3*dt; v4 = v + a3*dt
a4 = a(r4);

// i teraz mamy nowe wartości r i v:
r +=(dt/6.0)*(v1 + 2*v2 + 2*v3 + v4);
v += (dt/6.0)*(a1 + 2*a2 + 2*a3 + a4); 

mówiłem że to jest prostek jak rura w klozecie...

1 użytkowników online, w tym zalogowanych: 0, gości: 1