#include <iostream>
#include <cmath>
using namespace std;
double f(double x) {
return 2 * x * x * x + 3 * x - 1;
}
int main() {
double x1 = 0, x2 = 1, x0, f1, f2, f0;
double E = 1e-8;
int i = 0;
f1 = f(x1);
f2 = f(x2);
if (f1 * f2 > 0) {
cout << "No root in this interval.\n";
return 0;
}
cout << "Iter\t x1\t\t x2\t\t x0\t\t f(x0)\n";
while (fabs((x2 - x1) / x2) > E) {
i++;
x0 = (x1 + x2) / 2;
f0 = f(x0);
cout << i << "\t" << x1 << "\t" << x2 << "\t" << x0 << "\t" << f0 << endl;
if (f1 * f0 < 0)
x2 = x0;
else {
x1 = x0;
f1 = f0;
}
}
cout << "\nApproximate root = " << (x1 + x2) / 2 << endl;
cout << "Total iterations = " << i << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIDIgKiB4ICogeCAqIHggKyAzICogeCAtIDE7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIHgxID0gMCwgeDIgPSAxLCB4MCwgZjEsIGYyLCBmMDsKICAgIGRvdWJsZSBFID0gMWUtODsKICAgIGludCBpID0gMDsKCiAgICBmMSA9IGYoeDEpOwogICAgZjIgPSBmKHgyKTsKCiAgICBpZiAoZjEgKiBmMiA+IDApIHsKICAgICAgICBjb3V0IDw8ICJObyByb290IGluIHRoaXMgaW50ZXJ2YWwuXG4iOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIGNvdXQgPDwgIkl0ZXJcdCB4MVx0XHQgeDJcdFx0IHgwXHRcdCBmKHgwKVxuIjsKCiAgICB3aGlsZSAoZmFicygoeDIgLSB4MSkgLyB4MikgPiBFKSB7CiAgICAgICAgaSsrOwogICAgICAgIHgwID0gKHgxICsgeDIpIC8gMjsKICAgICAgICBmMCA9IGYoeDApOwoKICAgICAgICBjb3V0IDw8IGkgPDwgIlx0IiA8PCB4MSA8PCAiXHQiIDw8IHgyIDw8ICJcdCIgPDwgeDAgPDwgIlx0IiA8PCBmMCA8PCBlbmRsOwoKICAgICAgICBpZiAoZjEgKiBmMCA8IDApCiAgICAgICAgICAgIHgyID0geDA7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIHgxID0geDA7CiAgICAgICAgICAgIGYxID0gZjA7CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCA9ICIgPDwgKHgxICsgeDIpIC8gMiA8PCBlbmRsOwogICAgY291dCA8PCAiVG90YWwgaXRlcmF0aW9ucyA9ICIgPDwgaSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==