#include <bits/stdc++.h>
using namespace std;
double evaluate(double x) {
return x * x * x - 4.0;
}
int main() {
double prev, curr, next, f_prev, f_curr, f_next, tolerance = 0.0001, approxRoot;
int iteration = 0;
cout << "Enter two initial guesses: ";
cin >> prev >> curr;
f_prev = evaluate(prev);
f_curr = evaluate(curr);
cout << "f(x1) = " << f_prev << ", f(x2) = " << f_curr << endl;
next = (f_curr * prev - f_prev * curr) / (f_curr - f_prev);
cout << "Iter\tNext\t\tPrev\t\tCurr\t\tf(Next)\tf(Prev)\tf(Curr)\n";
cout << iteration << "\t" << fixed << setprecision(8)
<< next << "\t" << prev << "\t" << curr << "\t"
<< evaluate(next) << "\t" << f_prev << "\t" << f_curr << endl;
while (true) {
f_prev = evaluate(prev);
f_curr = evaluate(curr);
next = (f_curr * prev - f_prev * curr) / (f_curr - f_prev);
f_next = evaluate(next);
iteration++;
cout << iteration << "\t" << fixed << setprecision(8)
<< next << "\t" << prev << "\t" << curr << "\t"
<< f_next << "\t" << f_prev << "\t" << f_curr << endl;
if (fabs((next - curr) / next) < tolerance || iteration > 8)
break;
prev = curr;
curr = next;
approxRoot = next;
}
cout << fixed << setprecision(8);
cout << "Approximate root = " << approxRoot << endl;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKZG91YmxlIGV2YWx1YXRlKGRvdWJsZSB4KSB7CiAgICByZXR1cm4geCAqIHggKiB4IC0gNC4wOwp9CgppbnQgbWFpbigpIHsKICAgIGRvdWJsZSBwcmV2LCBjdXJyLCBuZXh0LCBmX3ByZXYsIGZfY3VyciwgZl9uZXh0LCB0b2xlcmFuY2UgPSAwLjAwMDEsIGFwcHJveFJvb3Q7CiAgICBpbnQgaXRlcmF0aW9uID0gMDsKCiAgICBjb3V0IDw8ICJFbnRlciB0d28gaW5pdGlhbCBndWVzc2VzOiAiOwogICAgY2luID4+IHByZXYgPj4gY3VycjsKCiAgICBmX3ByZXYgPSBldmFsdWF0ZShwcmV2KTsKICAgIGZfY3VyciA9IGV2YWx1YXRlKGN1cnIpOwoKICAgIGNvdXQgPDwgImYoeDEpID0gIiA8PCBmX3ByZXYgPDwgIiwgZih4MikgPSAiIDw8IGZfY3VyciA8PCBlbmRsOwoKICAgIAogICAgbmV4dCA9IChmX2N1cnIgKiBwcmV2IC0gZl9wcmV2ICogY3VycikgLyAoZl9jdXJyIC0gZl9wcmV2KTsKCiAgICBjb3V0IDw8ICJJdGVyXHROZXh0XHRcdFByZXZcdFx0Q3Vyclx0XHRmKE5leHQpXHRmKFByZXYpXHRmKEN1cnIpXG4iOwogICAgY291dCA8PCBpdGVyYXRpb24gPDwgIlx0IiA8PCBmaXhlZCA8PCBzZXRwcmVjaXNpb24oOCkKICAgICAgICAgPDwgbmV4dCA8PCAiXHQiIDw8IHByZXYgPDwgIlx0IiA8PCBjdXJyIDw8ICJcdCIKICAgICAgICAgPDwgZXZhbHVhdGUobmV4dCkgPDwgIlx0IiA8PCBmX3ByZXYgPDwgIlx0IiA8PCBmX2N1cnIgPDwgZW5kbDsKCiAgICB3aGlsZSAodHJ1ZSkgewogICAgICAgIGZfcHJldiA9IGV2YWx1YXRlKHByZXYpOwogICAgICAgIGZfY3VyciA9IGV2YWx1YXRlKGN1cnIpOwogICAgICAgIG5leHQgPSAoZl9jdXJyICogcHJldiAtIGZfcHJldiAqIGN1cnIpIC8gKGZfY3VyciAtIGZfcHJldik7CiAgICAgICAgZl9uZXh0ID0gZXZhbHVhdGUobmV4dCk7CgogICAgICAgIGl0ZXJhdGlvbisrOwogICAgICAgIGNvdXQgPDwgaXRlcmF0aW9uIDw8ICJcdCIgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDgpCiAgICAgICAgICAgICA8PCBuZXh0IDw8ICJcdCIgPDwgcHJldiA8PCAiXHQiIDw8IGN1cnIgPDwgIlx0IgogICAgICAgICAgICAgPDwgZl9uZXh0IDw8ICJcdCIgPDwgZl9wcmV2IDw8ICJcdCIgPDwgZl9jdXJyIDw8IGVuZGw7CgogICAgICAgIGlmIChmYWJzKChuZXh0IC0gY3VycikgLyBuZXh0KSA8IHRvbGVyYW5jZSB8fCBpdGVyYXRpb24gPiA4KQogICAgICAgICAgICBicmVhazsKCiAgICAgICAgcHJldiA9IGN1cnI7CiAgICAgICAgY3VyciA9IG5leHQ7CgogICAgICAgIGFwcHJveFJvb3QgPSBuZXh0OwogICAgfQoKICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDgpOwogICAgY291dCA8PCAiQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgYXBwcm94Um9vdCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==