【发布时间】:2015-06-20 14:26:51
【问题描述】:
我正在使用 math.acos() 函数:
math.acos(1.0000000000000002)
这会引发数学域错误。有人能说出原因吗?我之前计算过这个值,这里这个值给出了错误,但如果我最后删除 2 它不会抛出错误。我没有得到这个的原因。
【问题讨论】:
-
角度的余弦值始终在
[-1.0, 1.0]范围内,因此反函数仅针对该范围内的输入定义。你给acos一个大于1的值:没有可能的(实)角的余弦大于1。 -
从数学上讲,您的预期结果是什么?
-
这个具体问题在数值编程中经常出现。投票重新开放。
-
我不明白为什么这个问题被关闭了。我的同事今天有这个确切的问题,并且或多或少地说明了他是如何提出的。
-
我在计算
math.acos(numpy.dot(a,b))时遇到了这个问题,其中numpy.dot返回1.0000000000000002而不是1(由于浮点精度)。有关此问题的解决方案,请参阅 this post。
标签: python