मैं रनवे-कुट्टा 4 के क्रम से यूलर विधि को कैसे बदल सकता हूं ताकि निरंतर गुरुत्वाकर्षण परिमाण में मुक्त गिरावट गति का निर्धारण किया जा सके (उदाहरण के लिए जमीन से 10 000 किमी ऊपर से गिरना)।
अब तक मैंने यूलर विधि द्वारा सरल एकीकरण लिखा है:
while()
{
v += getMagnitude(x) * dt;
x += v * dt;
time += dt;
}
x चर का अर्थ है वर्तमान स्थिति, v का अर्थ है वेग, getMagnitude (x) x स्थिति पर त्वरण लौटाता है।
मैंने आरके 4 को लागू करने की कोशिश की:
while()
{
v += rk4(x, dt) * dt; // rk4() instead of getMagintude()
x += v * dt;
time += dt;
}
जहाँ rk4 () फ़ंक्शन बॉडी है:
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;
}
लेकिन कुछ गलत है, क्योंकि मैं केवल एक बार आरके 4 (त्वरण) का उपयोग करके एकीकृत कर रहा हूं। RK4 का उपयोग करते हुए वेग को एकीकृत करना समझ में नहीं आता क्योंकि यह v * dt के समान है।
क्या आप मुझे बता सकते हैं कि रनगे-कुट्टा एकीकरण का उपयोग करके दूसरे क्रम के अंतर समीकरणों को कैसे हल किया जाए? क्या मुझे k1, l1, k2, l2 ... l4 गुणांक की गणना करके RK4 को लागू करना चाहिए? मैं उसे कैसे कर सकता हूँ?