#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double x) {
return cos(x) - x;
}
int main() {
double x1, x2, x0, f1, f2, f0, E;
int iteration = 1;
cout << fixed << setprecision(6);
cout << "Enter the value of x1: ";
cin >> x1;
cout << "Enter the value of x2: ";
cin >> x2;
cout << "Enter the stopping criterion E: ";
cin >> E;
f1 = f(x1);
f2 = f(x2);
if (f1 * f2 > 0) {
cout << "The initial guesses do not bracket the root. Please choose different values." << endl;
return 1;
}
cout << "\nIteration\tx1\t\tx2\t\tx0\t\tf(x0)\t\tf(x1)\t\tf(x2)" << endl;
do {
x0 = x1 - (f1 * (x2 - x1)) / (f2 - f1);
f0 = f(x0);
cout << iteration << "\t\t" << x1 << "\t" << x2 << "\t" << x0 << "\t" << f0 << "\t" << f1 << "\t" << f2 << endl;
if (f0 == 0.0) {
cout << "\nExact root found: " << x0 << endl;
break;
}
if (f1 * f0 < 0) {
x2 = x0;
f2 = f0;
} else {
x1 = x0;
f1 = f0;
}
if (fabs((x2 - x1) / x2) < E) {
double root = (x1 + x2) / 2;
cout << "\nApproximate root found: " << root << endl;
break;
}
iteration++;
} while (true);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNtYXRoPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCgpkb3VibGUgZihkb3VibGUgeCkgewogICAgcmV0dXJuIGNvcyh4KSAtIHg7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIHgxLCB4MiwgeDAsIGYxLCBmMiwgZjAsIEU7CiAgICBpbnQgaXRlcmF0aW9uID0gMTsKCiAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig2KTsKCiAgICAKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MTogIjsKICAgIGNpbiA+PiB4MTsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSB2YWx1ZSBvZiB4MjogIjsKICAgIGNpbiA+PiB4MjsKICAgIGNvdXQgPDwgIkVudGVyIHRoZSBzdG9wcGluZyBjcml0ZXJpb24gRTogIjsKICAgIGNpbiA+PiBFOwoKICAgIGYxID0gZih4MSk7CiAgICBmMiA9IGYoeDIpOwoKICAgIAogICAgaWYgKGYxICogZjIgPiAwKSB7CiAgICAgICAgY291dCA8PCAiVGhlIGluaXRpYWwgZ3Vlc3NlcyBkbyBub3QgYnJhY2tldCB0aGUgcm9vdC4gUGxlYXNlIGNob29zZSBkaWZmZXJlbnQgdmFsdWVzLiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBjb3V0IDw8ICJcbkl0ZXJhdGlvblx0eDFcdFx0eDJcdFx0eDBcdFx0Zih4MClcdFx0Zih4MSlcdFx0Zih4MikiIDw8IGVuZGw7CgogICAgZG8gewogICAgICAgIAogICAgICAgIHgwID0geDEgLSAoZjEgKiAoeDIgLSB4MSkpIC8gKGYyIC0gZjEpOwogICAgICAgIGYwID0gZih4MCk7CgogICAgICAgCiAgICAgICAgY291dCA8PCBpdGVyYXRpb24gPDwgIlx0XHQiIDw8IHgxIDw8ICJcdCIgPDwgeDIgPDwgIlx0IiA8PCB4MCA8PCAiXHQiIDw8IGYwIDw8ICJcdCIgPDwgZjEgPDwgIlx0IiA8PCBmMiA8PCBlbmRsOwoKICAgICAgICAKICAgICAgICBpZiAoZjAgPT0gMC4wKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIlxuRXhhY3Qgcm9vdCBmb3VuZDogIiA8PCB4MCA8PCBlbmRsOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgCiAgICAgICAgaWYgKGYxICogZjAgPCAwKSB7CiAgICAgICAgICAgIHgyID0geDA7CiAgICAgICAgICAgIGYyID0gZjA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgeDEgPSB4MDsKICAgICAgICAgICAgZjEgPSBmMDsKICAgICAgICB9CgogICAgICAgIAogICAgICAgIGlmIChmYWJzKCh4MiAtIHgxKSAvIHgyKSA8IEUpIHsKICAgICAgICAgICAgZG91YmxlIHJvb3QgPSAoeDEgKyB4MikgLyAyOwogICAgICAgICAgICBjb3V0IDw8ICJcbkFwcHJveGltYXRlIHJvb3QgZm91bmQ6ICIgPDwgcm9vdCA8PCBlbmRsOwogICAgICAgICAgICBicmVhazsKICAgICAgICB9CgogICAgICAgIGl0ZXJhdGlvbisrOwogICAgfSB3aGlsZSAodHJ1ZSk7CgogICAgcmV0dXJuIDA7Cn0K