//#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 Improved Eullers 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 x0, y0, x, y, h, K1, K2, Z;
cout.precision(4); //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;
cout << "x" << setw(16) << "y" << setw(19) << "K1" << setw(16) << "Z" << setw(19) << "K2" << setw(16) << "y(i+1)\n";
cout << "---------------------------------------------------------------------------------------------------------\n";
while (fabs(x - x0) > 0.000001)
{
//y = y0 + (h*df(x0, y0)); //calculate next y
K1 = df(x0, y0);
Z = y0 + (h*df(x0, y0));
K2 = df(x0 + h, Z);
y = y0 + ((K1 + K2) / 2)*h;
cout << x0 << setw(16) << y0 << setw(16) << K1 << setw(16) << Z << setw(16) << K2 << setw(16) << 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+CiNpbmNsdWRlIDxjbWF0aD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKZG91YmxlIGRmKGRvdWJsZSB4LCBkb3VibGUgeSkgICAgICAgICAgICAvL2Z1bmN0aW9uIGZvciBkZWZpbmluZyBkeS9keAp7Cglkb3VibGUgYSA9ICh4ICogeCkgLyAoeSAtIDEpOyAgICAgICAgICAgICAgICAvL0VudGVyIHRoZSBEaWZmZXJlbnRpYWwgRXF1YXRpb24gdG8gYmUgc29sdmVkCglyZXR1cm4gYTsKCn0KCmludCBtYWluKCkKewoJY2hhciBjaCwgY2gxOwoJY291dCA8PCAiVGhpcyBpcyB0aGUgSW1wcm92ZWQgRXVsbGVycyBNZXRob2QgY2FsY3VsYXRvci4iIDw8IGVuZGw7Cgljb3V0IDw8ICJFbnRlciB0aGUgZGlmZmVyZW50aWFsIGVxdWF0aW9uIHRvIGJlIHNvbHZlZCBpbiBsaW5lIDggb2YgdGhlIGNvZGUiIDw8IGVuZGw7Cgljb3V0IDw8ICJoYXZlIHlvdSBlbnRlcmVkIHRoZSByaWdodCBlcXVhdGlvbj8gKEVudGVyIFkgb3IgTikiIDw8IGVuZGw7CgljaW4gPj4gY2g7CgljaDEgPSBjaDsKCXdoaWxlIChjaDEgPT0gJ3knIHx8IGNoMSA9PSAnWScpIHsKCgoJCWludCBuOwoJCWRvdWJsZSB4MCwgeTAsIHgsIHksIGgsIEsxLCBLMiwgWjsgICAgICAgICAgICAKCQljb3V0LnByZWNpc2lvbig0KTsJCQkJCQkJLy9zZXRzIG51bWJlciBvZiBkZWNpbWFsIHBsYWNlcyB0byBiZSBkaXNwbGF5ZWQuCgkJY291dC5zZXRmKGlvczo6Zml4ZWQpOwkJCQkJCS8vZGlzcGxheXMgZmxvYXRpbmcgcG9pbnQgbnVtYmVycyBpbiBzdGFuZGFyZCBub3RhdGlvbgoJCWNvdXQgPDwgIlxuRW50ZXIgdGhlIGluaXRpYWwgdmFsdWVzIG9mIHggYW5kIHkgcmVzcGVjdGl2ZWx5OlxuIjsgICAgICAgIAoJCWNpbiA+PiB4MCA+PiB5MDsKCQljb3V0IDw8ICJcbkZvciB3aGF0IHZhbHVlIG9mIHggZG8geW91IHdhbnQgdG8gZmluZCB0aGUgdmFsdWUgb2YgeVxuIjsKCQljaW4gPj4geDsKCQljb3V0IDw8ICJcbkVudGVyIHRoZSBzdGVwIHNpemUgaDpcbiI7ICAgICAgICAgICAKCQljaW4gPj4gaDsKCQljb3V0IDw8ICJ4IiA8PCBzZXR3KDE2KSA8PCAieSIgPDwgc2V0dygxOSkgPDwgIksxIiA8PCBzZXR3KDE2KSA8PCAiWiIgPDwgc2V0dygxOSkgPDwgIksyIiA8PCBzZXR3KDE2KSA8PCAieShpKzEpXG4iOwoJCWNvdXQgPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKCQl3aGlsZSAoZmFicyh4IC0geDApID4gMC4wMDAwMDEpCgkJewoJCQkvL3kgPSB5MCArIChoKmRmKHgwLCB5MCkpOyAgICAgICAgICAgIC8vY2FsY3VsYXRlIG5leHQgeSAgIAoJCQlLMSA9IGRmKHgwLCB5MCk7CgkJCVogPSB5MCArIChoKmRmKHgwLCB5MCkpOwoJCQlLMiA9IGRmKHgwICsgaCwgWik7CgkJCXkgPSB5MCArICgoSzEgKyBLMikgLyAyKSpoOwoJCQljb3V0IDw8IHgwIDw8IHNldHcoMTYpIDw8IHkwIDw8IHNldHcoMTYpIDw8IEsxIDw8IHNldHcoMTYpIDw8IFogPDwgc2V0dygxNikgPDwgSzIgPDwgc2V0dygxNikgPDwgeSA8PCBlbmRsOwoJCQl5MCA9IHk7ICAgICAgICAgICAgICAgICAgICAvL3Bhc3MgdGhpcyBuZXcgeSBhcyB5MCBpbiB0aGUgbmV4dCBpdGVyYXRpb24uCgkJCXgwID0geDAgKyBoOyAgICAgICAgICAgICAgICAvL2NhbGN1bGF0ZSBuZXcgeC4KCQl9CgkJY291dCA8PCB4MCA8PCBzZXR3KDE2KSA8PCB5IDw8IGVuZGw7CgkJY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKCQljb3V0IDw8ICJ5KCIgPDwgeDAgPDwgIikgPSAiIDw8IHkgPDwgZW5kbDsKCQlicmVhazsKCX0KCWdvdG8gRW5kTGFibGU7CkVuZExhYmxlOgoJY291dCA8PCAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgPDwgZW5kbDsKCWNvdXQgPDwgIlByb2dyYW0gd2lsbCBlbmQgc28gdGhhdCB5b3UgY2FuIGVudGVyIHRoZSBkaWZmZXJlbnRpYWwgZXF1YXRpb24gdG8gYmUgc29sdmVkIiA8PCBlbmRsOwoKCXN5c3RlbSgiUGF1c2UiKTsKCXJldHVybiAwOwp9