#include <bits/stdc++.h>
using namespace std;
double f(double co[], int n, double x)
{
double result = co[0];
for (int i = 1; i <= n; i++)
result = result * x + co[i];
return result;
}
double df(double co[], int n, double x)
{
double result = co[0] * (n);
for (int i = 1; i < n; i++)
result = result * x + co[i] * (n - i);
return result;
}
int main() {
int n;
double co[20];
double x0, x1, fx, dfx, E, error;
int iteration = 1, maxIter = 20;
cout << "ENTER THE TOTAL NO. OF POWER::: ";
cin >> n;
cout << endl;
for (int i = 0; i <= n; i++)
{
cout << "x^" << i << " :: ";
cin >> co[i];
}
cout << "\nEnter initial guess x0: ";
cin >> x0;
cout << "Enter tolerance (e.g. 0.0001): ";
cin >> E;
cout << "\n***********************************************";
cout << "\nIteration\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %Error";
cout << "\n***********************************************\n";
do
{
fx = f(co, n, x0);
dfx = df(co, n, x0);
if (dfx == 0)
{
cout << "Division by zero!.\n";
return 0;
}
x1 = x0 - fx / dfx;
error = fabs((x1 - x0) / x1);
cout << fixed << setprecision(6);
cout << setw(5) << iteration << "\t"
<< setw(10) << x1 << "\t"
<< setw(10) << fx << "\t"
<< setw(10) << dfx << "\t"
<< setw(10) << error << "\t"
<< setw(10) << error * 100 << endl;
if (error < E)
break;
x0 = x1;
iteration++;
} while (iteration <= maxIter);
cout << "\n***********************************************";
cout << "\nTHE ROOT OF EQUATION IS " << x1 << endl;
cout << "***********************************************\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgY29bXSwgaW50IG4sIGRvdWJsZSB4KQp7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspCiAgICAgICAgcmVzdWx0ID0gcmVzdWx0ICogeCArIGNvW2ldOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpIAp7CiAgICBkb3VibGUgcmVzdWx0ID0gY29bMF0gKiAobik7CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7CiAgICBpbnQgbjsgICAgICAgICAgICAgICAgICAgCiAgICBkb3VibGUgY29bMjBdOyAgICAgICAgCiAgICBkb3VibGUgeDAsIHgxLCBmeCwgZGZ4LCBFLCBlcnJvcjsKICAgIGludCBpdGVyYXRpb24gPSAxLCBtYXhJdGVyID0gMjA7CgogICAgY291dCA8PCAiRU5URVIgVEhFIFRPVEFMIE5PLiBPRiBQT1dFUjo6OiAiOwogICAgY2luID4+IG47CgogICAgY291dCA8PCBlbmRsOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPD0gbjsgaSsrKQogICAgewogICAgICAgIGNvdXQgPDwgInheIiA8PCBpIDw8ICIgOjogIjsKICAgICAgICBjaW4gPj4gY29baV07CiAgICB9CgogICAgY291dCA8PCAiXG5FbnRlciBpbml0aWFsIGd1ZXNzIHgwOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiRW50ZXIgdG9sZXJhbmNlIChlLmcuIDAuMDAwMSk6ICI7CiAgICBjaW4gPj4gRTsKCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuSXRlcmF0aW9uXHQgeFx0XHQgZih4KVx0XHQgZicoeClcdFx0IEVycm9yXHRcdCAlRXJyb3IiOwogICAgY291dCA8PCAiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKCiAgICBkbwogICAgewogICAgICAgIGZ4ID0gZihjbywgbiwgeDApOwogICAgICAgIGRmeCA9IGRmKGNvLCBuLCB4MCk7CgogICAgICAgIGlmIChkZnggPT0gMCkgCiAgICAgICAgewogICAgICAgICAgICBjb3V0IDw8ICJEaXZpc2lvbiBieSB6ZXJvIS5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KCiAgICAgICAgeDEgPSB4MCAtIGZ4IC8gZGZ4OwogICAgICAgIGVycm9yID0gZmFicygoeDEgLSB4MCkgLyB4MSk7CgogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dyg1KSA8PCBpdGVyYXRpb24gPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgeDEgPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgZnggPDwgIlx0IgogICAgICAgICAgICAgPDwgc2V0dygxMCkgPDwgZGZ4IDw8ICJcdCIKICAgICAgICAgICAgIDw8IHNldHcoMTApIDw8IGVycm9yIDw8ICJcdCIKICAgICAgICAgICAgIDw8IHNldHcoMTApIDw8IGVycm9yICogMTAwIDw8IGVuZGw7CgogICAgICAgIGlmIChlcnJvciA8IEUpCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICB4MCA9IHgxOwogICAgICAgIGl0ZXJhdGlvbisrOwoKICAgIH0gd2hpbGUgKGl0ZXJhdGlvbiA8PSBtYXhJdGVyKTsKCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuVEhFIFJPT1QgT0YgRVFVQVRJT04gSVMgIiA8PCB4MSA8PCBlbmRsOwogICAgY291dCA8PCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7CgogICAgcmV0dXJuIDA7Cn0K