"Portanto, não está errado, é a resposta certa para uma pergunta diferente" - adore! - acho que posso me desafiar a usar essa frase com mais frequência!
22416 Thomas Thomasberber
6
no Python 3.6, você obtém a resposta certa para a pergunta que você fez pela primeira vez.
vwvan
2
O segundo método pode ser calculado como:sqrt = x**(float(1)/2)
VM_AI
117
Você deve escrever sqrt = x**(1/2.0):, caso contrário, uma divisão inteira é executada e a expressão 1/2retorna 0.
Esse comportamento é "normal" no Python 2.x, enquanto no Python 3.x é 1/2avaliado como 0.5. Se você deseja que seu código Python 2.x se comporte como a gravação 3.x wrt division from __future__ import division- então 1/2avaliará a 0.5compatibilidade retroativa e 1//2avaliará a 0.
E para o registro, a maneira preferida de calcular uma raiz quadrada é esta:
Pode ser um pouco tarde para responder, mas a maneira mais simples e precisa de calcular a raiz quadrada é o método de Newton.
Você tem um número que deseja calcular sua raiz quadrada (num)e adivinhar sua raiz quadrada (estimate). A estimativa pode ser qualquer número maior que 0, mas um número que faça sentido reduz significativamente a profundidade da chamada recursiva.
new_estimate =(estimate + num / estimate)/2
Esta linha calcula uma estimativa mais precisa com esses 2 parâmetros. Você pode passar o valor new_estimate para a função e calcular outro new_estimate que seja mais preciso que o anterior ou pode fazer uma definição de função 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 exemplo, precisamos encontrar a raiz quadrada dos anos 30. Sabemos que o resultado está entre 5 e 6.
newtons_method(30,5)
número é 30 e estimativa é 5. O resultado de cada chamada recursiva é:
Essa é uma maneira mais natural de criar raízes quadradas, mas como ela responde à pergunta (é verdade que responde à pergunta no título, mas não à pergunta real no corpo (sim, é um título ruim))?
22818 Peter Mortensen
-1
Espero que o código abaixo mencionado responda à sua pergunta.
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
e, em seguida,x = math.sqrt(25)
que atribuirá o valor5.0
a x.Respostas:
sqrt=x**(1/2)
está fazendo divisão inteira.1/2 == 0
.Então você está computando x (1/2) na primeira instância, x (0) na segunda.
Portanto, não está errado, é a resposta certa para uma pergunta diferente.
fonte
sqrt = x**(float(1)/2)
Você deve escrever
sqrt = x**(1/2.0)
:, caso contrário, uma divisão inteira é executada e a expressão1/2
retorna0
.Esse comportamento é "normal" no Python 2.x, enquanto no Python 3.x é
1/2
avaliado como0.5
. Se você deseja que seu código Python 2.x se comporte como a gravação 3.x wrt divisionfrom __future__ import division
- então1/2
avaliará a0.5
compatibilidade retroativa e1//2
avaliará a0
.E para o registro, a maneira preferida de calcular uma raiz quadrada é esta:
fonte
É uma adição trivial à cadeia de respostas. No entanto, como o Assunto é um hit muito comum no Google, isso merece ser adicionado, acredito.
fonte
/
executa uma divisão inteira no Python 2:Se um dos números for flutuante, ele funcionará conforme o esperado:
fonte
O que você está vendo é divisão inteira. Para obter a divisão de ponto flutuante por padrão,
Ou você pode converter 1 ou 2 de 1/2 em um valor de ponto flutuante.
fonte
Pode ser um pouco tarde para responder, mas a maneira mais simples e precisa de calcular a raiz quadrada é o método de Newton.
Você tem um número que deseja calcular sua raiz quadrada
(num)
e adivinhar sua raiz quadrada(estimate)
. A estimativa pode ser qualquer número maior que 0, mas um número que faça sentido reduz significativamente a profundidade da chamada recursiva.Esta linha calcula uma estimativa mais precisa com esses 2 parâmetros. Você pode passar o valor new_estimate para a função e calcular outro new_estimate que seja mais preciso que o anterior ou pode fazer uma definição de função recursiva como esta.
Por exemplo, precisamos encontrar a raiz quadrada dos anos 30. Sabemos que o resultado está entre 5 e 6.
número é 30 e estimativa é 5. O resultado de cada chamada recursiva é:
O último resultado é o cálculo mais preciso da raiz quadrada do número. É o mesmo valor que a função interna math.sqrt ().
fonte
Talvez seja uma maneira simples de lembrar: adicione um ponto após o numerador (ou denominador)
fonte
Você pode usar o NumPy para calcular raízes quadradas de matrizes:
fonte
Espero que o código abaixo mencionado responda à sua pergunta.
fonte