To może być trochę za późno na odpowiedź, ale najprostszym i dokładnym sposobem obliczenia pierwiastka kwadratowego jest metoda Newtona.
Masz liczbę, dla której chcesz obliczyć jej pierwiastek kwadratowy, (num)
i masz przypuszczenie, jaki jest jej pierwiastek kwadratowy (estimate)
. Oszacowanie może być dowolną liczbą większą niż 0, ale liczba, która ma sens, znacznie skraca głębokość rekurencyjnego połączenia.
new_estimate = (estimate + num / estimate) / 2
Ta linia oblicza dokładniejsze oszacowanie na podstawie tych 2 parametrów. Możesz przekazać wartość new_estimate do funkcji i obliczyć inny new_estimate, który jest dokładniejszy niż poprzedni, lub możesz utworzyć rekurencyjną definicję funkcji, taką jak ta.
def newtons_method(num, estimate):
# Computing a new_estimate
new_estimate = (estimate + num / estimate) / 2
print(new_estimate)
# Base Case: Comparing our estimate with built-in functions value
if new_estimate == math.sqrt(num):
return True
else:
return newtons_method(num, new_estimate)
Na przykład musimy znaleźć pierwiastek kwadratowy 30. Wiemy, że wynik wynosi od 5 do 6.
newtons_method(30,5)
liczba to 30, a szacunek to 5. Wynik każdego wywołania rekurencyjnego to:
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
Ostatnim wynikiem jest najdokładniejsze obliczenie pierwiastka kwadratowego z liczby. Jest to ta sama wartość, co wbudowana funkcja math.sqrt ().