我必须定期计算{sin, cos}(arctan2(x))
。这些表达式有更便宜的等价物,即
import numpy as np
np.random.seed(0)
a, b = np.random.rand(2)
print(np.cos(np.arctan2(b, a)))
print(a / np.sqrt(a ** 2 + b ** 2))
# or a / np.hypot(a, b)
print()
print(np.sin(np.arctan2(b, a)))
print(b / np.hypot(a, b))
0.6087819565465009
0.6087819565465009
0.7933375885355579
0.793337588535558
不幸的是,对于重要的边界情况a == b == 0.0
,备选方案会产生错误并给出nan
。我想避免两者
是否有专门的函数来计算{sin, cos}(arctan2(x))
或者其他更合适的表达式?与上面一样,它需要用于标量和向量输入
解决这个问题的一个可能的技巧是,当你除以0时,只需在值上加一个小ε
相关问题 更多 >
编程相关推荐