#include <bits/stdc++.h>
using namespace std;
double f(double x) {
return 2 * x * x * x + 3 * x - 1;
}
double df(double x) {
return 6 * x * x + 3;
}
int main() {
double x0, x1, E = 1e-8;
int i = 0;
cout << "Enter initial guess: ";
cin >> x0;
cout << "Iter\t x0\t\t f(x0)\t\t f'(x0)\t\t x1\n";
do {
double f0 = f(x0);
double df0 = df(x0);
if (df0 == 0) {
cout << "Derivative is zero. Cannot continue.\n";
return 0;
}
x1 = x0 - f0 / df0;
cout << ++i << "\t" << x0 << "\t" << f0 << "\t" << df0 << "\t" << x1 << "\n";
if (fabs(x1 - x0) < E)
break;
x0 = x1;
} while (true);
cout << "\nApproximate root = " << x1 << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIDIgKiB4ICogeCAqIHggKyAzICogeCAtIDE7Cn0KCmRvdWJsZSBkZihkb3VibGUgeCkgewogICAgcmV0dXJuIDYgKiB4ICogeCArIDM7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIHgwLCB4MSwgRSA9IDFlLTg7CiAgICBpbnQgaSA9IDA7CiAgICBjb3V0IDw8ICJFbnRlciBpbml0aWFsIGd1ZXNzOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiSXRlclx0IHgwXHRcdCBmKHgwKVx0XHQgZicoeDApXHRcdCB4MVxuIjsKICAgIGRvIHsKICAgICAgICBkb3VibGUgZjAgPSBmKHgwKTsKICAgICAgICBkb3VibGUgZGYwID0gZGYoeDApOwogICAgICAgIGlmIChkZjAgPT0gMCkgewogICAgICAgICAgICBjb3V0IDw8ICJEZXJpdmF0aXZlIGlzIHplcm8uIENhbm5vdCBjb250aW51ZS5cbiI7CiAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgIH0KICAgICAgICB4MSA9IHgwIC0gZjAgLyBkZjA7CiAgICAgICAgY291dCA8PCArK2kgPDwgIlx0IiA8PCB4MCA8PCAiXHQiIDw8IGYwIDw8ICJcdCIgPDwgZGYwIDw8ICJcdCIgPDwgeDEgPDwgIlxuIjsKICAgICAgICBpZiAoZmFicyh4MSAtIHgwKSA8IEUpCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIHgwID0geDE7CiAgICB9IHdoaWxlICh0cnVlKTsKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgeDEgPDwgZW5kbDsKICAgIHJldHVybiAwOwp9Cg==