#include <iostream>
#include <cmath>
// Funkcja: f(x) = x^2 - 2
double f(double x)
{
return x * x - 2;
}
int main()
{
double a = 1.0; // początek przedziału
double b = 2.0; // koniec przedziału
double c;
const double epsilon = 1e-6;
// Metoda bisekcji
while (true)
{
c = (a + b) / 2.0;
if (std::fabs(f(c)) < epsilon)
break;
if (f(a) * f(c) < 0)
b = c;
else
a = c;
}
std::cout << "Miejsce zerowe: x = " << c << std::endl;
std::cout << "f(x) = " << f(c) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+CgovLyBGdW5rY2phOiBmKHgpID0geF4yIC0gMgpkb3VibGUgZihkb3VibGUgeCkKewogICAgcmV0dXJuIHggKiB4IC0gMjsKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYSA9IDEuMDsgICAgICAvLyBwb2N6xIV0ZWsgcHJ6ZWR6aWHFgnUKICAgIGRvdWJsZSBiID0gMi4wOyAgICAgIC8vIGtvbmllYyBwcnplZHppYcWCdQogICAgZG91YmxlIGM7CiAgICBjb25zdCBkb3VibGUgZXBzaWxvbiA9IDFlLTY7CgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAodHJ1ZSkKICAgIHsKICAgICAgICBjID0gKGEgKyBiKSAvIDIuMDsKCiAgICAgICAgaWYgKHN0ZDo6ZmFicyhmKGMpKSA8IGVwc2lsb24pCiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBpZiAoZihhKSAqIGYoYykgPCAwKQogICAgICAgICAgICBiID0gYzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSBjOwogICAgfQoKICAgIHN0ZDo6Y291dCA8PCAiTWllanNjZSB6ZXJvd2U6IHggPSAiIDw8IGMgPDwgc3RkOjplbmRsOwogICAgc3RkOjpjb3V0IDw8ICJmKHgpID0gIiA8PCBmKGMpIDw8IHN0ZDo6ZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=