function - 为什么没有类似于atan2()的asin2()和acos2()函数?

标签 function math programming-languages trigonometry

根据我的理解,编程语言中存在 atan2() 函数,因为 atan() 本身无法始终确定正确的 theta,因为输出仅限于 -pi/2 至 pi/2。

如果是这种情况,那么同样的问题也适用于 asin()acos(),它们也都有范围限制,那么为什么没有 asin2()acos2() 函数吗?

最佳答案

首先,请注意两个 arctan 函数的语法是 atan(y/x)atan2(y, x)。这种区别很重要,因为通过不执行除法,您可以提供附加信息,最重要的是 xy 的各个符号。如果您知道各个 xy 坐标,则可以找到 atan 函数的特定解(即考虑了(x,y) 所在的象限)。

如果从 tan(θ) = y/x 变为 sin(θ) = y/sqrt(x²+y²),则逆运算 asin 接受 ysqrt(x²+y²) 并将其组合以获得有关角度的一些信息。在这里,我们自己执行除法还是让某个假设的 asin2 函数处理它并不重要。分母始终为正,因此除法后的参数包含的信息与单独的分子和分母包含的信息一样多。 (至少在 IEEE 环境中,除以零会得到正确签名的无穷大。)

如果您知道y坐标和斜边sqrt(x²+y²),那么您就知道角度的正弦,但您无法知道角度本身,因为您无法区分负x 值和正x 值。同样,如果您知道 x 坐标和斜边,您就知道角度的余弦,但无法知道 y 值的符号。

所以 asin2acos2 在数学上是不可行的,至少不是以明显的方式。如果你将某种符号编码到假设中,情况可能会有所不同,但我想不出这种符号会自然出现的情况。

关于function - 为什么没有类似于atan2()的asin2()和acos2()函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29094261/

相关文章:

sql - ORACLE中获取select语句中字段的数据类型

javascript - 如何使用函数(for-loop)从按钮获取用户输入以显示在文本框中?

c - C 中的算术运算符和函数调用

java - 用 Java 实现一门语言

java - Java 中不存在单一类路径问题的语言

windows - Windows 开箱即用支持的语言

function - Lua 5.1.4 math.random 实际上不是随机的

php - 从字符串调用 php 函数(带参数)

algorithm - 按顺序生成数字(幂)序列

c - C 如何计算 sin() 和其他数学函数?