Python sympy atan未返回准确值

Python sympy atan未返回准确值,python,math,sympy,trigonometry,Python,Math,Sympy,Trigonometry,以下输入,当通过Symphy运行时 返回 1.30899693899575 而不是 5π/12 为什么会这样?如果你怀疑结果可以用π表示,你可以尝试用π作为常量的提示进行简化 >>> nsimplify(atan(sqrt(3) + 2), [pi]) 5*pi/12 顺便说一句,通过查看任何trig函数的求值方法的源代码,您可以看到它们识别出哪些特殊值。事实上,它是:sympy.atan2+sympy.sqrt3.evalf==5*sympy.pi/12.evalf为T

以下输入,当通过Symphy运行时

返回

1.30899693899575
而不是

5π/12

为什么会这样?

如果你怀疑结果可以用π表示,你可以尝试用π作为常量的提示进行简化

>>> nsimplify(atan(sqrt(3) + 2), [pi])
5*pi/12

顺便说一句,通过查看任何trig函数的求值方法的源代码,您可以看到它们识别出哪些特殊值。

事实上,它是:sympy.atan2+sympy.sqrt3.evalf==5*sympy.pi/12.evalf为True。是的,它将值求值为True,但不在以精确形式返回的特殊值列表中。假设存在这样一个列表,则会错误地询问您的问题:您不是在寻找确切的值,而是在寻找特殊形式的值。答案可能是:5π/12被认为不够特别。结果怎么了?5π/12 ≈ 1.3089969389957471826927680763665. 普通算术不返回符号结果,无法重现。atan2+sqrt3为我返回atan2+sqrt3,而不是1.30899693899575。我不知道nsimplify是如何工作的。它是否寻找数值近似值,例如:result/hint=rational,分母不太大?如果是这样,那就有点不满意了;最好有一个精确的结果,因为不难编出可能愚弄启发式的例子。
>>> nsimplify(atan(sqrt(3) + 2), [pi])
5*pi/12