#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
double f(double x) {
return pow(x, 3) - x - 3;
}
double f_prime(double x) {
return 3 * pow(x, 2) - 1;
}
int main() {
double x0 = 3.0;
double x1;
double tolerance = 1e-6;
int max_iterations = 100;
int iteration = 1;
cout << fixed << setprecision(6);
cout << "**************************************" << endl;
cout << "ITERATION\tX\t\tf(X)\t\tf'(X)" << endl;
cout << "**************************************" << endl;
while (iteration <= max_iterations) {
double fx = f(x0);
double fpx = f_prime(x0);
if (fpx == 0.0) {
cout << "Derivative is zero. No solution found." << endl;
return -1;
}
x1 = x0 - fx / fpx;
cout << iteration << "\t\t" << x0 << "\t" << fx << "\t" << fpx << endl;
if (fabs((x1 - x0) / x1) < tolerance) {
cout << "**************************************" << endl;
cout << "THE ROOT OF EQUATION IS " << x1 << endl;
break;
}
x0 = x1;
iteration++;
}
if (iteration > max_iterations) {
cout << "Did not converge to a solution within the maximum number of iterations." << endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxpb21hbmlwPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHBvdyh4LCAzKSAtIHggLSAzOwp9CgoKZG91YmxlIGZfcHJpbWUoZG91YmxlIHgpIHsKICAgIHJldHVybiAzICogcG93KHgsIDIpIC0gMTsKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDAgPSAzLjA7IAogICAgZG91YmxlIHgxOwogICAgZG91YmxlIHRvbGVyYW5jZSA9IDFlLTY7CiAgICBpbnQgbWF4X2l0ZXJhdGlvbnMgPSAxMDA7CiAgICBpbnQgaXRlcmF0aW9uID0gMTsKCiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKICAgIGNvdXQgPDwgIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIiA8PCBlbmRsOwogICAgY291dCA8PCAiSVRFUkFUSU9OXHRYXHRcdGYoWClcdFx0ZicoWCkiIDw8IGVuZGw7CiAgICBjb3V0IDw8ICIqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIgPDwgZW5kbDsKCiAgICB3aGlsZSAoaXRlcmF0aW9uIDw9IG1heF9pdGVyYXRpb25zKSB7CiAgICAgICAgZG91YmxlIGZ4ID0gZih4MCk7CiAgICAgICAgZG91YmxlIGZweCA9IGZfcHJpbWUoeDApOwoKICAgICAgICBpZiAoZnB4ID09IDAuMCkgewogICAgICAgICAgICBjb3V0IDw8ICJEZXJpdmF0aXZlIGlzIHplcm8uIE5vIHNvbHV0aW9uIGZvdW5kLiIgPDwgZW5kbDsKICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgIH0KCiAgICAgICAgeDEgPSB4MCAtIGZ4IC8gZnB4OwoKICAgICAgICBjb3V0IDw8IGl0ZXJhdGlvbiA8PCAiXHRcdCIgPDwgeDAgPDwgIlx0IiA8PCBmeCA8PCAiXHQiIDw8IGZweCA8PCBlbmRsOwoKICAgICAgICBpZiAoZmFicygoeDEgLSB4MCkgLyB4MSkgPCB0b2xlcmFuY2UpIHsKICAgICAgICAgICAgY291dCA8PCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioiIDw8IGVuZGw7CiAgICAgICAgICAgIGNvdXQgPDwgIlRIRSBST09UIE9GIEVRVUFUSU9OIElTICIgPDwgeDEgPDwgZW5kbDsKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQoKICAgICAgICB4MCA9IHgxOwogICAgICAgIGl0ZXJhdGlvbisrOwogICAgfQoKICAgIGlmIChpdGVyYXRpb24gPiBtYXhfaXRlcmF0aW9ucykgewogICAgICAgIGNvdXQgPDwgIkRpZCBub3QgY29udmVyZ2UgdG8gYSBzb2x1dGlvbiB3aXRoaW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMuIiA8PCBlbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9