#include <iostream>
#include <cmath>
using namespace std;
// Define the function whose root is to be determined
double f(double x) {
return x * x * x + x * x - 1; // Example function
}
int main() {
double x0, x1, x2, f0, f1, f2;
int iteration = 1, maxIter = 20;
double E = 0.0001; // desired accuracy
// Input initial guesses
cout << "Enter the value of x0: ";
cin >> x0;
cout << "Enter the value of x1: ";
cin >> x1;
cout << "\nIteration\tx0\t\tx1\t\tx2\t\tf0\t\tf1\t\tf2\n";
cout << "-----------------------------------------------------------------------------\n";
do {
f0 = f(x0);
f1 = f(x1);
if (f1 - f0 == 0) {
cout << "Division by zero error!";
return 1;
}
x2 = (x0 * f1 - x1 * f0) / (f1 - f0);
f2 = f(x2);
cout << iteration << "\t\t"
<< x0 << "\t"
<< x1 << "\t"
<< x2 << "\t"
<< f0 << "\t"
<< f1 << "\t"
<< f2 << endl;
x0 = x1;
x1 = x2;
iteration++;
if (fabs(f2) < E)
break;
} while (iteration <= maxIter);
cout << "\nApproximate root = " << x2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBEZWZpbmUgdGhlIGZ1bmN0aW9uIHdob3NlIHJvb3QgaXMgdG8gYmUgZGV0ZXJtaW5lZApkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHggKiB4ICogeCArIHggKiB4IC0gMTsgIC8vIEV4YW1wbGUgZnVuY3Rpb24KfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDAsIHgxLCB4MiwgZjAsIGYxLCBmMjsKICAgIGludCBpdGVyYXRpb24gPSAxLCBtYXhJdGVyID0gMjA7CiAgICBkb3VibGUgRSA9IDAuMDAwMTsgLy8gZGVzaXJlZCBhY2N1cmFjeQoKICAgIC8vIElucHV0IGluaXRpYWwgZ3Vlc3NlcwogICAgY291dCA8PCAiRW50ZXIgdGhlIHZhbHVlIG9mIHgwOiAiOwogICAgY2luID4+IHgwOwogICAgY291dCA8PCAiRW50ZXIgdGhlIHZhbHVlIG9mIHgxOiAiOwogICAgY2luID4+IHgxOwoKICAgIGNvdXQgPDwgIlxuSXRlcmF0aW9uXHR4MFx0XHR4MVx0XHR4Mlx0XHRmMFx0XHRmMVx0XHRmMlxuIjsKICAgIGNvdXQgPDwgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoKICAgIGRvIHsKICAgICAgICBmMCA9IGYoeDApOwogICAgICAgIGYxID0gZih4MSk7CgogICAgICAgIGlmIChmMSAtIGYwID09IDApIHsKICAgICAgICAgICAgY291dCA8PCAiRGl2aXNpb24gYnkgemVybyBlcnJvciEiOwogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICB9CgogICAgICAgIHgyID0gKHgwICogZjEgLSB4MSAqIGYwKSAvIChmMSAtIGYwKTsKICAgICAgICBmMiA9IGYoeDIpOwoKICAgICAgICBjb3V0IDw8IGl0ZXJhdGlvbiA8PCAiXHRcdCIKICAgICAgICAgICAgIDw8IHgwIDw8ICJcdCIKICAgICAgICAgICAgIDw8IHgxIDw8ICJcdCIKICAgICAgICAgICAgIDw8IHgyIDw8ICJcdCIKICAgICAgICAgICAgIDw8IGYwIDw8ICJcdCIKICAgICAgICAgICAgIDw8IGYxIDw8ICJcdCIKICAgICAgICAgICAgIDw8IGYyIDw8IGVuZGw7CgogICAgICAgIHgwID0geDE7CiAgICAgICAgeDEgPSB4MjsKCiAgICAgICAgaXRlcmF0aW9uKys7CgogICAgICAgIGlmIChmYWJzKGYyKSA8IEUpCiAgICAgICAgICAgIGJyZWFrOwoKICAgIH0gd2hpbGUgKGl0ZXJhdGlvbiA8PSBtYXhJdGVyKTsKCiAgICBjb3V0IDw8ICJcbkFwcHJveGltYXRlIHJvb3QgPSAiIDw8IHgyIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K