Мы знаем, что инверсия tan равна Math.Atan, а как насчет инверсии кроватки?cot(x) определяется как
tan
Math.Atan
cot(x)
cot(x)=1/tan(x)
См. Обратный котангенс . Для некоторых значений обратное значение будет atan(1/x).
atan(1/x)
Существует два обычно используемых соглашения для обращения Котангента, так как, например, детская кроватка (1) = детская кроватка (1-пи). Важно продумать, какое определение вы хотите использовать.
Пусть arccot (x) соответствует atan (1 / x) со значениями от -pi / 2 до pi / 2. Это дает разрыв при 0 (переходит с -pi / 2 на pi / 2). Это соглашение использовалось в ответе Грега Хью.
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); }
Пусть arccot (x) - непрерывная функция со значениями от 0 до pi. Это соглашение использовалось в ответе Даниэля Мартина.
public static double Acot(double x) { return Math.PI/2 - Math.Atan(x); }
Другая альтернатива для инверсии котангенса - Math.PI/2 - Math.Atan(x), которая имеет преимущество в том, что работает правильно, когда x равно 0.
Math.PI/2 - Math.Atan(x)
x
0
Вы можете использовать метод Math.Atan2 в качестве обратной кроватки, как показано ниже, без проверки нулевого значения.
var value = Math.Atan2(1,cotValue);