„Więc nie jest źle, to dobra odpowiedź na inne pytanie” - uwielbiam to! - myślę, że mógłbym rzucić sobie wyzwanie, aby częściej używać tego wyrażenia!
Thomas Kimber,
6
w Pythonie 3.6 otrzymujesz właściwą odpowiedź na pytanie, które zadałeś jako pierwsze.
vwvan
2
Drugą metodę można obliczyć jako:sqrt = x**(float(1)/2)
VM_AI
117
Musisz napisać sqrt = x**(1/2.0):, w przeciwnym razie następuje dzielenie liczb całkowitych i wyrażenie 1/2zwraca 0.
To zachowanie jest „normalne” w Pythonie 2.x, podczas gdy w Pythonie 3.x 1/2ocenia się jako 0.5. Jeśli chcesz, aby Twój kod Python 2.x zachowywał się jak 3.x wrt Division write from __future__ import division- następnie 1/2oceni do 0.5i dla kompatybilności wstecznej 1//2oceni do 0.
Dla przypomnienia, preferowany sposób obliczania pierwiastka kwadratowego jest następujący:
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)/2print(new_estimate)# Base Case: Comparing our estimate with built-in functions valueif new_estimate == math.sqrt(num):returnTrueelse: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:
Jest to bardziej naturalny sposób wykonywania pierwiastków kwadratowych, ale jak odpowiada na pytanie (wprawdzie odpowiada na pytanie w tytule, ale nie na rzeczywiste pytanie w treści (tak, to zły tytuł))?
Peter Mortensen
-1
Mam nadzieję, że poniższy kod odpowie na Twoje pytanie.
def root(x,a):
y =1/ a
y = float(y)print y
z = x ** y
print z
base = input("Please input the base value:")
power = float(input("Please input the root value:"))
root(base,power)
import math
a następnie,x = math.sqrt(25)
który przypisze wartość5.0
do x.Odpowiedzi:
sqrt=x**(1/2)
dokonuje dzielenia liczb całkowitych.1/2 == 0
.Więc obliczasz x (1/2) w pierwszej instancji, x (0) w drugiej.
Więc nie jest źle, to dobra odpowiedź na inne pytanie.
źródło
sqrt = x**(float(1)/2)
Musisz napisać
sqrt = x**(1/2.0)
:, w przeciwnym razie następuje dzielenie liczb całkowitych i wyrażenie1/2
zwraca0
.To zachowanie jest „normalne” w Pythonie 2.x, podczas gdy w Pythonie 3.x
1/2
ocenia się jako0.5
. Jeśli chcesz, aby Twój kod Python 2.x zachowywał się jak 3.x wrt Division writefrom __future__ import division
- następnie1/2
oceni do0.5
i dla kompatybilności wstecznej1//2
oceni do0
.Dla przypomnienia, preferowany sposób obliczania pierwiastka kwadratowego jest następujący:
źródło
To trywialny dodatek do łańcucha odpowiedzi. Jednak ponieważ Temat jest bardzo popularnym hitem w Google, wierzę, że zasługuje na dodanie.
źródło
/
wykonuje dzielenie liczb całkowitych w Pythonie 2:Jeśli jedna z liczb jest liczbą zmiennoprzecinkową, działa zgodnie z oczekiwaniami:
źródło
To, co widzisz, to dzielenie liczb całkowitych. Aby domyślnie uzyskać dzielenie zmiennoprzecinkowe,
Lub możesz przekonwertować 1 lub 2 z 1/2 na wartość zmiennoprzecinkową.
źródło
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.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.
Na przykład musimy znaleźć pierwiastek kwadratowy 30. Wiemy, że wynik wynosi od 5 do 6.
liczba to 30, a szacunek to 5. Wynik każdego wywołania rekurencyjnego to:
Ostatnim wynikiem jest najdokładniejsze obliczenie pierwiastka kwadratowego z liczby. Jest to ta sama wartość, co wbudowana funkcja math.sqrt ().
źródło
Być może prosty sposób na zapamiętanie: dodaj kropkę po liczniku (lub mianowniku)
źródło
Możesz użyć NumPy do obliczenia pierwiastków kwadratowych z tablic:
źródło
Mam nadzieję, że poniższy kod odpowie na Twoje pytanie.
źródło