|
|
1
1
好吧,所以我认为你遇到了这个问题,因为SymPy没有立即将你给它的输入识别为特殊值。当你给它输入1/2或1/1时,它只会想“啊,一个十进制数字,让我给你一个十进制的答案。”它甚至不会检查你给它的十进制是否代表π的整数或类似的东西。 另一方面,当你使用sqrt()时,它就像一个标志,让SymPy说“嘿,这不仅仅是一个旧数字,它是一个特殊的数字!”因为sqrt(1)在数学上比1更“复杂”,所以SymPy停下来想“等一下,我最好在输出十进制答案之前检查一下这是否是一个特别的值。”,它会检查这些值是否是特殊值(它们是,对应于pi/3和pi/4),因此它会根据pi给出答案。 这有点像我问你“2的一半是什么?”你说“1”,但如果我问你”4的平方根的一半是多少?“你可能会想”等等,4的平方根就是2,哦,2的一半就是1!“这是同一个答案,但我问这个问题的方式让你对它的看法有点不同。 |
|
|
2
0
https://stackoverflow.com/users/22159264/nail-steiger 是正确的,我用以下内容验证了他的说法:
我提出这个问题的动机是得到一个简单的函数,将复数从笛卡尔形式转换为极坐标形式(也许这已经存在于某个库中)。因此,诀窍是始终使用sympy.sqrt(1)来强制atan的参数为sympy.core.numbers.*类型,而不是float或numpy.float64。以下是工作代码:
|
|
Fyodor · 在C中使用sin和cos计算数学表达式不正确? 2 年前 |
|
Cjmarkham · 基于已知斜边和相邻的[闭合]获得θ 2 年前 |
|
|
Quiche31 · 符号反三角函数并不总是返回期望的分数 3 年前 |
|
|
Jack Wild · 三名JS直接在摄像机前获得地面位置 8 年前 |
|
|
urukh · Arduino波发生器 8 年前 |
|
|
Michael K. · 如何以java度求反余弦 8 年前 |