La función apareció por primera vez en el lenguaje de programación Fortran en 1961. Originalmente estaba destinada a devolver un valor correcto e inequívoco para el ángulo θ al convertir de coordenadas cartesianas ( x , y ) a coordenadas polares ( r , θ ) . Si y , entonces y
Si x > 0 , la medida del ángulo deseado es Sin embargo, cuando x < 0 , el ángulo es diametralmente opuesto al ángulo deseado y se debe sumar ± π (media vuelta ) 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 invoca para encontrar la medida del ángulo entre el eje x y un vector arbitrario en el plano cartesiano , no existe una forma sencilla de indicar una dirección en la mitad izquierda. -plano (es decir, un punto con ). Las medidas de ángulos diametralmente opuestos tienen la misma tangente porque, por lo tanto, la tangente en sí misma no es suficiente para especificar de forma única un ángulo.
Para determinar la medida de un ángulo utilizando la función arcotangente dado un punto o vector, las fórmulas matemáticas o el código de computadora deben manejar múltiples casos; al menos uno para valores positivos de y otro 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 informática científica, y este código es redundante y propenso a errores.
Para remediar esto, los lenguajes de programación de computadoras introdujeron la función atan2 , al menos ya en el lenguaje Fortran IV de la década de 1960. [2] La cantidad atan2( y , x ) es la medida del ángulo entre el eje x y un rayo desde el origen hasta un punto ( x , y ) en cualquier parte del plano cartesiano. Los signos de xey se utilizan para determinar el cuadrante del resultado y seleccionar la rama correcta de la función multivalor Arctan( y / x ) .
La función atan2 ahora se incluye en muchos otros lenguajes de programación y también se encuentra comúnmente en fórmulas matemáticas en toda la ciencia y la ingeniería.
orden de argumento
En 1961, Fortran introdujo la función atan2 con orden de argumentos de modo que el argumento (ángulo de fase) de un número complejo sea. 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 a el orden de los componentes convencionales para números complejos, o como coordenadas. Consulte la sección Definición y cálculo.
Algunos otros lenguajes de programación (ver § Realizaciones de la función en lenguajes informáticos comunes) eligieron el orden opuesto. Por ejemplo , Microsoft Excel usa OpenOffice Calc y Mathematica usa el valor predeterminado de arcotangente de un argumento si se llama con un argumento.
Definición y cálculo
La función atan2 calcula el valor principal de la función argumento aplicada al número complejo x + i y . Es decir, atan2( y , x ) = Pr arg( x + i y ) = Arg( x + i y ) . El argumento podría cambiarse por un múltiplo arbitrario de 2π (correspondiente a una vuelta completa alrededor del origen) sin hacer ninguna diferencia en el ángulo, pero para definir atan2 de forma única se utiliza el valor principal en el rango , es decir, − π < atan2 ( y , x ) ≤ π .
En términos de la función arctan estándar , cuyo rango es (−π/2, π/2) , se puede expresar de la siguiente manera para definir una superficie que no tiene discontinuidades excepto a lo largo de la línea semiinfinita x<0 y=0:
Una expresión compacta con cuatro semiplanos superpuestos es
Una variante de la última fórmula que evita estos errores de redondeo inflados:
Notas:
Esto produce resultados en el rango (−π, π] . [nota 2]
Como se mencionó anteriormente, el valor principal del argumento atan2( y , x ) puede relacionarse con arctan( y / x ) mediante trigonometría. La derivación es la siguiente:Si ( x , y ) = ( r cos θ , r sin θ ) , entonces tan( θ /2) = y / ( r + x ) . Resulta que
Tenga en cuenta que √ x 2 + y 2 + x ≠ 0 en el dominio en cuestión.
Derivado
Como la función atan2 es función de dos variables, tiene dos derivadas parciales . En los puntos donde existen estas derivadas, atan2 es, excepto por una constante, igual a arctan( y / x ) . Por lo tanto, para x > 0 o y ≠ 0 ,
Representar informalmente la función atan2 como la función de ángulo θ ( x , y ) = atan2( y , x ) (que solo se define hasta una constante) produce la siguiente fórmula para el 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 continuamente, esta derivada se define continuamente 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 el origen. Al integrar esta derivada a lo largo de una trayectoria se obtiene el cambio total de ángulo a lo largo de la trayectoria, y al integrarla en un circuito cerrado se obtiene el número de devanado .
En el lenguaje de la geometría diferencial , esta derivada es una forma única y es cerrada (su derivada es cero) pero no exacta (no es la derivada de una forma 0, es decir, una función), y de hecho genera la primera cohomología de De Rham del plano perforado . Este es el ejemplo más básico de tal forma y es fundamental en geometría diferencial.
Las derivadas parciales de atan2 no contienen funciones trigonométricas, lo que las hace particularmente útiles en muchas aplicaciones (por ejemplo, sistemas integrados) donde las funciones trigonométricas pueden ser costosas de evaluar.
Ilustraciones
Esta figura muestra 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 se invierte; 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 en cualquier región de valores reales de . Se pueden ver claramente los cortes de rama de la -función en y de la -función en . [3]
Las dos figuras siguientes muestran vistas en 3D de atan2( y , x ) y arctan( respectivamente).y/X) sobre una región del avión. Tenga en cuenta que para atan2( y , x ) , los rayos en el plano X / Y que emanan del origen tienen valores constantes, pero para arctan(y/X) 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
Las sumas de pueden fusionarse en una sola operación de acuerdo con la siguiente identidad
...siempre que eso .
La prueba implica considerar dos casos, uno donde o y otro donde y .
Sólo consideramos el caso donde o . Para empezar, hacemos las siguientes observaciones:
Para ver (4), tenemos la identidad donde , por lo tanto . Además, dado que para cualquier valor real positivo , entonces si dejamos y entonces tenemos .
De estas observaciones se tienen las siguientes equivalencias:
Corolario : si y son vectores bidimensionales, la fórmula de diferencia se usa con frecuencia en la práctica para calcular el ángulo entre esos vectores con la ayuda de , ya que el cálculo resultante se comporta benigno en el rango y, por lo tanto, puede usarse sin comprobaciones de rango en muchas prácticas. situaciones.
Convenciones este-antihorario, norte y sur, etc.
La función se diseñó originalmente para la convención en matemáticas puras que puede denominarse este en sentido antihorario . Sin embargo, en aplicaciones prácticas, las convenciones en sentido norte y sur suelen ser la norma. En las ciencias atmosféricas, por ejemplo, la dirección del viento se puede calcular utilizando la función con los componentes este y norte del vector del viento como argumentos; [4] el ángulo de azimut solar se puede calcular 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 de las agujas del reloj, y el ángulo del azimut solar utiliza ampliamente las convenciones tanto en el sentido norte como en el sur. [5] Estas diferentes convenciones se pueden realizar intercambiando las posiciones y cambiando los signos de los argumentos x e y de la siguiente manera:
(Convención Este-Antihorario)
(Convención norte en el sentido de las agujas del reloj)
. (Convención en sentido sur en el sentido de las agujas del reloj)
Como ejemplo, sean 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 sentido horario o antihorario a partir de cada uno de los 4 puntos 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 , la forma se utiliza cuando 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 de TI (excepto TI-85 y TI-86 ), la función equivalente se llama R ►Pθ y tiene los argumentos .
En 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 mediante un par de números: x + i y = ( x , y ) .
La convención es utilizada por:
La función C atan2, y la mayoría de las otras implementaciones informáticas, están diseñadas para reducir el esfuerzo de transformar coordenadas cartesianas en polares y, por lo tanto, definir siempre atan2(0, 0). En implementaciones sin cero con signo , o cuando se le dan argumentos cero positivos, 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 :. [11](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 otra de dos parámetros para atan. [12] Sin embargo, tiene muchos más de dos métodos, para permitir una optimización agresiva en el momento de la compilación (consulte la sección "¿Por qué no compila el código Matlab/Python/R/... en Julia?" [13] ).
Para sistemas que implementan cero con signo , infinitos o No es un número (por ejemplo, punto flotante IEEE ), es común implementar extensiones razonables que pueden ampliar el rango de valores producidos para incluir − π y −0 cuando y = −0. Estos también pueden devolver NaN o generar una excepción cuando se les proporciona un argumento NaN.
En el código ensamblador de la arquitectura Intel x86 , se conoce como instrucción (arcotangente parcial de punto flotante). [14] Puede tratar con infinitos y los resultados se encuentran en el intervalo cerrado [−π, π] , por ejemplo = + π /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 [15] y Tan −1 [16] ; estas son variantes en mayúscula del regular arctan y tan −1 . Este uso es consistente con la notación de argumentos complejos , tal 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 soportan 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 libre distribución) disponible en netlib tiene un código fuente que muestra cómo se implementa atan2, incluido el manejo de los diversos valores excepcionales de 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 Santa Cruz de Física de Partículas. Invierno 2011.
^ Organick, Elliott I. (1966). Una imprimación FORTRAN IV . Addison-Wesley. pag. 42. Algunos procesadores también ofrecen la función de biblioteca llamada 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". Laboratorio de Observación de la Tierra NCAR UCAR.
^ Zhang, Taiping; Stackhouse, Paul W.; MacPherson, Bradley; Mikovitz, J. Colleen (2021). "Una fórmula del azimut 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. doi : 10.1016/j.renene.2021.03.047 . S2CID 233631040.
^ "Método Microsoft Excel Atan2". Microsoft.
^ "LibreOffice Calc ATAN2". Libreoffice.org.
^ "Funciones y fórmulas: ayuda de editores de documentos". soporte.google.com .
^ "Lista de funciones trigonométricas de números". Manzana.
^ "Estándar ANSI SQL: 2008". Teradata. Archivado desde el original el 20 de agosto de 2015.
^ "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.
^ Hamburguesa, Wilhelm; Burge, Mark J. (7 de julio de 2010). Principios del procesamiento de imágenes digitales: técnicas fundamentales. Medios de ciencia y negocios de Springer. ISBN978-1-84800-191-6. Consultado el 20 de abril de 2018 a través de Google Books.
^ Glisson, Tildon H. (18 de febrero de 2011). Introducción al análisis y diseño de circuitos. Medios de ciencia y negocios de Springer. ISBN9789048194438. Consultado el 20 de abril de 2018 a través de Google Books.
enlaces externos
ATAN2 Calculadora en línea
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 arcanas 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 .
Notas
^ Asumiendo las definiciones y para cualquier
^ Se puede aplicar la periodicidad del resultado para asignarlo a otro rango deseado, por ejemplo, asignar a [0, 2π) sumando 2π a los resultados negativos.