#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
double f(double x)
{
return x * x * x - x - 2; // przykładowa funkcja
}
int main()
{
double a, b, eps, c;
cout << "Podaj poczatek przedzialu a: ";
cin >> a;
cout << "Podaj koniec przedzialu b: ";
cin >> b;
cout << "Podaj dokladnosc eps: ";
cin >> eps;
// Sprawdzenie warunku istnienia miejsca zerowego
if (f(a) * f(b) >= 0)
{
cout << "Brak zmiany znaku w przedziale!" << endl;
return 0;
}
// Metoda bisekcji
while ((b - a) / 2.0 > eps)
{
c = (a + b) / 2.0;
if (f(c) == 0.0)
break;
else if (f(a) * f(c) < 0)
b = c;
else
a = c;
}
c = (a + b) / 2.0;
cout << "Przyblizone miejsce zerowe: " << c << endl;
cout << "Wartosc funkcji f(c): " << f(c) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4ICogeCAqIHggLSB4IC0gMjsgLy8gcHJ6eWvFgmFkb3dhIGZ1bmtjamEKfQoKaW50IG1haW4oKQp7CiAgICBkb3VibGUgYSwgYiwgZXBzLCBjOwoKICAgIGNvdXQgPDwgIlBvZGFqIHBvY3phdGVrIHByemVkemlhbHUgYTogIjsKICAgIGNpbiA+PiBhOwogICAgY291dCA8PCAiUG9kYWoga29uaWVjIHByemVkemlhbHUgYjogIjsKICAgIGNpbiA+PiBiOwogICAgY291dCA8PCAiUG9kYWogZG9rbGFkbm9zYyBlcHM6ICI7CiAgICBjaW4gPj4gZXBzOwoKICAgIC8vIFNwcmF3ZHplbmllIHdhcnVua3UgaXN0bmllbmlhIG1pZWpzY2EgemVyb3dlZ28KICAgIGlmIChmKGEpICogZihiKSA+PSAwKQogICAgewogICAgICAgIGNvdXQgPDwgIkJyYWsgem1pYW55IHpuYWt1IHcgcHJ6ZWR6aWFsZSEiIDw8IGVuZGw7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CgogICAgLy8gTWV0b2RhIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSAvIDIuMCA+IGVwcykKICAgIHsKICAgICAgICBjID0gKGEgKyBiKSAvIDIuMDsKCiAgICAgICAgaWYgKGYoYykgPT0gMC4wKQogICAgICAgICAgICBicmVhazsKICAgICAgICBlbHNlIGlmIChmKGEpICogZihjKSA8IDApCiAgICAgICAgICAgIGIgPSBjOwogICAgICAgIGVsc2UKICAgICAgICAgICAgYSA9IGM7CiAgICB9CgogICAgYyA9IChhICsgYikgLyAyLjA7CgogICAgY291dCA8PCAiUHJ6eWJsaXpvbmUgbWllanNjZSB6ZXJvd2U6ICIgPDwgYyA8PCBlbmRsOwogICAgY291dCA8PCAiV2FydG9zYyBmdW5rY2ppIGYoYyk6ICIgPDwgZihjKSA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9Cg==