//#include "pch.h"
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double df(double x, double y) //function for defining dy/dx
{
double a = (x * x) / (y - 1); //========Enter the Differential Equation to be solved========================================
return a;
}
int main()
{
char ch, ch1;
cout << "This is the Runge Kutta Method calculator." << endl;
cout << "Enter the differential equation to be solved in line 8 of the code" << endl;
cout << "have you entered the right equation? (Enter Y or N)" << endl;
cin >> ch;
ch1 = ch;
while (ch1 == 'y' || ch1 == 'Y') {
int n;
double h,x0, y0, x, y, k1, k2,k3, k4, z2, z3, z4;
cout.precision(5); //sets number of decimal places to be displayed.
cout.setf(ios::fixed); //displays floating point numbers in standard notation
cout << "\nEnter the initial values of x and y respectively:\n";
cin >> x0 >> y0;
cout << "\nFor what value of x do you want to find the value of y\n";
cin >> x;
cout << "\nEnter the step size h:\n";
cin >> h; //set size to 0.05 for percision
cout << "x0" << setw(16) << "y0" << setw(19) << "K1" << setw(16) << "k2" << setw(19) << "K3" << setw(16) << "k4" << setw(16)<< "y(0+1)\n";
cout << "---------------------------------------------------------------------------------------------------------\n";
while (fabs(x - x0) > 0.0000001)
{ //calculate next y
k1 = df(x0, y0);
z2 = y0 + (h / 2)*k1;
k2 = df(x0 + (h / 2), z2);
z3 = y0 + (h / 2)*k2;
k3 = df(x0 + (h / 2), z3);
z4 = y0 + h * k3;
k4 = df(x0 + h, z4);
y = y0 + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6;
cout << x0 << setw(16) << y0 << setw(16) << k1 << setw(16) << k2 << setw(16) << k3 << setw(16) << k4 << setw(19)<<y<< endl;
y0 = y; //pass this new y as y0 in the next iteration.
x0 = x0 + h; //calculate new x.
}
cout << x0 << setw(16) << y << endl;
cout << "----------------------------------------------------------------------" << endl;
cout << "y(" << x0 << ") = " << y << endl;
break;
}
goto EndLable;
EndLable:
cout << "----------------------------------------------------------------------" << endl;
cout << "Program will end so that you can enter the differential equation to be solved" << endl;
system("Pause");
return 0;
}
Ly8jaW5jbHVkZSAicGNoLmgiCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPGlvbWFuaXA+CiNpbmNsdWRlIDxjbWF0aD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZG91YmxlIGRmKGRvdWJsZSB4LCBkb3VibGUgeSkgICAgICAgICAgICAvL2Z1bmN0aW9uIGZvciBkZWZpbmluZyBkeS9keAp7Cglkb3VibGUgYSA9ICh4ICogeCkgLyAoeSAtIDEpOyAgICAgICAgICAgICAgICAvLz09PT09PT09RW50ZXIgdGhlIERpZmZlcmVudGlhbCBFcXVhdGlvbiB0byBiZSBzb2x2ZWQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CglyZXR1cm4gYTsKCn0KCmludCBtYWluKCkKewoJY2hhciBjaCwgY2gxOwoJY291dCA8PCAiVGhpcyBpcyB0aGUgUnVuZ2UgS3V0dGEgTWV0aG9kIGNhbGN1bGF0b3IuIiA8PCBlbmRsOwoJY291dCA8PCAiRW50ZXIgdGhlIGRpZmZlcmVudGlhbCBlcXVhdGlvbiB0byBiZSBzb2x2ZWQgaW4gbGluZSA4IG9mIHRoZSBjb2RlIiA8PCBlbmRsOwoJY291dCA8PCAiaGF2ZSB5b3UgZW50ZXJlZCB0aGUgcmlnaHQgZXF1YXRpb24/IChFbnRlciBZIG9yIE4pIiA8PCBlbmRsOwoJY2luID4+IGNoOwoJY2gxID0gY2g7Cgl3aGlsZSAoY2gxID09ICd5JyB8fCBjaDEgPT0gJ1knKSB7CgoKCQlpbnQgbjsKCQlkb3VibGUgaCx4MCwgeTAsIHgsIHksIGsxLCBrMixrMywgazQsIHoyLCB6MywgejQ7ICAgICAgICAgICAgCgkJY291dC5wcmVjaXNpb24oNSk7CQkJCQkJLy9zZXRzIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBiZSBkaXNwbGF5ZWQuCgkJY291dC5zZXRmKGlvczo6Zml4ZWQpOwkJCQkJLy9kaXNwbGF5cyBmbG9hdGluZyBwb2ludCBudW1iZXJzIGluIHN0YW5kYXJkIG5vdGF0aW9uCgkJY291dCA8PCAiXG5FbnRlciB0aGUgaW5pdGlhbCB2YWx1ZXMgb2YgeCBhbmQgeSByZXNwZWN0aXZlbHk6XG4iOyAgICAgICAgCgkJY2luID4+IHgwID4+IHkwOwoJCWNvdXQgPDwgIlxuRm9yIHdoYXQgdmFsdWUgb2YgeCBkbyB5b3Ugd2FudCB0byBmaW5kIHRoZSB2YWx1ZSBvZiB5XG4iOwoJCWNpbiA+PiB4OwoJCWNvdXQgPDwgIlxuRW50ZXIgdGhlIHN0ZXAgc2l6ZSBoOlxuIjsgICAgICAgICAgICAKCQljaW4gPj4gaDsJCQkJCQkJLy9zZXQgc2l6ZSB0byAwLjA1IGZvciBwZXJjaXNpb24KCQljb3V0IDw8ICJ4MCIgPDwgc2V0dygxNikgPDwgInkwIiA8PCBzZXR3KDE5KSA8PCAiSzEiIDw8IHNldHcoMTYpIDw8ICJrMiIgPDwgc2V0dygxOSkgPDwgIkszIiA8PCBzZXR3KDE2KSA8PCAiazQiIDw8IHNldHcoMTYpPDwgInkoMCsxKVxuIjsKCQljb3V0IDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiI7CgkJd2hpbGUgKGZhYnMoeCAtIHgwKSA+IDAuMDAwMDAwMSkKCQl7ICAgICAgICAgICAvL2NhbGN1bGF0ZSBuZXh0IHkgICAKCQkJazEgPSBkZih4MCwgeTApOwoJCQl6MiA9IHkwICsgKGggLyAyKSprMTsKCQkJazIgPSBkZih4MCArIChoIC8gMiksIHoyKTsKCQkJejMgPSB5MCArIChoIC8gMikqazI7CgkJCWszID0gZGYoeDAgKyAoaCAvIDIpLCB6Myk7CgkJCXo0ID0geTAgKyBoICogazM7CgkJCWs0ID0gZGYoeDAgKyBoLCB6NCk7CgkJCXkgPSB5MCArIGggKiAoazEgKyAyICogazIgKyAyICogazMgKyBrNCkgLyA2OwoKCQkJY291dCA8PCB4MCA8PCBzZXR3KDE2KSA8PCB5MCA8PCBzZXR3KDE2KSA8PCBrMSA8PCBzZXR3KDE2KSA8PCBrMiA8PCBzZXR3KDE2KSA8PCBrMyA8PCBzZXR3KDE2KSA8PCBrNCA8PCBzZXR3KDE5KTw8eTw8IGVuZGw7CgkJCXkwID0geTsgICAgICAgICAgICAgICAgICAgIC8vcGFzcyB0aGlzIG5ldyB5IGFzIHkwIGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KCQkJeDAgPSB4MCArIGg7ICAgICAgICAgICAgICAgIC8vY2FsY3VsYXRlIG5ldyB4LgoJCX0KCQljb3V0IDw8IHgwIDw8IHNldHcoMTYpIDw8IHkgPDwgZW5kbDsKCQljb3V0IDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwoJCWNvdXQgPDwgInkoIiA8PCB4MCA8PCAiKSA9ICIgPDwgeSA8PCBlbmRsOwoJCWJyZWFrOwoJfQoJZ290byBFbmRMYWJsZTsKRW5kTGFibGU6Cgljb3V0IDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiA8PCBlbmRsOwoJY291dCA8PCAiUHJvZ3JhbSB3aWxsIGVuZCBzbyB0aGF0IHlvdSBjYW4gZW50ZXIgdGhlIGRpZmZlcmVudGlhbCBlcXVhdGlvbiB0byBiZSBzb2x2ZWQiIDw8IGVuZGw7CgoJc3lzdGVtKCJQYXVzZSIpOwoJcmV0dXJuIDA7Cn0=