#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], x0, x1, fx, dfx, E, err;
cout << "ENTER THE TOTAL NO. OF POWER: ";
cin >> n;
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 << "\nIter\t x\t\t f(x)\t\t f'(x)\t\t Error\t\t %Error";
cout << "\n***********************************************\n";
for (int i = 1; i <= 20; i++)
{
fx = f(co, n, x0);
dfx = df(co, n, x0);
if (dfx == 0) {
cout << "Division by zero! Stopping.\n";
return 0;
}
x1 = x0 - fx / dfx;
err = fabs((x1 - x0) / x1);
cout << fixed << setprecision(6);
cout << setw(5) << i << "\t" << setw(10) << x1 << "\t" << setw(10) << fx << "\t"<< setw(10) << dfx << "\t"
<< setw(10) << err<< "\t"
<< setw(10) << err* 100 << endl;
if (err< E) {
cout << "\n***********************************************";
cout << "\nTHE ROOT OF EQUATION IS " << x1 << endl;
cout << "***********************************************\n";
return 0;
}
x0 = x1;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKZG91YmxlIGYoZG91YmxlIGNvW10sIGludCBuLCBkb3VibGUgeCkgCnsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXTsKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV07CiAgICByZXR1cm4gcmVzdWx0Owp9CiAKZG91YmxlIGRmKGRvdWJsZSBjb1tdLCBpbnQgbiwgZG91YmxlIHgpCnsKICAgIGRvdWJsZSByZXN1bHQgPSBjb1swXSAqIG47CiAgICBmb3IgKGludCBpID0gMTsgaSA8IG47IGkrKykKICAgICAgICByZXN1bHQgPSByZXN1bHQgKiB4ICsgY29baV0gKiAobiAtIGkpOwogICAgcmV0dXJuIHJlc3VsdDsKfQogCmludCBtYWluKCkKewogICAgaW50IG47CiAgICBkb3VibGUgY29bMjBdLCB4MCwgeDEsIGZ4LCBkZngsIEUsIGVycjsKIAogICAgY291dCA8PCAiRU5URVIgVEhFIFRPVEFMIE5PLiBPRiBQT1dFUjogIjsKICAgIGNpbiA+PiBuOwogCiAgICBmb3IgKGludCBpID0gMDsgaSA8PSBuOyBpKyspCiAgICB7CiAgICAgICAgY291dCA8PCAieF4iIDw8IGkgPDwgIiA6ICI7CiAgICAgICAgY2luID4+IGNvW2ldOwogICAgfQogCiAgICBjb3V0IDw8ICJcbkVudGVyIGluaXRpYWwgZ3Vlc3MgeDA6ICI7CiAgICBjaW4gPj4geDA7CiAgICBjb3V0IDw8ICJFbnRlciB0b2xlcmFuY2UgKGUuZy4gMC4wMDAxKTogIjsKICAgIGNpbiA+PiBFOwogCiAgICBjb3V0IDw8ICJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIjsKICAgIGNvdXQgPDwgIlxuSXRlclx0IHhcdFx0IGYoeClcdFx0IGYnKHgpXHRcdCBFcnJvclx0XHQgJUVycm9yIjsKICAgIGNvdXQgPDwgIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7CiAKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IDIwOyBpKyspCiAgICB7CiAgICAgICAgZnggPSBmKGNvLCBuLCB4MCk7CiAgICAgICAgZGZ4ID0gZGYoY28sIG4sIHgwKTsKIAogICAgICAgIGlmIChkZnggPT0gMCkgewogICAgICAgICAgICBjb3V0IDw8ICJEaXZpc2lvbiBieSB6ZXJvISBTdG9wcGluZy5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KIAogICAgICAgIHgxID0geDAgLSBmeCAvIGRmeDsKICAgICAgICBlcnIgPSBmYWJzKCh4MSAtIHgwKSAvIHgxKTsKIAogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dyg1KSA8PCBpIDw8ICJcdCIgICAgICAgPDwgc2V0dygxMCkgPDwgeDEgPDwgIlx0IiAgPDwgc2V0dygxMCkgPDwgZnggPDwgIlx0Ijw8IHNldHcoMTApIDw8IGRmeCA8PCAiXHQiCiAgICAgICAgICAgICA8PCBzZXR3KDEwKSA8PCBlcnI8PCAiXHQiCiAgICAgICAgICAgICA8PCBzZXR3KDEwKSA8PCBlcnIqIDEwMCA8PCBlbmRsOwogICAgICAgIGlmIChlcnI8IEUpIHsKICAgICAgICAgICAgY291dCA8PCAiXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiI7CiAgICAgICAgICAgIGNvdXQgPDwgIlxuVEhFIFJPT1QgT0YgRVFVQVRJT04gSVMgIiA8PCB4MSA8PCBlbmRsOwogICAgICAgICAgICBjb3V0IDw8ICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgICAgIHgwID0geDE7CiAgICB9CiAKICAgIHJldHVybiAwOwp9