- zależy to od przyjętych na początku końców przedziału, na którym poszukuje się pierwiastka - dalej algorytm może wybrać do obliczeń wartości funkcji tylko te punkty, które wynikają z dzielenia na połowy początkowego odcinka, nie przebiega przez continuum odcinka liczb rzeczywistych.

Program w Pythonie Zamieszczony tu program w języku Python oblicza pierwiastek zadanej funkcji z wysoką dokładnością. Początkowe wartości i muszą być wybrane w taki sposób, aby i były przeciwnego znaku oraz „otaczały” poszukiwane miejsce zerowe.

def bisekcja(funkcja, a, b, EPS =1e-12, max_iter=1000): """ Znajduje pierwiastek funkcji w przedziale [a, b] metodą bisekcji EPS - dokładność wyniku """ if funkcja(a) * funkcja(b) >= 0: raise ValueError("Funkcja musi mieć różne znaki na końcach przedziału [a, b].")

for _ in range(max_iter): c = (a + b) / 2 if abs(funkcja(c)) < EPS or (b - a)/2 < EPS: return c if funkcja(a) * funkcja(c) < 0: b = c else: a = c return (a + b)/2

# Przykład użycia def funkcja(x): return x**3 - x - 2 # Dane: a=1 # początek przedziału b=2 # koniec przedziału EPS = 1e-12 # dokładność obliczeń

pierwiastek = bisekcja(funkcja, a, b, EPS) decimals = max(0, -int("{:.0e}".format(EPS).split('e')[-1])) print(f"\nPierwiastek funkcji: {pierwiastek:.{decimals}f}")