Połowienie z zadaną dokładnością
Miejsce zerowe funkcji metodą połowienia - Algorytmy: zakres rozszerzony (Python)
Zamiast stałej liczby kroków połowimy przedział, aż będzie krótszy niż zadana dokładność `eps`. Każdy krok skraca przedział o połowę, więc dla przedziału długości 1 i dokładności 0.000001 potrzeba około 20 kroków (2^20 > 1 000 000).
def f(x):
return x ** 3 - x - 2
def bisection(f, a, b, eps):
steps = 0
while b - a > eps:
middle = (a + b) / 2
if f(a) * f(middle) <= 0:
b = middle
else:
a = middle
steps += 1
return (a + b) / 2, steps
x, steps = bisection(f, 1, 2, 0.000001)
print(f"x = {x:.6f}, kroki: {steps}")Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Algorytmy: zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.