Obliczanie pierwiastka kwadratowego

Realizacja algorytmu w programie – metoda Newtona‑Raphsona

Algorytm „liczenia w słupku” należy do metod dokładnych, których implementacja jest czasochłonna i wymaga zaangażowania dużej ilości pamięci obliczeniowej komputera. W sytuacji gdy nie zależy nam na precyzyjnym wyniku, optymalną decyzją jest wybór metody przybliżonejmetoda przybliżonametody przybliżonej. Jedną z nich jest metoda Newtona‑Raphsona.

Przeanalizujmy przedstawioną specyfikację oraz pseudokod, a następnie zapoznajmy się z opisem całego algorytmu.

Specyfikacja problemu:

Dane:

  • a – liczba podpierwiastkowa; pole kwadratu, którego długość boku jest poszukiwanym pierwiastkiem; nieujemna liczba rzeczywista

  • epsilon – bezwzględna wartość różnicy pomiędzy bokami prostokąta o polu powierzchni a, po której osiągnięciu przerywamy dalsze wyznaczanie pierwiastka i zwracamy ostatni otrzymany wynik; określa dokładność obliczeń; nieujemna liczba rzeczywista

Wynik:

  • b – wynik pierwiastkowania liczby a dla określonej wartości zmiennej epsilon; liczba rzeczywista

Linia 1. a ← wprowadź liczbę. Linia 2. epsilon ← wprowadź liczbę. Linia 3. b ← a prawy ukośnik 2. Linia 4. c ← a prawy ukośnik b. Linia 6. dopóki kreska pionowa b minus c kreska pionowa zamknij nawias ostrokątny epsilon wykonuj dwukropek. Linia 7. b ← otwórz nawias okrągły b plus c zamknij nawias okrągły prawy ukośnik 2. Linia 8. c ← a prawy ukośnik b. Linia 10. zwróć b.

Podstawowym założeniem omawianej metody jest fakt, że wynik pierwiastkowania danej liczby będzie taki sam jak długość boku kwadratu o polu równym pierwiastkowanej liczbie.

R1DESC1BJQTBO
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Zatem jeżeli chcemy obliczyć pierwiastek z a, znajdujemy bok kwadratu o polu równym a.

Poszukiwania rozpoczynamy od prostokąta o bokach długości b i c.

R17DZCXQURD2Q
Źródło: Contentplus.pl sp. z o.o., licencja: CC BY-SA 3.0.

Wartości te są równe:

b = a c
c = a b

W każdym kolejnym kroku wyznaczamy bok b ze średniej arytmetycznej długości boków b i c z poprzedniego kroku.

b = ( b + c ) 2

Długość boku c uzyskujemy, dzieląc pole przez długość boku b.

c = a b

Etap ten powtarzamy, aż wartość bezwzględna różnicy pomiędzy obydwoma bokami osiągnie określoną przez nas precyzję. Wtedy końcowym wynikiem pierwiastkowania będzie wartość b. Pamiętajmy jednocześnie, że im mniejsza jest wartość precyzji, tym dokładniejszy będzie końcowy rezultat.

| a     b |   <   e p s i l o n

Osiągnięcie konkretnej precyzji jest tylko jednym z dostępnych wariantów warunku zakończenia algorytmu. Dalsze wyznaczanie wartości pierwiastka b może być przerwane np. po wykonaniu zadanej maksymalnej liczby iteracji. Należy podkreślić, że te warunki niekoniecznie będą spełnione jednocześnie. Najprawdopodobniej program skończy się wówczas po wykonaniu maksymalnej liczby iteracji albo po osiągnięciu konkretnej precyzji. Pisząc program, możemy zatem zdecydować się z góry na zaimplementowanie tylko jednego z tych wariantów.

W sekcji „Symulacja interaktywna” dowiesz się, jak zrealizować omawiany algorytm za pomocą arkusza kalkulacyjnego.

Ważne!

algorytm Newtona–Raphsona należy do tzw. metod iteracyjnych. Wyróżniamy dla niego dwa kryteria zakończenia obliczeń:

  • wykonanie podanej liczby iteracji;

  • sytuację, w której dwa kolejne przybliżenia leżą dostatecznie blisko siebie.

Słownik

część całkowita liczby
część całkowita liczby

dla określonej liczby a największa liczba całkowita c spełniająca warunek:

c a
część ułamkowa liczby
część ułamkowa liczby

różnica liczby a oraz jej części całkowitej c

metoda przybliżona
metoda przybliżona

metoda, której celem nie jest dokładny wynik, a jedynie oszacowanie przybliżonego wyniku

stopień pierwiastka
stopień pierwiastka

wykładnik potęgi będącej operacją odwrotną do konkretnego przypadku pierwiastkowania (np. potęga o wartości wykładnika równej 5 będzie operacją odwrotną w stosunku do pierwiastka o stopniu równym 5)