#include <bits/stdc++.h>
using namespace std;
double f(double x)
{
return 2 * x * x * x + 3 * x - 1;
}
int main()
{
double x1, x2, x0, f1, f2, f0;
double E = 1e-8;
cout << "Enter the value of x0: ";
cin >> x1;
cout << "\nEnter the value of x1: ";
cin >> x2;
f1 = f(x1);
f2 = f(x2);
if (f1 * f2 > 0)
{
cout << "\nInvalid interval.\n";
return 0;
}
cout << "\nIteration\t x0\t\t x1\t\t x2\t\t f0\t\t f1\t\t f2\n";
for (int i = 1; ; i++)
{
x0 = (x1 + x2) / 2;
f0 = f(x0);
cout << fixed << setprecision(6);
cout << setw(3) << i << "\t" << x0 << "\t" << x1 << "\t" << x2
<< "\t" << f0 << "\t" << f1 << "\t" << f2 << endl;
if (fabs((x2 - x1) / x2) < E)
{
cout << "\nApproximate root = " << x0 << endl;
break;
}
if (f1 * f0 < 0)
x2 = x0, f2 = f0;
else
x1 = x0, f1 = f0;
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkKewogICAgcmV0dXJuIDIgKiB4ICogeCAqIHggKyAzICogeCAtIDE7Cn0KCmludCBtYWluKCkgCnsKICAgIGRvdWJsZSB4MSwgeDIsIHgwLCBmMSwgZjIsIGYwOwogICAgZG91YmxlIEUgPSAxZS04OwoKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MDogIjsKICAgIGNpbiA+PiB4MTsKICAgIGNvdXQgPDwgIlxuRW50ZXIgdGhlIHZhbHVlIG9mIHgxOiAiOwogICAgY2luID4+IHgyOwoKICAgIGYxID0gZih4MSk7CiAgICBmMiA9IGYoeDIpOwoKICAgIGlmIChmMSAqIGYyID4gMCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJcbkludmFsaWQgaW50ZXJ2YWwuXG4iOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGNvdXQgPDwgIlxuSXRlcmF0aW9uXHQgeDBcdFx0IHgxXHRcdCB4Mlx0XHQgZjBcdFx0IGYxXHRcdCBmMlxuIjsKCiAgICBmb3IgKGludCBpID0gMTsgOyBpKyspCiAgICB7CiAgICAgICAgeDAgPSAoeDEgKyB4MikgLyAyOwogICAgICAgIGYwID0gZih4MCk7CgogICAgICAgIGNvdXQgPDwgZml4ZWQgPDwgc2V0cHJlY2lzaW9uKDYpOwogICAgICAgIGNvdXQgPDwgc2V0dygzKSA8PCBpIDw8ICJcdCIgPDwgeDAgPDwgIlx0IiA8PCB4MSA8PCAiXHQiIDw8IHgyCiAgICAgICAgICAgICA8PCAiXHQiIDw8IGYwIDw8ICJcdCIgPDwgZjEgPDwgIlx0IiA8PCBmMiA8PCBlbmRsOwoKICAgICAgICBpZiAoZmFicygoeDIgLSB4MSkgLyB4MikgPCBFKQogICAgICAgIHsKICAgICAgICAgICAgY291dCA8PCAiXG5BcHByb3hpbWF0ZSByb290ID0gIiA8PCB4MCA8PCBlbmRsOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGlmIChmMSAqIGYwIDwgMCkKICAgICAgICAgICAgeDIgPSB4MCwgZjIgPSBmMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIHgxID0geDAsIGYxID0gZjA7CiAgICB9CgogICAgcmV0dXJuIDA7Cn0K