La función apareció por primera vez en el lenguaje de programación Fortran en 1961. Originalmente, su propósito era devolver un valor correcto e inequívoco para el ángulo al convertir de coordenadas cartesianas a coordenadas polares . Si y , entonces y
Si , la medida del ángulo deseado es Sin embargo, cuando x < 0 , el ángulo es diametralmente opuesto al ángulo deseado, y (media vuelta ) debe agregarse para colocar el punto en el cuadrante correcto . [1] El uso de la función elimina esta corrección, simplificando el código y las fórmulas matemáticas.
Motivación
La función arcotangente ordinaria de un solo argumento solo devuelve medidas de ángulos en el intervalo , y cuando se la invoca para encontrar el ángulo de dirección desde el origen hasta un punto arbitrario en el plano cartesiano , arrojará resultados incorrectos cuando el punto esté en el semiplano izquierdo . Las medidas de ángulos diametralmente opuestos tienen la misma tangente porque
Para determinar completamente el ángulo de dirección desde el origen dado un punto utilizando la función arcotangente, las fórmulas matemáticas o el código de computadora deben manejar múltiples casos; al menos uno para valores positivos de y uno para valores negativos de , y a veces casos adicionales cuando es negativo o una coordenada es cero. Encontrar medidas de ángulos y convertir coordenadas cartesianas a polares son comunes en la computación científica, y este código es redundante y propenso a errores.
Para ahorrarles problemas a los programadores, los lenguajes de programación de computadoras introdujeron la función atan2 , al menos tan temprano como el lenguaje Fortran IV de la década de 1960. [2] La cantidad es la medida del ángulo entre el eje y un rayo desde el origen hasta un punto en cualquier lugar del plano cartesiano. Los signos de x y se utilizan para determinar el cuadrante del resultado y seleccionar la rama correcta de la función multivalor .
La función atan2 ahora está incluida en muchos otros lenguajes de programación y también se encuentra comúnmente en fórmulas matemáticas en el campo de la ciencia y la ingeniería.
Orden de argumentos
En 1961, Fortran introdujo la función atan2 con orden de argumento de modo que el argumento (ángulo de fase) de un número complejo es Esto sigue el orden de izquierda a derecha de una fracción escrita de modo que para valores positivos de Sin embargo, esto es lo opuesto al orden de componentes convencional para números complejos, o como coordenadas Consulte la sección Definición y cálculo.
Otros lenguajes de programación (ver § Realizaciones de la función en lenguajes informáticos comunes) escogieron el orden opuesto. Por ejemplo, Microsoft Excel utiliza OpenOffice Calc y Mathematica utiliza el valor predeterminado de arcotangente de un argumento si se llama con un argumento.
Sumando cualquier múltiplo entero de (correspondiente a vueltas completas alrededor del origen) se obtiene otro argumento del mismo número complejo, pero el argumento principal se define como el único ángulo representativo en el intervalo .
En términos de la función arcotangente estándar, cuya imagen es , atan2 se puede expresar por partes :
En lugar de la tangente, puede ser conveniente utilizar la semitangente como representación de un ángulo, en parte porque el ángulo tiene una semitangente única ,
(Ver fórmula de la mitad del ángulo tangente ). La expresión con en el denominador debe usarse cuando y para posible pérdida de significancia en el cálculo . Cuando una función atan2 no está disponible, se puede calcular como el doble de la arcotangente de la mitad de la tangente .
Derivado
Como la función atan2 es una función de dos variables, tiene dos derivadas parciales . En los puntos donde existen estas derivadas, atan2 es, salvo una constante, igual a arctan( y / x ) . Por lo tanto, para x > 0 o y ≠ 0 ,
Por lo tanto, el gradiente de atan2 viene dado por
Representando informalmente la función atan2 como la función angular θ ( x , y ) = atan2( y , x ) (que sólo está definida hasta una constante) se obtiene la siguiente fórmula para la diferencial total :
Si bien la función atan2 es discontinua a lo largo del eje x negativo , lo que refleja el hecho de que el ángulo no se puede definir de forma continua, esta derivada se define de forma continua excepto en el origen, lo que refleja el hecho de que los cambios infinitesimales (y, de hecho, locales) en el ángulo se pueden definir en todas partes excepto en el origen. La integración de esta derivada a lo largo de una trayectoria da el cambio total en el ángulo sobre la trayectoria, y la integración sobre un bucle cerrado da el número de vueltas .
Las derivadas parciales de atan2 no contienen funciones trigonométricas, lo que lo hace particularmente útil en muchas aplicaciones (por ejemplo, sistemas integrados) donde las funciones trigonométricas pueden ser costosas de evaluar.
Ilustraciones
Esta figura muestra los valores de atan2 a lo largo de rayos seleccionados desde el origen, etiquetados en el círculo unitario. Los valores, en radianes, se muestran dentro del círculo. El diagrama utiliza la convención matemática estándar de que los ángulos aumentan en sentido antihorario desde cero a lo largo del rayo hacia la derecha. Tenga en cuenta que el orden de los argumentos está invertido; la función atan2( y , x ) calcula el ángulo correspondiente al punto ( x , y ) .
Esta figura muestra los valores de junto con para . Ambas funciones son impares y periódicas con períodos y , respectivamente, y por lo tanto pueden complementarse fácilmente con cualquier región de valores reales de . Se pueden ver claramente los cortes de ramificación de la función en , y de la función en . [3]
Las dos figuras siguientes muestran vistas 3D de atan2( y , x ) y arctan( y/incógnita ) sobre una región del plano. Nótese que para atan2( y , x ) , los rayos en el plano X / Y que emanan del origen tienen valores constantes, pero para arctan( y/incógnita ) las líneas en el plano X / Y que pasan por el origen tienen valores constantes. Para x > 0 , los dos diagramas dan valores idénticos.
Identidad de suma y diferencia de ángulos
La suma o diferencia de ángulos múltiples que se calcularán mediante se puede calcular alternativamente componiéndolos como números complejos . Dados dos pares de coordenadas y , sus ángulos desde el eje positivo se compondrán (y sus longitudes se multiplicarán) si se tratan como números complejos y luego se multiplican juntos, . El ángulo resultante se puede encontrar utilizando una sola operación, siempre que el ángulo resultante se encuentre en :
y lo mismo para más de dos pares de coordenadas. Si el ángulo compuesto cruza el eje negativo ( es decir, excede el rango ) , entonces se pueden contar los cruces y agregar el múltiplo entero apropiado de al resultado final para corregirlo.
Esta fórmula de diferencia se utiliza con frecuencia en la práctica para calcular el ángulo entre dos vectores planos , ya que el ángulo resultante siempre está en el rango .
Convenciones de este a antihorario, norte a horario y sur a horario, etc.
La función fue diseñada originalmente para la convención en matemáticas puras que puede denominarse este-antihorario . Sin embargo, en aplicaciones prácticas, las convenciones norte-horario y sur-horario suelen ser la norma. En ciencias atmosféricas, por ejemplo, la dirección del viento puede calcularse utilizando la función con los componentes este y norte del vector del viento como argumentos; [4] el ángulo azimutal solar puede calcularse de manera similar con los componentes este y norte del vector solar como argumentos. La dirección del viento normalmente se define en el sentido norte-horario, y el ángulo azimutal solar utiliza ampliamente las convenciones norte-horario y sur-horario. [5] Estas diferentes convenciones pueden realizarse intercambiando las posiciones y cambiando los signos de los argumentos x e y de la siguiente manera:
(Convención en sentido antihorario al este)
(Convención en el sentido de las agujas del reloj)
(Convención en sentido horario hacia el sur)
A modo de ejemplo, sea y , entonces el formato este-antihorario da , el formato norte-horario da , y el formato sur-horario da .
Cambiar el signo de los argumentos x y/o y y/o intercambiar sus posiciones puede crear 8 posibles variaciones de la función y, curiosamente, corresponden a 8 posibles definiciones del ángulo, es decir, en el sentido de las agujas del reloj o en el sentido contrario a las agujas del reloj a partir de cada una de las 4 direcciones cardinales : norte, este, sur y oeste.
Realizaciones de la función en lenguajes informáticos comunes
La realización de la función difiere de un lenguaje informático a otro:
En Mathematica , se utiliza la forma donde la forma de un parámetro proporciona el arcotangente normal. Mathematica clasifica como una expresión indeterminada.ArcTan[x, y]ArcTan[0, 0]
En la mayoría de las calculadoras gráficas TI (excluyendo la TI-85 y la TI-86 ), la función equivalente se llama R►Pθ y tiene los argumentos .
En la TI-85 se llama a la función argangle(x,y) y, aunque parece tomar dos argumentos, en realidad solo tiene un argumento complejo que se denota por un par de números: x + i y = ( x , y ) .
La convención es utilizada por:
La función C atan2y la mayoría de las demás implementaciones informáticas están diseñadas para reducir el esfuerzo de transformar coordenadas cartesianas en polares y, por lo tanto, siempre definen atan2(0, 0). En las implementaciones sin cero con signo , o cuando se dan argumentos de cero positivo, normalmente se define como 0. Siempre devolverá un valor en el rango [−π, π] en lugar de generar un error o devolver un NaN (no es un número).
En Common Lisp , donde existen argumentos opcionales, la atanfunción permite proporcionar opcionalmente la coordenada x : . [10](atan yx)
En Julia , la situación es similar a Common Lisp: en lugar de atan2, el lenguaje tiene una forma de un parámetro y una forma de dos parámetros para atan. [11] Sin embargo, tiene muchos más de dos métodos, para permitir una optimización agresiva en tiempo de compilación (consulte la sección "¿Por qué no compila el código de Matlab/Python/R/… en Julia?" [12] ).
En el caso de los sistemas que implementan ceros con signo , infinitos o que no son números (por ejemplo, punto flotante IEEE ), es común implementar extensiones razonables que puedan extender el rango de valores producidos para incluir − π y −0 cuando y = −0. Estas también pueden devolver NaN o generar una excepción cuando se les da un argumento NaN.
En el código ensamblador de la arquitectura Intel x86 , se conoce como instrucción (arcotangente parcial de punto flotante). [13] Puede manejar infinitos y los resultados se encuentran en el intervalo cerrado [−π, π] , p. ej. = + π /2 para x finito . En particular, se define cuando ambos argumentos son cero:atan2FPATANatan2(∞, x)FPATAN
atan2(+0, +0)= +0;
atan2(+0, −0)= + π ;
atan2(−0, +0)= −0;
atan2(−0, −0)= −π .
Esta definición está relacionada con el concepto de cero con signo .
En escritos matemáticos distintos del código fuente, como libros y artículos, se han utilizado las notaciones Arctan [14] y Tan −1 [15] ; son variantes en mayúscula de las notaciones regulares arctan y tan −1 . Este uso es coherente con la notación de argumento complejo , de modo que Atan( y , x ) = Arg( x + i y ) .
En las calculadoras HP , trate las coordenadas como un número complejo y luego tome el ARG. O << C->R ARG >> 'ATAN2' STO.
Los sistemas que admiten matemáticas simbólicas normalmente devuelven un valor indefinido para atan2(0, 0) o señalan de otro modo que ha surgido una condición anormal.
La biblioteca matemática gratuita FDLIBM (LIBM de distribución libre) disponible en netlib tiene un código fuente que muestra cómo se implementa, atan2incluido el manejo de los diversos valores excepcionales IEEE.
Para sistemas sin multiplicador de hardware, la función atan2 se puede implementar de manera numéricamente confiable mediante el método CORDIC . Por lo tanto, las implementaciones de atan( y ) probablemente optarán por calcular atan2( y , 1) .
^ "El argumento de un número complejo" (PDF) . Instituto de Física de Partículas de Santa Cruz. Invierno de 2011.
^ Organick, Elliott I. (1966). A FORTRAN IV Primer . Addison-Wesley. pág. 42. Algunos procesadores también ofrecen la función de biblioteca denominada ATAN2, una función de dos argumentos (opuesto y adyacente).
^ "Wolf Jung: Mandel, software para dinámicas complejas". www.mndynamics.com . Consultado el 20 de abril de 2018 .
^ "Referencia rápida de la dirección del viento". NCAR UCAR Earth Observing Laboratory.
^ Zhang, Taiping; Stackhouse, Paul W.; MacPherson, Bradley; Mikovitz, J. Colleen (2021). "Una fórmula de acimut solar que hace innecesario el tratamiento circunstancial sin comprometer el rigor matemático: configuración matemática, aplicación y extensión de una fórmula basada en el punto subsolar y la función atan2". Energía renovable . 172 : 1333–1340. Código Bibliográfico :2021REne..172.1333Z. doi : 10.1016/j.renene.2021.03.047 . S2CID 233631040.
^ "Método Atan2 de Microsoft Excel". Microsoft. 14 de junio de 2014.
^ "LibreOffice Calc ATAN2". Libreoffice.org.
^ "Funciones y fórmulas – Ayuda para editores de documentos". support.google.com .
^ "Lista de funciones trigonométricas de números". Apple.
^ "CLHS: Función ASIN, ACOS, ATAN". LispWorks.
^ "Matemáticas · El lenguaje Julia". docs.julialang.org .
^ "Preguntas frecuentes · El lenguaje Julia". docs.julialang.org .
^ Manual del desarrollador de software de arquitectura Intel IA-32. Volumen 2A: Referencia del conjunto de instrucciones, AM, 2004.
^ Burger, Wilhelm; Burge, Mark J. (7 de julio de 2010). Principios del procesamiento de imágenes digitales: técnicas fundamentales. Springer Science & Business Media. ISBN978-1-84800-191-6. Recuperado el 20 de abril de 2018 – vía Google Books.
^ Glisson, Tildon H. (18 de febrero de 2011). Introducción al análisis y diseño de circuitos. Springer Science & Business Media. ISBN9789048194438. Recuperado el 20 de abril de 2018 – vía Google Books.
Enlaces externos
Calculadora en línea ATAN2
Java 1.6 SE JavaDoc
atan2 en Everything2
Solución PicBasic Pro atan2 para un PIC18F
Otras implementaciones/código para atan2
"Rumbo entre dos puntos". Archivado desde el original el 18 de noviembre de 2020. Consultado el 21 de febrero de 2022 .
«Coordenadas arctanes y polares». Archivado desde el original el 18 de octubre de 2018. Consultado el 21 de febrero de 2022 .
"¿Qué es 'Arccos'?". Archivado desde el original el 6 de septiembre de 2017. Consultado el 21 de febrero de 2022 .