Metody obliczania pierwiastka kwadratowego
Oszacowanie
edytujWiele metod obliczania pierwiastka kwadratowego z dodatniej liczby rzeczywistej S wymaga wartości początkowej. Jeśli ta wartość jest zbyt odległa od faktycznej 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
edytujPrawdopodobnie pierwszy algorytm użyty do aproksymacji jest znany jako metoda babilońska od babilońskich matematyków[a], lub metoda Herona od greckiego matematyka z pierwszego wieku Herona z Aleksandrii, który podał pierwszy jasny opis tej metody[1]. 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
edytujAby 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ść
edytujZdefiniujmy 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 i S są obie dodatnie.
Najgorszy przypadek zbieżności
edytujPrzy 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
edytujKalkulatory zwykle implementują dobre procedury na obliczanie funkcji wykładniczej 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
edytujInnym 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 mał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.
Ta metoda znajdowania aproksymacji pierwiastka kwadratowego została opisana w starożytnym manuskrypcie zwanego manuskrypt Bakhshali. Jest ona równoważna dwóm iteracjom metody babilońskiej rozpoczynając od N. Oryginalna prezentacja jest następująca: Aby obliczyć należy przyjąć liczbę naturalną N taką, że N2 jest najlepszym przybliżeniem S. Następnie oblicz:
To można także zapisać jako:
Przykład
edytujZnajdźmy
Wyznaczanie cyfra po cyfrze
edytujJest 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ę pierwiastkowaną w postaci dziesiętnej. Liczby są zapisywane podobnie jak w dzieleniu pisemnym i podobnie wynik pierwiastkowania będzie zapisany nad linią. Następnie należy cyfry liczby pierwiastkowanej 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 liczbę wyrażoną przez kolejne 2 cyfry. Będzie to bieżąca wartość c.
- Znajdujemy p, y i x następująco:
- Niech p będzie dotychczas obliczoną częścią wyniku pierwiastkowania zapisaną nad kreską, pomijamy przecinek dziesiętny. (W pierwszym kroku, p = 0).
- Określamy największą cyfrę x taką, że nie jest większe od c (czyli może być mniejsze lub równe).
- Uwaga: 20p + x to oczywiście w zapisie cyfrowym dwa razy p z cyfrą x dołączoną po prawej.
- Uwaga: Można znaleźć x biorąc liczbę p, czyli dotychczas zapisany wynik nad kreską, i zgadując, że kolejna cyfra x to c/(20·p), a następnie wykonując obliczenie y z ewentualną zmianą x w górę lub dół stosownie do porównania obliczonego y z c.
- Umieszczamy cyfrę jako następną cyfrę wyniku pierwiastkowania.
- 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
edytujZnajdź 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ójkowym, 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[2]:
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;
}
Zobacz też
edytujUwagi
edytuj- ↑ Nie ma bezpośrednich dowodów wskazujących jak Babilończycy obliczali pierwiastki kwadratowe, mimo to są pewne przesłanki (pierwiastek kwadratowy z 2).
Przypisy
edytuj- ↑ 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. medialab.freaknet.org. [zarchiwizowane z tego adresu (2012-04-21)]..