#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;
double c;
// Sprawdzenie warunku istnienia miejsca zerowego
if (f(a) * f(b) >= 0)
{
cout << "Brak zmiany znaku w przedziale!" << endl;
return 1;
}
// Metoda bisekcji
while ((b - a) > eps)
{
c = (a + b) / 2.0;
if (f(a) * f(c) < 0)
b = c;
else
a = c;
}
// Wynik
c = (a + b) / 2.0;
cout << "Miejsce zerowe: x = " << c << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiAwLjI1ICogeCAqIHggLSAyLjA7Cn0KCmludCBtYWluKCkKewogICAgZG91YmxlIGEgPSAyLjA7CiAgICBkb3VibGUgYiA9IDQuMDsKICAgIGRvdWJsZSBlcHMgPSAxZS02OwogICAgZG91YmxlIGM7CgogICAgLy8gU3ByYXdkemVuaWUgd2FydW5rdSBpc3RuaWVuaWEgbWllanNjYSB6ZXJvd2VnbwogICAgaWYgKGYoYSkgKiBmKGIpID49IDApCiAgICB7CiAgICAgICAgY291dCA8PCAiQnJhayB6bWlhbnkgem5ha3UgdyBwcnplZHppYWxlISIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAvLyBNZXRvZGEgYmlzZWtjamkKICAgIHdoaWxlICgoYiAtIGEpID4gZXBzKQogICAgewogICAgICAgIGMgPSAoYSArIGIpIC8gMi4wOwoKICAgICAgICBpZiAoZihhKSAqIGYoYykgPCAwKQogICAgICAgICAgICBiID0gYzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSBjOwogICAgfQoKICAgIC8vIFd5bmlrCiAgICBjID0gKGEgKyBiKSAvIDIuMDsKICAgIGNvdXQgPDwgIk1pZWpzY2UgemVyb3dlOiB4ID0gIiA8PCBjIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K