我使用math.acos()函数:Python的数学域错误使用math.acos功能
math.acos(1.0000000000000002)
这将引发一个数学领域的错误。有人能说出原因吗?我得到这个值之前计算,这里这个值给出了错误,但如果我在结尾删除2它不会抛出错误。我没有理由这样做。
我使用math.acos()函数:Python的数学域错误使用math.acos功能
math.acos(1.0000000000000002)
这将引发一个数学领域的错误。有人能说出原因吗?我得到这个值之前计算,这里这个值给出了错误,但如果我在结尾删除2它不会抛出错误。我没有理由这样做。
您正在尝试执行acos
不存在的号码的acos
。
Acos - Arccosine , which is the inverse of cosine function.
acos的输入值范围从-1 <= x <= 1
。
因此,当试图做 - math.acos(1.0000000000000002)
你得到的错误。
如果尝试更高的数字,你会继续得到同样的错误 - math.acos(2)
- 导致 - ValueError: math domain error
因为什么时候是'1.0000000000000002' *“一个不存在的数字”* ?! – jonrsharpe
修正措辞为 - 您正在尝试对'acos'不存在的数字执行'acos'。 –
反余弦仅被定义在-1和1,包容性。除了“不存在”或“未定义”之外,1.0000000000000002的弧余弦不具有数学或语义含义。
当然,由于1的反余弦确实存在,所以acos(1)不会抛出任何错误。
角度的余弦始终在'[-1.0,1.0]'的范围内,所以反函数只针对该范围内的输入定义。你给'acos'一个大于'1'的值:没有可能的(真实的)余弦大于'1'的角度。 –
数学上的预期结果是什么? –
这个特定问题经常出现在数值编程中。投票重新开放。 –