"Así que no está mal, es la respuesta correcta a una pregunta diferente" - ¡me encanta! ¡Creo que podría desafiarme a mí mismo para usar esta frase más a menudo!
Thomas Kimber
66
en Python 3.6 obtienes la respuesta correcta a la pregunta que primero hiciste.
vwvan
2
El segundo método se puede calcular como:sqrt = x**(float(1)/2)
VM_AI
117
Debe escribir: de lo sqrt = x**(1/2.0)contrario, se realiza una división entera y la expresión 1/2vuelve 0.
Este comportamiento es "normal" en Python 2.x, mientras que en Python 3.x se 1/2evalúa como 0.5. Si desea que su código Python 2.x se comporte como escritura de división wrt 3.x from __future__ import division, entonces 1/2evaluará 0.5y, para la compatibilidad con versiones anteriores, 1//2evaluará a 0.
Y para el registro, la forma preferida de calcular una raíz cuadrada es esta:
Esto puede ser un poco tarde para responder, pero la forma más simple y precisa de calcular la raíz cuadrada es el método de Newton.
Tiene un número que desea calcular su raíz cuadrada (num)y puede adivinar su raíz cuadrada (estimate). La estimación puede ser cualquier número mayor que 0, pero un número que tiene sentido acorta significativamente la profundidad de la llamada recursiva.
new_estimate =(estimate + num / estimate)/2
Esta línea calcula una estimación más precisa con esos 2 parámetros. Puede pasar el valor de new_estimate a la función y calcular otro new_estimate que sea más preciso que el anterior o puede hacer una definición de función recursiva como esta.
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)
Por ejemplo, necesitamos encontrar la raíz cuadrada de 30. Sabemos que el resultado es entre 5 y 6.
newtons_method(30,5)
el número es 30 y la estimación es 5. El resultado de cada llamada recursiva es:
Esta es una forma más natural de hacer raíces cuadradas, pero ¿cómo responde la pregunta (es cierto que responde la pregunta en el título, pero no la pregunta real en el cuerpo (sí, es un mal título))?
Peter Mortensen
-1
Espero que el código mencionado a continuación responda a su pregunta.
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
y luegox = math.sqrt(25)
que asignará el valor5.0
a x.Respuestas:
sqrt=x**(1/2)
está haciendo división entera.1/2 == 0
.Entonces estás calculando x (1/2) en la primera instancia, x (0) en la segunda.
Entonces no está mal, es la respuesta correcta a una pregunta diferente.
fuente
sqrt = x**(float(1)/2)
Debe escribir: de lo
sqrt = x**(1/2.0)
contrario, se realiza una división entera y la expresión1/2
vuelve0
.Este comportamiento es "normal" en Python 2.x, mientras que en Python 3.x se
1/2
evalúa como0.5
. Si desea que su código Python 2.x se comporte como escritura de división wrt 3.xfrom __future__ import division
, entonces1/2
evaluará0.5
y, para la compatibilidad con versiones anteriores,1//2
evaluará a0
.Y para el registro, la forma preferida de calcular una raíz cuadrada es esta:
fuente
Es una adición trivial a la cadena de respuesta. Sin embargo, dado que el Asunto es un hit de Google muy común, esto merece ser agregado, creo.
fuente
/
realiza una división entera en Python 2:Si uno de los números es flotante, funciona como se esperaba:
fuente
Lo que estás viendo es la división entera. Para obtener la división de coma flotante por defecto,
O bien, puede convertir 1 o 2 de 1/2 en un valor de coma flotante.
fuente
Esto puede ser un poco tarde para responder, pero la forma más simple y precisa de calcular la raíz cuadrada es el método de Newton.
Tiene un número que desea calcular su raíz cuadrada
(num)
y puede adivinar su raíz cuadrada(estimate)
. La estimación puede ser cualquier número mayor que 0, pero un número que tiene sentido acorta significativamente la profundidad de la llamada recursiva.Esta línea calcula una estimación más precisa con esos 2 parámetros. Puede pasar el valor de new_estimate a la función y calcular otro new_estimate que sea más preciso que el anterior o puede hacer una definición de función recursiva como esta.
Por ejemplo, necesitamos encontrar la raíz cuadrada de 30. Sabemos que el resultado es entre 5 y 6.
el número es 30 y la estimación es 5. El resultado de cada llamada recursiva es:
El último resultado es el cálculo más preciso de la raíz cuadrada del número. Es el mismo valor que la función incorporada math.sqrt ().
fuente
Quizás una forma simple de recordar: agregue un punto después del numerador (o denominador)
fuente
Puede usar NumPy para calcular raíces cuadradas de matrices:
fuente
Espero que el código mencionado a continuación responda a su pregunta.
fuente