반응형
파이썬 numpy 기계 엡실론
나는 기계 입실론이 무엇인지 이해하려고 노력하고 있습니다. Wikipedia에 따르면 다음과 같이 계산할 수 있습니다.
def machineEpsilon(func=float):
machine_epsilon = func(1)
while func(1)+func(machine_epsilon) != func(1):
machine_epsilon_last = machine_epsilon
machine_epsilon = func(machine_epsilon) / func(2)
return machine_epsilon_last
그러나 배정 밀도 숫자에만 적합합니다. 단 정밀도 숫자도 지원하도록 수정하는 데 관심이 있습니다. numpy, 특히 numpy.float32
클래스를 사용할 수 있다는 것을 읽었습니다 . 아무도 함수 수정에 도움을 줄 수 있습니까?
주어진 float 유형에 대해 기계 엡실론을 얻는 더 쉬운 방법은 다음을 사용하는 것입니다 np.finfo()
.
print(np.finfo(float).eps)
# 2.22044604925e-16
print(np.finfo(np.float32).eps)
# 1.19209e-07
엡실론을 얻는 또 다른 쉬운 방법은 다음과 같습니다.
In [1]: 7./3 - 4./3 -1
Out[1]: 2.220446049250313e-16
데이비드가 지적했듯이 이미 작동합니다!
>>> def machineEpsilon(func=float):
... machine_epsilon = func(1)
... while func(1)+func(machine_epsilon) != func(1):
... machine_epsilon_last = machine_epsilon
... machine_epsilon = func(machine_epsilon) / func(2)
... return machine_epsilon_last
...
>>> machineEpsilon(float)
2.220446049250313e-16
>>> import numpy
>>> machineEpsilon(numpy.float64)
2.2204460492503131e-16
>>> machineEpsilon(numpy.float32)
1.1920929e-07
참고 URL : https://stackoverflow.com/questions/19141432/python-numpy-machine-epsilon
반응형
'IT박스' 카테고리의 다른 글
Sublime Text 3에서 BOM을 사용하여 파일 인코딩을 UTF8로 설정 (0) | 2020.09.13 |
---|---|
소형 장치의 Twitter 부트 스트랩 숨기기 요소 (0) | 2020.09.13 |
JavaScript에서 부모 요소 만 제거하고 자식 요소는 제거하지 않는 방법? (0) | 2020.09.13 |
bash로 디렉토리가 마운트되었는지 확인하십시오. (0) | 2020.09.13 |
SecurityException : 권한이 거부되었습니다 (인터넷 권한이 없습니까?) (0) | 2020.09.13 |