#include <iostream>
#include <cmath>
using namespace std;
// Definicja funkcji
double f(double x)
{
return x * x * x - x - 2; // f(x) = x^3 - x - 2
}
int main()
{
double a = 1.0; // początek przedziału
double b = 2.0; // koniec przedziału
double epsilon = 0.000001; // dokładność
double c;
int iteracje = 0;
// Sprawdzenie warunku metody bisekcji
if (f(a) * f(b) >= 0)
{
cout << "Brak zmiany znaku w przedziale." << endl;
return 0;
}
// Algorytm bisekcji
while ((b - a) > epsilon)
{
c = (a + b) / 2.0;
if (f(c) == 0.0)
break;
else if (f(c) * f(a) < 0)
b = c;
else
a = c;
iteracje++;
}
cout << "Miejsce zerowe funkcji: " << (a + b) / 2.0 << endl;
cout << "Liczba iteracji: " << iteracje << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y21hdGg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKLy8gRGVmaW5pY2phIGZ1bmtjamkKZG91YmxlIGYoZG91YmxlIHgpCnsKICAgIHJldHVybiB4ICogeCAqIHggLSB4IC0gMjsgLy8gZih4KSA9IHheMyAtIHggLSAyCn0KCmludCBtYWluKCkKewogICAgZG91YmxlIGEgPSAxLjA7ICAgICAgICAgIC8vIHBvY3rEhXRlayBwcnplZHppYcWCdQogICAgZG91YmxlIGIgPSAyLjA7ICAgICAgICAgIC8vIGtvbmllYyBwcnplZHppYcWCdQogICAgZG91YmxlIGVwc2lsb24gPSAwLjAwMDAwMTsgLy8gZG9rxYJhZG5vxZvEhwogICAgZG91YmxlIGM7CiAgICBpbnQgaXRlcmFjamUgPSAwOwoKICAgIC8vIFNwcmF3ZHplbmllIHdhcnVua3UgbWV0b2R5IGJpc2VrY2ppCiAgICBpZiAoZihhKSAqIGYoYikgPj0gMCkKICAgIHsKICAgICAgICBjb3V0IDw8ICJCcmFrIHptaWFueSB6bmFrdSB3IHByemVkemlhbGUuIiA8PCBlbmRsOwogICAgICAgIHJldHVybiAwOwogICAgfQoKICAgIC8vIEFsZ29yeXRtIGJpc2VrY2ppCiAgICB3aGlsZSAoKGIgLSBhKSA+IGVwc2lsb24pCiAgICB7CiAgICAgICAgYyA9IChhICsgYikgLyAyLjA7CgogICAgICAgIGlmIChmKGMpID09IDAuMCkKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgZWxzZSBpZiAoZihjKSAqIGYoYSkgPCAwKQogICAgICAgICAgICBiID0gYzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSBjOwoKICAgICAgICBpdGVyYWNqZSsrOwogICAgfQoKICAgIGNvdXQgPDwgIk1pZWpzY2UgemVyb3dlIGZ1bmtjamk6ICIgPDwgKGEgKyBiKSAvIDIuMCA8PCBlbmRsOwogICAgY291dCA8PCAiTGljemJhIGl0ZXJhY2ppOiAiIDw8IGl0ZXJhY2plIDw8IGVuZGw7CgogICAgcmV0dXJuIDA7Cn0K