python numpy 시스템 엡실론
저는 기계 엡실론이 무엇인지 이해하려고 노력하고 있습니다.위키백과에 따르면 다음과 같이 계산할 수 있습니다.
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
수업. 누가 기능 수정을 도와줄 수 있나요?
주어진 부동 유형에 대해 기계 엡실론을 얻는 더 쉬운 방법은 다음을 사용하는 것입니다.
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
'programing' 카테고리의 다른 글
Oracle에서 행의 sha1-hash (0) | 2023.07.19 |
---|---|
Grails3 파일 업로드 maxFileSize 제한 (0) | 2023.07.19 |
데이터베이스에서 jango 개체 다시 로드 (0) | 2023.07.19 |
Mac에 R 설치 중 - 경고 메시지:"C"를 사용하여 LC_CTYPE을 설정하지 못했습니다. (0) | 2023.07.19 |
어떻게 하면 Pyflakes가 진술을 무시하게 할 수 있습니까? (0) | 2023.07.19 |