Metody obliczania pierwiastka kwadratowego
Oszacowanie
Wiele metod obliczania pierwiastka kwadratowego z dodatniej liczby rzeczywistej S wymaga wartości początkowej. Jeśli ta wartość jest zbyt odległa od aktualnej wartości pierwiastka, obliczenia będą znacznie wydłużone. w związku z tym jest wysoce pożądane aby mieć oszacowanie tej wielkości, które może być nawet bardzo niedokładne ale proste do wyznaczenia. Jeśli S ≥ 1, niech D będzie liczbą cyfr po lewej stronie przecinka dziesiętnego. Jeśli S < 1, niech D będzie ujemną liczbą zer bezpośrednio na prawo od przecinka dziesiętnego. Wtedy oszacowanie jest następujące:
- Jeśli D jest nieparzyste, D = 2n + 1, to
- Jeśli D jest parzyste, D = 2n + 2, to
Wybrane zostały dwa i sześć ponieważ i .
Metoda babilońska
Prawdopodobnie pierwszy algorytm użyty do aproksymacji jest znany jako metoda babilońska od babilońskich matematyków,[1] lub metoda Herona od greckiego matematyka z pierwszego wieku Herona z Aleksandrii, który podał pierwszy jasny opis tej metody[2]. Można ją uzyskać (ale jest znacznie starsza) z metody Newtona. Jest to algorytm zbieżny kwadratowo, co oznacza, że liczba prawidłowych cyfr aproksymacji średnio podwaja się z każdą iteracją. Kroki algorytmu są następujące:
- Rozpocznij z dowolną dodatnią wartością początkową x0 (im bliżej pierwiastka tym lepiej).
- Niech xn+1 będzie średnią z xn i S / xn (użycie średniej arytmetycznej do aproksymacji średniej geometrycznej).
- Powtarzaj krok 2 aż zostanie osiągnięta pożądana dokładność.
Można go także przedstawić jako:
Przykład
Aby obliczyć , gdzie S = 125348, do 6 cyfr znaczących, weźmy oszacowanie x0 z przepisu wyżej. Liczba cyfr w S to D=6=2·2+2. Z tego n=2 i oszacowanie:
W związku z tym
Zbieżność
Zdefiniujmy błąd względny w xn jako
a tym samym
Można wykazać, że
a tym samym, że
a w związku z tym zbieżność jest zapewniona pod warunkiem, że x0 and S są obie dodatnie.
Najgorszy przypadek zbieżności
Przy zastosowaniu oszacowań z przepisu powyżej, najgorsze zbieżności są następujące:
Stąd w każdym przypadku,
Należy pamiętać, że błędy zaokrągleń mogą spowolnić zbieżność. Należy wyznaczać przynajmniej jedną cyfrę więcej niż pożądana dokładność xn aby zminimalizować błędy zaokrągleń.
Tożsamość wykładnicza
Kalkulatory zwykle implementują dobre procedury na obliczanie funkcji ekspotencjalnej i logarytmu naturalnego, i z tego obliczają pierwiastek kwadratowy z S wykorzystując tożsamość
- .
Ta sama tożsamość jest używana do wyliczania pierwiastka kwadratowego przy użyciu tablic logarytmicznych lub suwaka logarytmicznego.
Metoda równego podziału
Innym prostym sposobem znalezienia pierwiastka kwadratowego jest metoda więcej/mniej, podobnie jak w metodzie równego podziału. Ta metoda polega na zgadywaniu liczby na podstawie znanego kwadratu, a następnie sprawdzaniu czy jej kwadrat jest zbyt wysoki lub zbyt niski i odpowiednim poprawianiu wyniku.
Załóżmy, że chcemy znaleźć pierwiastek kwadratowy z 20. Wiemy, że kwadrat 5 wynosi 25, a kwadrat 4 to 16, czyli wynik musi być pomiędzy 4 i 5. Na początku zgadujemy, że 4,5. Kwadrat 4,5 wynosi 20,25 a to jest za dużo, więc zgadujemy dla 4,4. Wynik równa się 19,36 a to za mało. Z tego jednak wynika, że pierwiastek jest pomiędzy 4,4 i 4,5. Kontynuując ten schemat możemy uzyskać taką dokładność jaką tylko chcemy. Aby uzyskać trzy cyfry po przecinku:
- 4.452 = 19.8025 (za mało)
- 4.472 = 19.9809 (za dużo, ale blisko)
- 4.482 = 20.0704 (za dużo)
- 4.4752 = 20.025625 (za dużo)
- 4.4732 = 20.007729 (za dużo, ale blisko)
- 4.4722 = 19.998784 (za mało)
Teraz wiemy, że wynik jest pomiędzy 4,472 a 4,473. Przyjmujemy, że pierwiastek kwadratowy z 20 dla dokładności do trzech miejsc po przecinku wynosi 4,472.
Aproksymacja Bakhshali'ego
Ta metoda znajdowania aproksymacji pierwiastka kwadratowego została opisana w starożytnym manuskrypcie zwanego manuskrypt Bakhshali'ego. Jest ona równoważna dwóm iteracjom metody babilońskiej rozpoczynając od N. Oryginalna prezentacja jest następująca: Aby obliczyć , niech N2 będzie najlepszym przybliżeniem kwadratu S. Następnie oblicz:
To można także zapisać jako:
Przykład
Znajdźmy .
Wyznaczanie cyfra po cyfrze
Jest to metoda sekwencyjnego znajdowania kolejnych cyfr pierwiastka kwadratowego. Jest ona wolniejsza niż metoda babilońska, lecz ma kilka zalet:
- jest prosta dla ręcznych obliczeń;
- każda cyfra wyznaczanego pierwiastka jest prawidłowa, to znaczy nie zmieni się w toku dalszych obliczeń;
- jeśli pierwiastek kwadratowy ma skończone rozwinięcie, algorytm kończy się po znalezieniu ostatniej cyfry. Można to wykorzystać do sprawdzenia czy zadana liczba całkowita jest kwadratem.
Kostki Napiera zawierają wskazówki do wykonania tego algorytmu.
Zapisujemy oryginalną liczbę w postaci dziesiętnej. Liczby są zapisywane podobnie jak w dzieleniu pisemnym i podobnie wynik będzie zapisany nad linią. Następnie należy cyfry pogrupować w pary, rozpoczynając od przecinka dziesiętnego w obie strony. Przecinek dziesiętny będzie pozycją przecinka dziesiętnego wyniku nad linią. Jedna cyfra wyniku będzie się pojawiała nad każdą parą cyfr pod linią.
Rozpoczynamy od pierwszej pary cyfr od lewej i wykonujemy poniższą procedurę dla każdej kolejnej pary:
- Rozpoczynamy od lewej przepisując najbardziej znaczącą parę cyfr jeszcze nie używaną (jeśli zostały wykorzystane wszystkie zapisujemy "00") i dopisujemy je z prawej strony reszty z poprzedniego etapu (w pierwszym kroku nie ma reszty). Innymi słowy, mnożymy resztę przez 100 i dodajemy 2 cyfry. Będzie to bieżąca wartość c.
- Znajdujemy p, y i x następująco:
- Niech p będzie częścią pierwiastka aktualnie znalezioną, pomijamy przecinek dziesiętny. (W pierwszym kroku, p = 0).
- Określamy największą cyfrę x taką, że nie przekracza c.
- Uwaga: 20p + x to zwyczajnie dwa razy p, z cyfrą x dołączoną po prawej).
- Uwaga: Można znaleźć x zgadując, że to c/(20·p) i wykonując próbne obliczenie y, a następnie zmienić x w górę lub dół stosownie do potrzeb.
- Umieszczamy cyfrę jako następną cyfrę pierwiastka.
- Odejmujemy y od c i otrzymujemy nową resztę.
- Jeśli reszta wynosi zero i nie ma więcej cyfr do spisania, to algorytm jest zakończony. W innym przypadku wracamy do punktu 1 i kontynuujemy następną iterację.
Przykłady
Znajdź pierwiastek kwadratowy z 152.2756.
1 2. 3 4 / \/ 01 52.27 56 01 1*1 <= 1 < 2*2 x = 1 01 y = x*x = 1*1 = 1 00 52 22*2 <= 52 < 23*3 x = 2 00 44 y = (20+x)*x = 22*2 = 44 08 27 243*3 <= 827 < 244*4 x = 3 07 29 y = (240+x)*x = 243*3 = 729 98 56 2464*4 <= 9856 < 2465*5 x = 4 98 56 y = (2460+x)*x = 2464*4 = 9856 00 00 Algorytm zakończony: Wynik to 12.34
Znajdź pierwiastek kwadratowy z 2.
1. 4 1 4 2 / \/ 02.00 00 00 00 02 1*1 <= 2 < 2*2 x = 1 01 y = x*x = 1*1 = 1 01 00 24*4 <= 100 < 25*5 x = 4 00 96 y = (20+x)*x = 24*4 = 96 04 00 281*1 <= 400 < 282*2 x = 1 02 81 y = (280+x)*x = 281*1 = 281 01 19 00 2824*4 <= 11900 < 2825*5 x = 4 01 12 96 y = (2820+x)*x = 2824*4 = 11296 06 04 00 28282*2 <= 60400 < 28283*3 x = 2 Osiągnięto pożądaną dokładność Pierwiastek kwadratowy z 2 wynosi około 1.4142
Nieodłącznym krokiem w algorytmie cyfra po cyfrze jest szukaj i sprawdź: znajdź cyfrę, , która dodana z prawej bieżącego rozwiązania , takiego, że , gdzie jest pożądaną wartością pierwiastka. Rozwijając, otrzymujemy . Bieżąca wartość —lub, zwykle, reszta—mogą być przyrostowo aktualizowane w systemie dwójowym, gdzie wartość jest jednobitowa, a operacje wymagane do obliczenia i można zastąpić szybszymi operacjami przesunięć bitów. W wyniku otrzymujemy prosty algorytm komputerowy:[3]
short sqrt(short num) {
short op = num;
short res = 0;
short one = 1 << 14; // The second-to-top bit is set: 1L<<30 for long
// "one" starts at the highest power of four <= the argument.
while (one > op)
one >>= 2;
while (one != 0) {
if (op >= res + one) {
op -= res + one;
res = (res >> 1) + one;
}
else
res >>= 1;
one >>= 2;
}
return res;
}
- ↑ Nie ma bezpośrednich dowodów wskazujących jak Babilończycy obliczali pierwiastki kwadratowe, mimo to są pewne przesłanki (pierwiastek kwadratowy z 2).
- ↑ Thomas Heath: A History of Greek Mathematics. T. 2. Oxford: Clarendon Press, 1921, s. 323-324.
- ↑ Fast integer square root by Mr. Woo's abacus algorithm