2

我目前正在尝试运行涉及三角函数的东西,但我遇到了一个涉及 math.asin 函数的问题(它也适用于 acos 和 atan,但在这些情况下,它对我想要做的事情的影响较小)。这个问题最好用我在其他地方找到的帮助线程中的两篇文章来总结;

对不起,我刚刚又试了一次,发现

a = sin(2)
b = asin(a)
b 不 = 2

a = cos(2)
b = acos(a)
b DOES= 2

因为 y = sin(x) 是一个重复函数,所以对于每个 y 值都有多个 x 值。即 sin(2) = sin(1.14) = 0.909

因此,当您执行 x = asin(y) 时,您只会得到介于 -PI/2 <= x <= PI/2 之间的值

我从数学上理解为什么会这样,但我想知道是否有人可以帮助我找到一个范围内的所有解决方案,而不仅仅是它自动提供的解决方案。谢谢=]

4

3 回答 3

5

让我们考虑范围 [0, 2π)。

对于acos,每个值 x 在 2π - x 处也有另一个可能的值。(想象余弦图,你会看到它。)

对于asin,每个正值 x 在 π - x 处都有另一个可能的值;每个负值在 3π - x 处都有一个可能的值。

随意绘制更多图表以推广到更大的范围。:-)

于 2009-04-23T16:15:26.700 回答
2

acrsin(a) 的所有解决方案将是:

b、pi - b、2pi + b、2pi + (pi - b) 等。

于 2009-04-23T16:15:42.393 回答
1

正如其他人已经详细解释的那样,由于三角函数的(重复)性质,您选择了一个导致 asin() 结果不确定的值。

尽管如此,我只是想指出,由于更一般的浮点精度问题,期望能够在使用浮点的逆运算中得到完全相同的结果可能会失败

使用浮点你不能保证

a == asin(sin(a))

或者

a == (a / b) * b

对于这个问题。小心点。

于 2009-04-23T16:18:20.577 回答