#include <bits/stdc++.h>
using namespace std;
double functionVal(double x) {
return x * x * x - 4.0;
}
double derivativeVal(double x) {
return 3.0 * x * x;
}
int main() {
double current, next, f_val, f_deriv, tolerance = 0.0001, approxRoot;
int iteration = 0;
cout << "Enter initial guess: ";
cin >> current;
f_val = functionVal(current);
f_deriv = derivativeVal(current);
next = current - (f_val / f_deriv);
cout << "Iter\tCurrent\t\tf(x)\t\tf'(x)\t\tNext\n";
cout << iteration << "\t" << fixed << setprecision(8)
<< current << "\t" << f_val << "\t" << f_deriv << "\t" << next << endl;
while (true) {
f_val = functionVal(current);
f_deriv = derivativeVal(current);
if (f_deriv == 0) {
cout << "Derivative is zero. Cannot proceed." << endl;
return -1;
}
next = current - (f_val / f_deriv);
iteration++;
cout << iteration << "\t" << fixed << setprecision(8)
<< current << "\t" << f_val << "\t" << f_deriv << "\t" << next << endl;
if (fabs((next - current) / next) < tolerance || iteration > 8)
break;
approxRoot = next;
current = next;
}
cout << fixed << setprecision(8);
cout << "Approximate root = " << approxRoot << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKZG91YmxlIGZ1bmN0aW9uVmFsKGRvdWJsZSB4KSB7CiAgICByZXR1cm4geCAqIHggKiB4IC0gNC4wOwp9Cgpkb3VibGUgZGVyaXZhdGl2ZVZhbChkb3VibGUgeCkgewogICAgcmV0dXJuIDMuMCAqIHggKiB4Owp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBjdXJyZW50LCBuZXh0LCBmX3ZhbCwgZl9kZXJpdiwgdG9sZXJhbmNlID0gMC4wMDAxLCBhcHByb3hSb290OwogICAgaW50IGl0ZXJhdGlvbiA9IDA7CgogICAgY291dCA8PCAiRW50ZXIgaW5pdGlhbCBndWVzczogIjsKICAgIGNpbiA+PiBjdXJyZW50OwoKICAgCiAgICBmX3ZhbCA9IGZ1bmN0aW9uVmFsKGN1cnJlbnQpOwogICAgZl9kZXJpdiA9IGRlcml2YXRpdmVWYWwoY3VycmVudCk7CiAgICBuZXh0ID0gY3VycmVudCAtIChmX3ZhbCAvIGZfZGVyaXYpOwoKICAgIGNvdXQgPDwgIkl0ZXJcdEN1cnJlbnRcdFx0Zih4KVx0XHRmJyh4KVx0XHROZXh0XG4iOwogICAgY291dCA8PCBpdGVyYXRpb24gPDwgIlx0IiA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oOCkgCiAgICAgICAgIDw8IGN1cnJlbnQgPDwgIlx0IiA8PCBmX3ZhbCA8PCAiXHQiIDw8IGZfZGVyaXYgPDwgIlx0IiA8PCBuZXh0IDw8IGVuZGw7CgogICAgd2hpbGUgKHRydWUpIHsKICAgICAgICBmX3ZhbCA9IGZ1bmN0aW9uVmFsKGN1cnJlbnQpOwogICAgICAgIGZfZGVyaXYgPSBkZXJpdmF0aXZlVmFsKGN1cnJlbnQpOwoKICAgICAgICBpZiAoZl9kZXJpdiA9PSAwKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIkRlcml2YXRpdmUgaXMgemVyby4gQ2Fubm90IHByb2NlZWQuIiA8PCBlbmRsOwogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQoKICAgICAgICBuZXh0ID0gY3VycmVudCAtIChmX3ZhbCAvIGZfZGVyaXYpOwogICAgICAgIGl0ZXJhdGlvbisrOwoKICAgICAgICBjb3V0IDw8IGl0ZXJhdGlvbiA8PCAiXHQiIDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig4KSAKICAgICAgICAgICAgIDw8IGN1cnJlbnQgPDwgIlx0IiA8PCBmX3ZhbCA8PCAiXHQiIDw8IGZfZGVyaXYgPDwgIlx0IiA8PCBuZXh0IDw8IGVuZGw7CgogICAgICAgIGlmIChmYWJzKChuZXh0IC0gY3VycmVudCkgLyBuZXh0KSA8IHRvbGVyYW5jZSB8fCBpdGVyYXRpb24gPiA4KQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgYXBwcm94Um9vdCA9IG5leHQ7CiAgICAgICAgY3VycmVudCA9IG5leHQ7CiAgICB9CgogICAgY291dCA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oOCk7CiAgICBjb3V0IDw8ICJBcHByb3hpbWF0ZSByb290ID0gIiA8PCBhcHByb3hSb290IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=