#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double x)
{
return x * x * x - 4;
}
int main()
{
double x0, x1, x2, f0, f1, f2;
// Define maximum iterations and tolerance here
int maxi = 10; // maximum number of iterations
double t = 0.0001; // tolerance for stopping criterion
cout << "Enter the value of x0: ";
cin >> x0;
cout << "Enter the value of x1: ";
cin >> x1;
f0 = f(x0);
f1 = f(x1);
if (f0 * f1 > 0) {
cout << "\nInvalid interval!.\n";
return 0;
}
cout << "\n-------------------------------------------------------------";
cout << "\nIteration\t x0\t\t x1\t\t x2\t\t f0\t\t f1\t\t f2";
cout << "\n-------------------------------------------------------------\n";
int i = 1;
while (i <= maxi) {
x2 = x0 - (f0 * (x1 - x0)) / (f1 - f0);
f2 = f(x2);
cout << fixed << setprecision(6);
cout << setw(3) << i << "\t"
<< x0 << "\t" << x1 << "\t" << x2 << "\t"
<< f0 << "\t" << f1 << "\t" << f2 << endl;
if (fabs(f2) < t) {
break;
}
if (f0 * f2 < 0) {
x1 = x2;
f1 = f2;
} else {
x0 = x2;
f0 = f2;
}
i++;
}
cout << "\nApproximate root = " << x2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4ICogeCAqIHggLSA0OyAKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgeDAsIHgxLCB4MiwgZjAsIGYxLCBmMjsKICAgIAogICAgLy8gRGVmaW5lIG1heGltdW0gaXRlcmF0aW9ucyBhbmQgdG9sZXJhbmNlIGhlcmUKICAgIGludCBtYXhpID0gMTA7ICAgICAgIC8vIG1heGltdW0gbnVtYmVyIG9mIGl0ZXJhdGlvbnMKICAgIGRvdWJsZSB0ID0gMC4wMDAxOyAgIC8vIHRvbGVyYW5jZSBmb3Igc3RvcHBpbmcgY3JpdGVyaW9uCgogICAgY291dCA8PCAiRW50ZXIgdGhlIHZhbHVlIG9mIHgwOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiRW50ZXIgdGhlIHZhbHVlIG9mIHgxOiAiOwogICAgY2luID4+IHgxOwoKICAgIGYwID0gZih4MCk7CiAgICBmMSA9IGYoeDEpOwoKICAgIGlmIChmMCAqIGYxID4gMCkgewogICAgICAgIGNvdXQgPDwgIlxuSW52YWxpZCBpbnRlcnZhbCEuXG4iOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGNvdXQgPDwgIlxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSI7CiAgICBjb3V0IDw8ICJcbkl0ZXJhdGlvblx0IHgwXHRcdCB4MVx0XHQgeDJcdFx0IGYwXHRcdCBmMVx0XHQgZjIiOwogICAgY291dCA8PCAiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoKICAgIGludCBpID0gMTsKICAgIHdoaWxlIChpIDw9IG1heGkpIHsKICAgICAgICB4MiA9IHgwIC0gKGYwICogKHgxIC0geDApKSAvIChmMSAtIGYwKTsKICAgICAgICBmMiA9IGYoeDIpOwoKICAgICAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKICAgICAgICBjb3V0IDw8IHNldHcoMykgPDwgaSA8PCAiXHQiCiAgICAgICAgICAgICA8PCB4MCA8PCAiXHQiIDw8IHgxIDw8ICJcdCIgPDwgeDIgPDwgIlx0IgogICAgICAgICAgICAgPDwgZjAgPDwgIlx0IiA8PCBmMSA8PCAiXHQiIDw8IGYyIDw8IGVuZGw7CgogICAgICAgIGlmIChmYWJzKGYyKSA8IHQpIHsgCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgaWYgKGYwICogZjIgPCAwKSB7CiAgICAgICAgICAgIHgxID0geDI7CiAgICAgICAgICAgIGYxID0gZjI7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeDAgPSB4MjsKICAgICAgICAgICAgZjAgPSBmMjsKICAgICAgICB9CgogICAgICAgIGkrKzsKICAgIH0KCiAgICBjb3V0IDw8ICJcbkFwcHJveGltYXRlIHJvb3QgPSAiIDw8IHgyIDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQo=