परिचय
रुंगे-कुट्टा विधि का उपयोग सामान्य अवकल समीकरणों (ODE) को हल करने के लिए किया जाता है। यह x और y के लिए dy/dx फंक्शन का उपयोग करता है, और y का प्रारंभिक मान भी चाहिए, यानी y(0)। यह दिए गए x के लिए y का सन्निकट मान ढूंढता है। ODE को हल करने के लिए, हमें इन सूत्रों का पालन करना होगा:

यहाँ h अंतराल की ऊंचाई है।
नोट: इन सूत्रों से, हम पहले दो k1 और k2 का उपयोग करके ODE के लिए रुंगे-कुट्टा दूसरी क्रम का समाधान ढूंढ सकते हैं।
इनपुट और आउटपुट
इनपुट: x0 और f(x0): 0 और 0, x का मान = 0.4, h का मान = 0.1 आउटपुट: अवकल समीकरण का उत्तर: 0.0213594
एल्गोरिदम
rungeKutta(x0, y0, x, h)
इनपुट: प्रारंभिक x और y मान, लक्षित x मान, और अंतराल की ऊंचाई h
आउटपुट: मान x के लिए y का मान
Begin
iteration := (x – x0)/h
y = y0
i := 1 से iteration तक, करें
k1 := h*f(x0, y)
k2 := h*f((x0 + h/2), (y + k1/2))
k3 := h*f((x0 + h/2), (y + k2/2))
k4 := h*f((x0 + h), (y + k3))
y := y + (1/6)*(k1 + 2k2 + 2k3 + k4)
x0 := x0 + h
done
y लौटाएं
End
उदाहरण (C++ कोड)
#include <iostream>
using namespace std;
double diffOfy(double x, double y) {
return ((x*x) + (y*y)); // फंक्शन x^2 + y^2
}
double rk4thOrder(double x0, double y0, double x, double h) {
int iteration = int((x - x0) / h); // पुनरावृत्तियों की संख्या की गणना करें
double k1, k2, k3, k4;
double y = y0; // प्रारंभ में y, f(x0) है
for (int i = 1; i <= iteration; i++) {
k1 = h * diffOfy(x0, y);
k2 = h * diffOfy((x0 + h/2), (y + k1/2));
k3 = h * diffOfy((x0 + h/2), (y + k2/2));
k4 = h * diffOfy((x0 + h), (y + k3));
y += double((1.0/6.0) * (k1 + 2*k2 + 2*k3 + k4)); // del y का उपयोग करके y अपडेट करें
x0 += h; // x0 को h से अपडेट करें
}
return y; // f(x) मान
}
int main() {
double x0, y0, x, h;
cout << "Enter x0 and f(x0): "; cin >> x0 >> y0;
cout << "Enter x: "; cin >> x;
cout << "Enter h: "; cin >> h;
cout << "Answer of differential equation: " << rk4thOrder(x0, y0, x, h);
}
आउटपुट
Enter x0 and f(x0): 0 0 Enter x: 0.4 Enter h: 0.1 Answer of differential equation: 0.0213594