Обратная кроватка в C # - PullRequest
4 голосов
/ 06 мая 2010

Мы знаем, что инверсия tan равна Math.Atan, а как насчет инверсии кроватки?cot(x) определяется как

cot(x)=1/tan(x)

Ответы [ 4 ]

9 голосов
/ 06 мая 2010

См. Обратный котангенс . Для некоторых значений обратное значение будет atan(1/x).

2 голосов
/ 19 марта 2013

Существует два обычно используемых соглашения для обращения Котангента, так как, например, детская кроватка (1) = детская кроватка (1-пи). Важно продумать, какое определение вы хотите использовать.

  1. Пусть arccot ​​(x) соответствует atan (1 / x) со значениями от -pi / 2 до pi / 2. Это дает разрыв при 0 (переходит с -pi / 2 на pi / 2). Это соглашение использовалось в ответе Грега Хью.

    arccot with values between -pi/2 and pi/2, image from Wolfram MathWorld

    public static double Acot(double x)
    {
        return (x < 0 ? -Math.PI/2 : Math.PI/2) - Math.Atan(x);
    }
    

    или

    public static double Acot(double x)
    {
        return x == 0 ? 0 : Math.Atan(1/x);
    }
    
  2. Пусть arccot ​​(x) - непрерывная функция со значениями от 0 до pi. Это соглашение использовалось в ответе Даниэля Мартина.

    arccot with values between 0 and pi, image from Wikipedia

    public static double Acot(double x)
    {
        return Math.PI/2 - Math.Atan(x);
    }
    
2 голосов
/ 07 мая 2010

Другая альтернатива для инверсии котангенса - Math.PI/2 - Math.Atan(x), которая имеет преимущество в том, что работает правильно, когда x равно 0.

0 голосов
/ 19 октября 2016

Вы можете использовать метод Math.Atan2 в качестве обратной кроватки, как показано ниже, без проверки нулевого значения.

var value = Math.Atan2(1,cotValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...