2010-01-06 34 views
5

Estoy tratando de implementar funciones trigonométricas inversas en una aplicación C#. Obviamente, no estoy hablando de simple pecado inverso, cos y tan, ya que todos son proporcionados por la clase de Matemáticas. Lo que estoy buscando es las inversas para seg, cosec y cotan:Implementando funciones inversas trigonométricas en C#

Func<double,double> secant = (d => (1/Math.Cos(d))); 
Func<double,double> cosecant = (d => (1/Math.Sin(d))); 
Func<double,double> cotangent = (d => (Math.Cos(d)/Math.Sin(d))); 

Ahora mi problema es que quiero poner en práctica las inversas de cada uno de estos, pero me parece que no puede encontrar una definición simple de las inversas apropiadas - arcsec, arccsc y ​​arccot ​​- que puedo convertir en código C#.

Así que mi pregunta es si puede (a) señalarme en la dirección de un buen recurso o (b) mostrarme un código de ejemplo para esto?

+1

¿Ha comprobado MathWorld para las fórmulas de los inversos que desea? –

+1

Wikipedia, por supuesto. –

+0

Dependiendo de sus necesidades, es posible que no tenga que hacer cálculos matemáticos serios para hacer eso, por lo tanto, no necesita una 'definición'; solo necesitas preparar una tabla de búsqueda. –

Respuesta

11

Seguramente usted broma:

asec(x) = acos(1/x) 
acsc(x) = asin(1/x) 
acot(x) = atan(1/x) 

:-P

+1

+1, Pretty much: http://en.wikipedia.org/wiki/Intrict_trigonometric_functions – user7116

+0

Sí, pero sí no fue exactamente obvio entre las montañas de otras ecuaciones - http://en.wikipedia.org/wiki/Intrict_trigonometric_functions#Logarithmic_forms – RobV

+0

recuerde también agregar código para evitar el bien conocido problema de dividir por cero – JosephDoggie

0

Para cotangente inversa, usando atan (1/x) no siempre funciona. Por ejemplo, que necesitaba hacer una ecuación bastante complicado:

y = 0,25 * arccot ​​((2.5x/100.000) - 2,1) + 0,26

Cuando la aplicación de la atan (1/x) solución, resulta en un corte cuando (2.5x/100000) - 2.1 es cero, y todos los valores a la izquierda de ese punto están por debajo de los valores correctos en pi/4.

En cambio, usar una implementación como tal proporciona las respuestas exactas para todos los puntos necesarios:

y = 0.25 * ((pi/2) - atan ((2.5x/100000) -2.1) + 0.26

Sugeriría ir a desmos.com/calculator o alguna otra utilidad de gráficos y graficar la función real de arccot, luego comparar varias implementaciones para asegurarse de que está obteniendo lo que desea para todos los valores.

Cuestiones relacionadas