Касательное, состояние - PullRequest
       6

Касательное, состояние

1 голос
/ 03 ноября 2010

Как обойти углы, при которых функция tan (x) не определена, т. Е. X! = Pi / 2 + k * PI?

Я пытался использовать условие:

(x != 0) && (2 * x / M_PI - (int)(2 * x / M_PI ) ) < epsilon,

но оно представляет собой условие

x! = Pi / 2 + k * PI / 2.

Спасибо за вашу помощь.

Ответы [ 3 ]

4 голосов
/ 04 ноября 2010

Это же условие можно использовать для определения того, какие значения cos (x) будут равны нулю.Благодаря этому замечательному факту вы можете просто сделать следующее (псевдокод):

SafeTan(x)
{
    if (cos(x) < epsilon) { /* handle the error */ }
    else { return tan(x); }
}

Редактировать: As In silico указывает, что это результаттригонометрическая идентичность:

tan (x) = sin (x) / cos (x)

В этой форме вы можете видеть, чтонеопределенные значения будут появляться везде, где cos (x) = 0 из-за деления на ноль.

0 голосов
/ 04 ноября 2010

Не использовать тангенс?Это может быть более эффективным, чем использование пары (синус, косинус), но обычно вы можете использовать пару (синус, косинус), не беспокоясь о разрывах.

0 голосов
/ 04 ноября 2010

Как насчет попытки

(x - PI/2) % PI != 0

Найдет проверку значений x, из-за которых tan (x) будет неопределенным.

...