Диапазон обратных тригонометрических функций в Mathematica - PullRequest
3 голосов
/ 09 августа 2011

Предположим, что все числа действительные . Я пытаюсь получить в Mathematica все значения ArcSin в интервале. В частности, нормальное поведение ArcSin в mathematica состоит в том, что ArcSin[x] находится в интервале [-Pi/2,Pi/2] всякий раз, когда x является действительным в интервале [-1,1].

Однако мне нужно получить все углы в интервале [0,2 Pi] для каждого x, как указано выше. Есть ли способ добиться этого?

Ответы [ 3 ]

5 голосов
/ 09 августа 2011

Неявное в Ответ Леонида - это формула

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 = sin(x) для любого заданного y и диапазона приемлемых x (см. Ответ Леонида, который, каждый раз, когда он вызывается, генерирует вышеуказанное вдоль с дополнительным условием start <= x <= end и выплевывает все решения для x.)

Явная формула для значений x в диапазоне [0, Pi):

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])

Обратите внимание, что первые две строки являются значениями ребер, средняя линия берется из одного семейства вышеуказанных бесконечных решений, а последние две строки взяты из другого семейства решений. Это согласуется с комментарием Леонида:

для положительных значений Sin (входные данные, скажем, x), у вас есть ArcSin[x] и Pi -ArcSin[x], а для отрицательных значений x у вас есть Pi - ArcSin[x] и 2 Pi + ArcSin[x].

Приведенные выше формулы принимают главное значение для ArcSin.


Основная стоимость

В любой период 2 пи есть два решения для Sin[x] == y для данного y. Это видно из графика для Sin[x] (период 2 пи)

sin(x)==y

Чтобы иметь уникальную обратную функцию x = ArcSin[y], вам нужно выбрать, какое именно решение (из двух бесконечных семейств) вы хотите. Mathematica выбирает стандартный диапазон -Pi/2 < x < Pi/2. Этот выбор (по соглашению) является основным значением обратной тригонометрической функции

inverse function

4 голосов
/ 09 августа 2011

Вы можете попробовать что-то вроде следующего:

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 голос
/ 09 августа 2011

Вы не можете.ArcSin, как вы хорошо знаете, является обратной функцией функции Sin, которая не является биективной в диапазоне [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">

...