Mathematica中反三角函数的定义域

3
假设所有数字都是实数。我试图在Mathematica中获取在一个区间内ArcSin所有值。特别地,在Mathematica中ArcSin的正常行为是:当x[-1,1]区间内且为实数时,ArcSin[x][-Pi/2,Pi/2]区间内。
然而,我需要获取在[0,2 Pi]区间中每个以上x所有角度。是否有方法可以实现这一点?
3个回答

5

Leonid's answer 中隐含着公式。

In[1]:= Reduce[Sin[x] == y, x]
Out[1]= (x == ArcSin[y] + 2*Pi*C[1] || x == Pi - ArcSin[y] + 2*Pi*C[1]) && Element[C[1], Integers]

the above, but nicer

从以上两个无限解的家族中,您可以找到满足给定 y 值和可接受范围内的 x 值的角度(请参见Leonid的答案,每次调用它时,都会生成上述内容以及额外的条件start < = x < = end,并输出x 的所有解决方案。)

在范围[0, Pi)内的x值的显式公式为

In[2]:= Reduce[Sin[x] == y && 0 <= x < 2 Pi, x]

Out[2]=    (y == -1 && x == (3 Pi)/2) 
        || (y == 1 &&  x == Pi/2) 
        || (-1 < y < 1 && x == Pi - ArcSin[y]) 
        || (-1 < y < 0 && x == ArcSin[y] + 2 Pi) 
        || (0 <= y < 1 && x == ArcSin[y])

请注意,前两行是边界值,中间一行取自上述无限解的一个家族,最后两行合在一起来自另一个解的家族。这与Leonid的评论相符:
对于正的Sin值(如输入x),你有ArcSin[x]和Pi-ArcSin[x],而对于负的x值,你有Pi-ArcSin[x]和2 Pi+ArcSin[x]。
上述公式假定ArcSin的主值。

主值

在任何2 pi周期内,对于给定的ySin[x] == y有两个解。这可以从Sin[x]的图表中看出(它是2 pi周期性的)。

sin(x)==y

为了拥有唯一的反函数x = ArcSin[y],你需要选择你想要的特定解决方案(在两个无限家族中)。 Mathematica 选择标准范围-Pi/2 < x < Pi/2。 这种选择是(按照惯例)反三角函数的主值。

inverse function


4
您可以尝试以下方式:

您可以尝试以下方法:

Clear[getAngles];
getAngles[x_, interval : {start_, end_} : {0, 2 Pi}] :=
Module[{y},
  Quiet@Cases[
     Reduce[#, y] & /@ 
       LogicalExpand[
         Reduce[Reduce[Sin[y] == x, y] && start <= y < end, y]], (y == 
     yrhs_?NumericQ) :> yrhs, {2}]]

例如:

In[90]:= getAngles[0.7]

Out[90]= {0.775397, 2.3662}

In[92]:= {#, Sin[#]} & /@ getAngles[0.7, {0, 4 Pi}]

Out[92]= {{0.775397, 0.7}, {2.3662, 0.7}, {7.05858, 0.7}, {8.64938, 0.7}}

1
@Simon 当然,我本可以使用分析公式。我想这反映了我最近几年从物理学家转变为程序员的过程。 - Leonid Shifrin
好的,我认为你比我更好地理解了OP的问题。显然,只需返回所有满足y=Sin[x]值相同的x值,其中0<=x<=2Pi。 - Sjoerd C. de Vries
@Sjoerd 嗯,据我所理解,OP更关心角度本身而不是你获取它们的特定方式,使用ArcSin(正如您所指出的那样是不可能的)或其他东西。正如@Simon所指出的那样,我的方法过于复杂,因为存在一个简单的解析公式。 - Leonid Shifrin
@Leonid:你的魔法似乎就是我想要的那个。现在我必须纠正后续问题。非常感谢! 不过,这个简单的分析公式是什么? - Dror
@Dror:有关分析公式,请参阅我的答案。基本上有两个无限解族,您只需在特定的角度范围内选择所需的解即可。 - Simon
@Dror 如果我们谈论的是 [0, 2 Pi] 区间,那么:对于正值的 Sin(输入,比如 x),你有 ArcSin[x]Pi - ArcSin[x],而对于负值的 x,你有 Pi - ArcSin[x]2 Pi + ArcSin[x] - Leonid Shifrin

1

不行。如您所知,ArcSin 是正弦函数的反函数,在范围[0,2 Pi]内不是双射的。在此范围内的某些x值产生相同的Sin值(例如Sin [3/4 [Pi]] == Sin [1/4 [Pi]]),因此您无法逆转此过程。

在绘图中,您可以得到最接近的结果:

ParametricPlot[{Sin[x], x}, {x, 0, 2 \[Pi]},
   Ticks -> {Automatic, (Range[0, 8] \[Pi]/4)}]
]

enter image description here

[http://i.stack.imgur.com/Jcqxy.png">


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接