Wróć do: Algorytmy
średni metody numerycznepierwiastekHeronmatura rozszerzona z informatyki

Pierwiastek metodą babilońską

Iteracyjna metoda obliczania pierwiastka kwadratowego – metoda Herona, znana od starożytności.

01

Opis

Metoda Babilońska (zwana też metodą Herona) to bardzo szybki algorytm numeryczny do przybliżonego obliczania pierwiastka kwadratowego liczby S.

Idea: zaczynamy od dowolnego początkowego przybliżenia x (najczęściej x = S). Następnie wielokrotnie aplikujemy wzór:

x_{n+1} = (x_n + S/x_n) / 2

Jest to średnia arytmetyczna liczby x i S/x. Geometrycznie: jeśli x jest za duże, to S/x jest za małe (i odwrotnie). Ich średnia daje znacznie lepsze przybliżenie. Iterujemy dopóki różnica między a S nie zejdzie poniżej zadanej dokładności eps.

Wyjątkowa szybkość zbieżności: liczba poprawnych cyfr podwaja się w każdej iteracji. Dla S = 2 już po 5 iteracjach mamy dokładność 10⁻¹⁵. Dlatego O(log n) jest złożonością "po liczbie cyfr dokładności" – w praktyce wystarcza kilka iteracji.

Powiązanie z metodą Newtona: metoda Babilońska to szczególny przypadek metody Newtona zastosowanej do funkcji f(x) = x² - S.

02

Pseudokod

funkcja pierwiastek_babilonski(S, eps):
  jeżeli S < 0:
    zwróć błąd
  jeżeli S = 0:
    zwróć 0
  // początkowe przybliżenie
  x  S
  dopóki |x * x - S| > eps:
    x  (x + S / x) / 2
  zwróć x
03

Implementacja w Pythonie

def pierwiastek_babilonski(s, eps=1e-9):
    if s < 0:
        raise ValueError("Liczba musi być nieujemna")
    if s == 0:
        return 0
    x = s
    while abs(x * x - s) > eps:
        x = (x + s / x) / 2
    return x

# Przykład użycia
print(pierwiastek_babilonski(2))
# Wynik: 1.4142135623746899
print(pierwiastek_babilonski(144))
# Wynik: 12.0

Złożoność obliczeniowa

CzasowaO(log n)
PamięciowaO(1)

Powiązane zagadnienia

Zagadnienia z tego samego obszaru matury – warto je powtórzyć razem: