#include <iostream> //id= 240242103
#include <cmath>
#include <iomanip>
using namespace std;
double f(double x) {
return x*x*x - 4; // f(x) = x^3 - 4
}
int main() {
double x0 = 1, x1 = 3, x2, f0, f1, f2, Ea, prev_x2;
int iterations = 3;
cout << fixed << setprecision(6);
cout << "Iteration x0 x1 x2 f0 f1 f2 Ea(%)\n";
cout << "----------------------------------------------------------------------------\n";
for (int i = 1; i <= iterations; i++) {
f0 = f(x0);
f1 = f(x1);
// False Position formula
x2 = x0 - f0*(x1 - x0)/(f1 - f0);
f2 = f(x2);
if (i == 1)
Ea = 0;
else
Ea = fabs((x2 - prev_x2)/x2)*100;
cout << i << "\t" << x0 << "\t" << x1 << "\t" << x2
<< "\t" << f0 << "\t" << f1 << "\t" << f2 << "\t" << Ea << endl;
// Update interval according to algorithm
if (f0*f2 < 0)
x1 = x2;
else
x0 = x2;
prev_x2 = x2; // save x2 for next iteration
}
cout << "\nApproximate root after " << iterations << " iterations = " << x2 << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgICAgICAgICAgICAgICAgLy9pZD0gMjQwMjQyMTAzCiNpbmNsdWRlIDxjbWF0aD4KI2luY2x1ZGUgPGlvbWFuaXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIHgqeCp4IC0gNDsgLy8gZih4KSA9IHheMyAtIDQKfQoKaW50IG1haW4oKSB7CiAgICBkb3VibGUgeDAgPSAxLCB4MSA9IDMsIHgyLCBmMCwgZjEsIGYyLCBFYSwgcHJldl94MjsKICAgIGludCBpdGVyYXRpb25zID0gMzsKCiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKICAgIGNvdXQgPDwgIkl0ZXJhdGlvbiAgeDAgICAgICAgIHgxICAgICAgICB4MiAgICAgICAgZjAgICAgICAgIGYxICAgICAgICBmMiAgICAgICAgRWEoJSlcbiI7CiAgICBjb3V0IDw8ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4iOwoKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IGl0ZXJhdGlvbnM7IGkrKykgewogICAgICAgIGYwID0gZih4MCk7CiAgICAgICAgZjEgPSBmKHgxKTsKCiAgICAgICAgLy8gRmFsc2UgUG9zaXRpb24gZm9ybXVsYQogICAgICAgIHgyID0geDAgLSBmMCooeDEgLSB4MCkvKGYxIC0gZjApOwogICAgICAgIGYyID0gZih4Mik7CgogICAgICAgIGlmIChpID09IDEpCiAgICAgICAgICAgIEVhID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEVhID0gZmFicygoeDIgLSBwcmV2X3gyKS94MikqMTAwOwoKICAgICAgICBjb3V0IDw8IGkgPDwgIlx0IiA8PCB4MCA8PCAiXHQiIDw8IHgxIDw8ICJcdCIgPDwgeDIKICAgICAgICAgICAgIDw8ICJcdCIgPDwgZjAgPDwgIlx0IiA8PCBmMSA8PCAiXHQiIDw8IGYyIDw8ICJcdCIgPDwgRWEgPDwgZW5kbDsKCiAgICAgICAgLy8gVXBkYXRlIGludGVydmFsIGFjY29yZGluZyB0byBhbGdvcml0aG0KICAgICAgICBpZiAoZjAqZjIgPCAwKQogICAgICAgICAgICB4MSA9IHgyOwogICAgICAgIGVsc2UKICAgICAgICAgICAgeDAgPSB4MjsKCiAgICAgICAgcHJldl94MiA9IHgyOyAvLyBzYXZlIHgyIGZvciBuZXh0IGl0ZXJhdGlvbgogICAgfQoKICAgIGNvdXQgPDwgIlxuQXBwcm94aW1hdGUgcm9vdCBhZnRlciAiIDw8IGl0ZXJhdGlvbnMgPDwgIiBpdGVyYXRpb25zID0gIiA8PCB4MiA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K