파이썬에서 제곱근을 어떻게 계산합니까?
파이썬이 왜 "잘못된"대답을합니까?
x = 16
sqrt = x**(.5)
returns 4
sqrt = x**(1/2)
returns 1
예, 알고 import math
사용 sqrt
합니다. 그러나 위의 답변을 찾고 있습니다.
sqrt=x**(1/2)
정수 나누기를하고 있습니다. 1/2 == 0
.
따라서 첫 번째 인스턴스에서 x (1/2) 를 계산 하고 두 번째 인스턴스에서 x (0) 을 계산합니다.
따라서 잘못된 것이 아닙니다. 다른 질문에 대한 정답입니다.
을 작성해야합니다. sqrt = x**(1/2.0)
그렇지 않으면 정수 나누기가 수행되고 표현식이을 1/2
리턴합니다 0
.
이 동작은 Python 2.x에서 "정상"인 반면 Python 3.x에서는로 1/2
평가됩니다 0.5
. 당신이 당신의 파이썬 2.x에서 코드가 3.X의 WRT 부문 쓰기처럼 행동하려는 경우 from __future__ import division
- 다음 1/2
에 평가합니다 0.5
및 이전 버전과의 호환성을 위해 1//2
로 평가합니다 0
.
그리고 기록을 위해 제곱근을 계산하는 기본 방법은 다음과 같습니다.
import math
math.sqrt(x)
import math
math.sqrt( x )
답변 체인에 사소한 추가 사항입니다. 그러나 주제는 매우 일반적인 Google 히트이므로 추가해야합니다.
/
파이썬 2에서 정수 나누기를 수행합니다.
>>> 1/2
0
숫자 중 하나가 부동 소수점이면 예상대로 작동합니다.
>>> 1.0/2
0.5
>>> 16**(1.0/2)
4.0
당신이보고있는 것은 정수 나누기입니다. 기본적으로 부동 소수점 나누기를 얻으려면
from __future__ import division
또는 1/2의 1 또는 2를 부동 소수점 값으로 변환 할 수 있습니다.
sqrt = x**(1.0/2)
대답하기에는 약간 늦었지만 제곱근을 계산하는 가장 간단하고 정확한 방법은 뉴턴의 방법입니다.
제곱근을 계산할 숫자가 있고 제곱근을 (num)
추측 할 수 있습니다 (estimate)
. 견적은 0보다 큰 숫자 일 수 있지만 의미가있는 숫자는 재귀 호출 깊이를 크게 단축시킵니다.
new_estimate = (estimate + num / estimate) / 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)
각 재귀 호출의 결과는 다음과 같습니다.
5.5
5.477272727272727
5.4772255752546215
5.477225575051661
The last result is the most accurate computation of the square root of number. It is the same value as the built-in function math.sqrt().
Perhaps a simple way to remember: add a dot after the numerator (or denominator)
16 ** (1. / 2) # 4
289 ** (1. / 2) # 17
27 ** (1. / 3) # 3
You can use NumPy to calculate square roots of arrays:
import numpy as np
np.sqrt([1, 4, 9])
I hope the below mentioned code will answer your question.
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)
참고URL : https://stackoverflow.com/questions/9595135/how-do-i-calculate-square-root-in-python
'IT박스' 카테고리의 다른 글
JavaScript없이 HTML과 CSS에서 클릭 가능한 전체 'div'를 만드는 방법은 무엇입니까? (0) | 2020.07.13 |
---|---|
날짜-시간 C #에서 시간 만 가져 오는 방법 (0) | 2020.07.13 |
아이폰 시뮬레이터 위치 (0) | 2020.07.13 |
NPM 모듈은 sudo없이 전체적으로 설치되지 않습니다 (0) | 2020.07.13 |
Spring MVC에서 응답 컨텐츠 유형을 설정하는 사람 (@ResponseBody) (0) | 2020.07.13 |