Bagaimana saya bisa mengganti metode Euler dengan urutan Runge-Kutta ke-4 untuk menentukan gerakan jatuh bebas dalam besaran gravitasi tidak konstan (mis. Jatuh bebas dari 10.000 km di atas tanah)?
Sejauh ini saya menulis integrasi sederhana dengan metode Euler:
while()
{
v += getMagnitude(x) * dt;
x += v * dt;
time += dt;
}
x variabel berarti posisi saat ini, v berarti kecepatan, getMagnitude (x) mengembalikan akselerasi pada posisi x.
Saya mencoba menerapkan RK4:
while()
{
v += rk4(x, dt) * dt; // rk4() instead of getMagintude()
x += v * dt;
time += dt;
}
di mana fungsi rk4 () adalah:
inline double rk4(double tx, double tdt)
{
double k1 = getMagnitude(tx);
double k2 = getMagnitude(tx + 0.5 * tdt * k1);
double k3 = getMagnitude(tx + 0.5 * tdt * k2);
double k4 = getMagnitude(tx + tdt * k3);
return (k1 + 2*k2 + 2*k3 + k4)/6.0;
}
Tapi ada yang salah, karena saya hanya mengintegrasikan sekali menggunakan RK4 (akselerasi). Mengintegrasikan kecepatan menggunakan RK4 tidak masuk akal karena sama dengan v * dt.
Bisakah Anda memberi tahu saya cara menyelesaikan persamaan diferensial orde kedua menggunakan integrasi Runge-Kutta? Haruskah saya menerapkan RK4 dengan menghitung k1, l1, k2, l2 ... l4 koefisien? Bagaimana saya bisa melakukan itu?