#include <iostream>
using namespace std;
// Funkcja, dla której szukamy miejsca zerowego
double f(double x)
{
return x * x * x - x - 2; // f(x) = x^3 - x - 2
}
int main()
{
double a, b, eps, srodek;
cout << "Podaj a: ";
cin >> a;
cout << "Podaj b: ";
cin >> b;
cout << "Podaj dokladnosc eps: ";
cin >> eps;
// Sprawdzenie warunku zmiany znaku
if (f(a) * f(b) >= 0)
{
cout << "Brak miejsca zerowego w tym przedziale." << endl;
return 0;
}
// Metoda bisekcji
while ((b - a) > eps)
{
srodek = (a + b) / 2;
if (f(srodek) == 0)
break;
else if (f(a) * f(srodek) < 0)
b = srodek;
else
a = srodek;
}
srodek = (a + b) / 2;
cout << "Przyblizone miejsce zerowe: " << srodek << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIEZ1bmtjamEsIGRsYSBrdMOzcmVqIHN6dWthbXkgbWllanNjYSB6ZXJvd2Vnbwpkb3VibGUgZihkb3VibGUgeCkKewogICAgcmV0dXJuIHggKiB4ICogeCAtIHggLSAyOyAvLyBmKHgpID0geF4zIC0geCAtIDIKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYSwgYiwgZXBzLCBzcm9kZWs7CgogICAgY291dCA8PCAiUG9kYWogYTogIjsKICAgIGNpbiA+PiBhOwoKICAgIGNvdXQgPDwgIlBvZGFqIGI6ICI7CiAgICBjaW4gPj4gYjsKCiAgICBjb3V0IDw8ICJQb2RhaiBkb2tsYWRub3NjIGVwczogIjsKICAgIGNpbiA+PiBlcHM7CgogICAgLy8gU3ByYXdkemVuaWUgd2FydW5rdSB6bWlhbnkgem5ha3UKICAgIGlmIChmKGEpICogZihiKSA+PSAwKQogICAgewogICAgICAgIGNvdXQgPDwgIkJyYWsgbWllanNjYSB6ZXJvd2VnbyB3IHR5bSBwcnplZHppYWxlLiIgPDwgZW5kbDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KCiAgICAvLyBNZXRvZGEgYmlzZWtjamkKICAgIHdoaWxlICgoYiAtIGEpID4gZXBzKQogICAgewogICAgICAgIHNyb2RlayA9IChhICsgYikgLyAyOwoKICAgICAgICBpZiAoZihzcm9kZWspID09IDApCiAgICAgICAgICAgIGJyZWFrOwogICAgICAgIGVsc2UgaWYgKGYoYSkgKiBmKHNyb2RlaykgPCAwKQogICAgICAgICAgICBiID0gc3JvZGVrOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYSA9IHNyb2RlazsKICAgIH0KCiAgICBzcm9kZWsgPSAoYSArIGIpIC8gMjsKICAgIGNvdXQgPDwgIlByenlibGl6b25lIG1pZWpzY2UgemVyb3dlOiAiIDw8IHNyb2RlayA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==