#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
double f(double x) {
return 0.25 * x * x - 2.0;
}
int main() {
double a = 2.0;
double b = 4.0;
double eps = 1e-6; // dokładność
double c;
// Sprawdzenie warunku metody bisekcji
if (f(a) * f(b) >= 0) {
cout << "Brak miejsca zerowego w podanym przedziale." << endl;
return 1;
}
// Metoda bisekcji
while ((b - a) / 2.0 > eps) {
c = (a + b) / 2.0;
if (f(c) == 0.0) {
break; // znaleziono dokładne miejsce zerowe
} else if (f(a) * f(c) < 0) {
b = c;
} else {
a = c;
}
}
c = (a + b) / 2.0;
cout << "Miejsce zerowe funkcji: x = " << c << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpIHsKICAgIHJldHVybiAwLjI1ICogeCAqIHggLSAyLjA7Cn0KCmludCBtYWluKCkgewogICAgZG91YmxlIGEgPSAyLjA7CiAgICBkb3VibGUgYiA9IDQuMDsKICAgIGRvdWJsZSBlcHMgPSAxZS02OyAgIC8vIGRva8WCYWRub8WbxIcKICAgIGRvdWJsZSBjOwoKICAgIC8vIFNwcmF3ZHplbmllIHdhcnVua3UgbWV0b2R5IGJpc2VrY2ppCiAgICBpZiAoZihhKSAqIGYoYikgPj0gMCkgewogICAgICAgIGNvdXQgPDwgIkJyYWsgbWllanNjYSB6ZXJvd2VnbyB3IHBvZGFueW0gcHJ6ZWR6aWFsZS4iIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSAvIDIuMCA+IGVwcykgewogICAgICAgIGMgPSAoYSArIGIpIC8gMi4wOwoKICAgICAgICBpZiAoZihjKSA9PSAwLjApIHsKICAgICAgICAgICAgYnJlYWs7IC8vIHpuYWxlemlvbm8gZG9rxYJhZG5lIG1pZWpzY2UgemVyb3dlCiAgICAgICAgfSBlbHNlIGlmIChmKGEpICogZihjKSA8IDApIHsKICAgICAgICAgICAgYiA9IGM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYSA9IGM7CiAgICAgICAgfQogICAgfQoKICAgIGMgPSAoYSArIGIpIC8gMi4wOwogICAgY291dCA8PCAiTWllanNjZSB6ZXJvd2UgZnVua2NqaTogeCA9ICIgPDwgYyA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==