Pythonが「間違った」答えを返すのはなぜですか?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
はい、知っimport math
ていますsqrt
。しかし、私は上記の答えを探しています。
import math
、次いで及びx = math.sqrt(25)
値を割り当てるれる5.0
Xに。
Pythonが「間違った」答えを返すのはなぜですか?
x = 16
sqrt = x**(.5) #returns 4
sqrt = x**(1/2) #returns 1
はい、知っimport math
ていますsqrt
。しかし、私は上記の答えを探しています。
import math
、次いで及びx = math.sqrt(25)
値を割り当てるれる5.0
Xに。
回答:
sqrt=x**(1/2)
整数除算を行っています。1/2 == 0
。
つまり、最初のインスタンスではx (1/2)、2番目のインスタンスではx (0)を計算しています。
だから、それは間違いではなく、別の質問に対する正しい答えです。
sqrt = x**(float(1)/2)
これは答えが少し遅いかもしれませんが、平方根を計算する最も簡単で正確な方法はニュートンの方法です。
あなたはその平方根を計算したい数があり(num)
、その平方根の推測があります(estimate)
。Estimateには0より大きい任意の数を指定できますが、意味のある数を指定すると、再帰呼び出しの深さが大幅に短縮されます。
new_estimate = (estimate + num / estimate) / 2
このラインは、これら2つのパラメーターを使用してより正確な推定を計算します。関数にnew_estimate値を渡して、前の値よりも正確な別のnew_estimateを計算するか、このような再帰的な関数定義を作成できます。
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)
たとえば、30の平方根を見つける必要があります。結果は5から6の間であることはわかっています。
newtons_method(30,5)
数は30で、見積もりは5です。各再帰呼び出しの結果は次のとおりです。
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
最後の結果は、数値の平方根の最も正確な計算です。組み込み関数math.sqrt()と同じ値です。
NumPyを使用して、配列の平方根を計算できます。
import numpy as np
np.sqrt([1, 4, 9])
以下のコードがあなたの質問に答えてくれるといいのですが。
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)