La función o (de "2- argumento arcotangente ") se define como el ángulo en el plano euclidiano , expresado en radianes , entre el eje x positivo y el rayo al punto ( x , y ) ≠ (0, 0) .
La función apareció por primera vez en el lenguaje de programación Fortran (en la implementación de IBM FORTRAN-IV en 1961). Originalmente se pretendía devolver un valor correcto e inequívoco para el ángulo θ al convertir de coordenadas cartesianas ( x , y ) a coordenadas polares ( r , θ ) .
Equivalentemente, es el argumento (también llamado fase o ángulo ) del número complejo
devuelve un único valor θ tal que - π < θ ≤ π y, para algunos r > 0 ,
Si bien es cierto que , la siguiente equivalencia no siempre se cumple:
Esto solo es válido cuando x > 0 . Cuando x <0 , el ángulo aparente de la expresión anterior apunta en la dirección opuesta al ángulo correcto, y se debe sumar o restar un valor de π (o 180 °) de θ para poner el punto cartesiano ( x , y ) en el cuadrante correcto del plano euclidiano . [1] Esto requiere el conocimiento de los signos de x y y separado, que es información perdida cuando y se divide por x .
Dado que cualquier múltiplo entero de 2 π se puede sumar al ángulo θ sin cambiar x ni y , lo que implica un valor ambiguo para el valor devuelto, el valor principal del ángulo, en el intervalo ( izquierda abierta, derecha cerrada) (- π , π ] se devuelve. θ tiene signo , siendo los ángulos en sentido antihorario positivos y negativos. En otras palabras,está en el intervalo cerrado [0, π ] cuando y ≥ 0 , y en el intervalo abierto (- π , 0) cuando y <0 .
Historia y motivación
La función atan2 se introdujo por primera vez en los lenguajes de programación de computadoras , pero ahora también es común en otros campos de la ciencia y la ingeniería. Se remonta al menos hasta el lenguaje de programación FORTRAN [2] y actualmente se encuentra en muchos lenguajes de programación modernos . Entre estos idiomas son: C s' math.h biblioteca estándar , el de Java biblioteca de matemáticas, de .NET System.Math (utilizable a partir de C # , VB.NET , etc.), el Python módulo matemático, el rubí módulo de Matemáticas, el Go matemáticas paquete [3] y en otros lugares. Además, muchos lenguajes de secuencias de comandos, como Perl , incluyen la atan2(y, x)
función de estilo C.
La función arcotangente de argumento único no puede distinguir entre direcciones diametralmente opuestas. Por ejemplo, el ángulo en sentido antihorario desde el eje x al vector (1, 1) , calculado de la forma habitual como arctan (1/1) , es π / 4 (radianes) o 45 ° . Sin embargo, el ángulo entre el eje x y el vector (−1, −1) parece, por el mismo método, ser arctan (−1 / −1) , nuevamente π / 4 , aunque uno podría esperar las respuestas −3π / 4 (−135 °) o 5π / 4 (225 °). Además, un intento de encontrar el ángulo entre el eje xy los vectores (0, y ), y ≠ 0 requiere la evaluación de arctan ( y / 0) , que falla en la división por cero.
La función atan2 calcula un valor de arco tangente único a partir de dos variables y y x , donde los signos de ambos argumentos se utilizan para determinar el cuadrante del resultado, seleccionando así la rama deseada del arco tangente de y / x , por ejemplo, atan2 ( 1, 1) = π / 4 y atan2 (−1, −1) = −3π / 4 . De manera similar, por ejemplo, atan2 (1, 0) = π / 2 .
Cuando los cálculos se realizan manualmente, las correcciones de cuadrante necesarias y el manejo de excepciones se pueden realizar mediante inspección, pero es más útil tener una sola función que siempre dé un resultado correcto sin ambigüedades. La función atan2 es útil en muchas aplicaciones que involucran vectores en el espacio euclidiano , como encontrar la dirección de un punto a otro. Un uso principal es en rotaciones de gráficos por computadora, para convertir representaciones de matrices de rotación en ángulos de Euler .
Definición y cálculo
La función atan2 calcula el valor principal de la función argumento aplicada al número complejo x + y i . Es decir, atan2 ( y , x ) = Pr arg ( x + y i) = Arg ( x + y i) . El argumento podría cambiarse por un múltiplo arbitrario de 2π (correspondiente a un giro completo alrededor del origen) sin hacer ninguna diferencia en el ángulo, pero para definir atan2 de manera única, se usa el valor principal en el rango , es decir, - π
En términos de la función arctan estándar , cuyo rango es (−π / 2, π / 2) , se puede expresar de la siguiente manera:
Una expresión compacta con cuatro semiplanos superpuestos es
La notación de corchetes Iverson permite una expresión aún más compacta:
[nota 1] |
Fórmula sin construcción condicional aparente :
La siguiente expresión derivada de la fórmula de medio ángulo de tangente también se puede utilizar para definir atan2 :
Esta expresión puede ser más adecuada para uso simbólico que la definición anterior. Sin embargo, no es adecuado para el uso computacional de coma flotante general , ya que el efecto de los errores de redondeo enexpandirse cerca de la región x <0, y = 0 (esto puede incluso llevar a una división de y por cero).
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 ) se puede relacionar con arctan ( y / x ) por 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 una 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 tanto, para x > 0 o y ≠ 0 ,
Por tanto, el gradiente de atan2 viene dado por
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. 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 circuito cerrado da el número de bobinado .
En el lenguaje de la geometría diferencial , esta derivada es una forma , 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 es 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 lo hace particularmente útil en muchas aplicaciones (por ejemplo, sistemas embebidos) 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 se invierte; la función atan2 ( y , x ) calcula el ángulo correspondiente al punto ( x , y ) .
Esta figura muestra los valores de junto con por . Ambas funciones son impares y periódicas con puntos. y , respectivamente, y por lo tanto se puede complementar fácilmente a cualquier región de valores reales de . Uno puede ver claramente los cortes de las ramas del-función en , y de la -función en . [4]
Las dos figuras siguientes muestran vistas en 3D de respectivamente atan2 ( y , x ) y arctan (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
Sumas de puede colapsarse en una sola operación de acuerdo con la siguiente identidad
...siempre que .
La prueba implica considerar dos casos, uno donde o y uno donde y .
Solo consideramos el caso en el que o . Para empezar, hacemos las siguientes observaciones:
- siempre que o .
- , dónde es la función de argumento complejo .
- cuando sea , una consecuencia de la fórmula de Euler .
- .
Para ver (4), tenemos la identidad dónde , por eso . Además, dado que por cualquier valor real positivo , entonces si dejamos y entonces nosotros tenemos .
De estas observaciones tenemos las siguientes equivalencias:
Corolario : si y son vectores bidimensionales, la fórmula de la diferencia se utiliza 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 tanto se puede utilizar sin comprobaciones de rango en muchas situaciones prácticas.
Convenciones Este-antihorario, norte-horario y sur-horario, etc.
La La función fue diseñada originalmente para la convención en matemáticas puras que se puede denominar este-sentido antihorario . En aplicaciones prácticas, sin embargo, las convenciones en el sentido de las agujas del reloj hacia el norte y hacia el sur suelen ser la norma. En las ciencias atmosféricas, por ejemplo, la dirección del viento se puede calcular utilizando lafuncionar con las componentes este y norte del vector viento como argumentos; [5] el ángulo de azimut solar se puede calcular de manera similar con las componentes este y norte del vector solar como argumentos. La dirección del viento se define normalmente en el sentido norte de las agujas del reloj, y el ángulo de azimut solar utiliza ampliamente las convenciones norte-horario y sur-horario. [6] 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-En sentido antihorario)
- (Convención norte-sentido horario)
- . (Convención Sur-Derecha)
Como ejemplo, dejemos y , entonces el formato este-antihorario da , el formato en el sentido de las agujas del reloj da , y el formato en sentido sur de las agujas del reloj da .
Aparentemente, cambiar el signo de los argumentos x y / o y e intercambiar sus posiciones puede crear 8 posibles variaciones de la función y, curiosamente, corresponden a 8 posibles definiciones del ángulo, a saber, en sentido horario o antihorario 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:
- La función C
atan2
, y la mayoría de las otras implementaciones de computadora, están diseñadas para reducir el esfuerzo de transformar coordenadas cartesianas a polares y así definir siempreatan2(0, 0)
. En implementaciones sin cero con signo , o cuando se le 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
atan
función le permite a uno para suministrar opcionalmente la x de coordenadas: . [7](atan y x)
- En Mathematica , la forma se usa cuando la forma de un parámetro proporciona el arco tangente normal (tenga en cuenta que el orden de los argumentos se invierte en relación con la convención utilizada en la discusión anterior). Mathematica clasifica como una expresión indeterminada.
ArcTan[x, y]
ArcTan[0, 0]
- En Microsoft Excel , [8] OpenOffice.org Calc , LibreOffice Calc , [9] Google Spreadsheets , [10] iWork Numbers , [11] y el estándar ANSI SQL: 2008 , [12] la
atan2
función tiene los dos argumentos invertidos. - En el código del ensamblador de la arquitectura Intel , se conoce como instrucción (arcotangente parcial de punto flotante). [13] 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:
atan2
FPATAN
atan2(∞, 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 la mayoría de las calculadoras gráficas de TI (excluyendo la TI-85 y la TI-86 ), la función equivalente se llama R►Pθ y tiene los argumentos invertidos.
- En la TI-85 se llama a la función arg
angle(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 + y i = ( x , y ) . - En escritos matemáticos distintos del código fuente, como en libros y artículos, se han utilizado las notaciones Arctan [14] y Tan −1 [15] ; estas son variantes en mayúscula del arctan regular y tan −1 . Este uso es consistente con la notación de argumento complejo , tal que Atan ( y , x ) = Arg ( x + y i) .
- En las calculadoras HP , trate las coordenadas como un número complejo y luego tome el
ARG
. O<< C->R ARG >> 'ATAN2' STO
. - En calculadoras científicas la función a menudo se puede calcular como el ángulo dado cuando ( x , Y ) se convierten de coordenadas rectangulares a coordenadas polares .
- Los sistemas que admiten matemáticas simbólicas normalmente devuelven un valor indefinido para atan2 (0, 0) o indican de otra manera que ha surgido una condición anormal.
- Para los sistemas que implementan cero con signo , infinitos o Sin número (por ejemplo, punto flotante IEEE ), es común implementar extensiones razonables que pueden extender el rango de valores producidos para incluir - π y −0. Estos también pueden devolver NaN o generar una excepción cuando se les da un argumento NaN.
- Para los sistemas que implementan cero con signo (por ejemplo, punto flotante IEEE ), atan2 (−0, x ) , x <0 plantea el riesgo de devolver el valor - π , en el caso de que la implementación de atan2 (y, x) no funcione. manejar correctamente las entradas −0.
- La biblioteca matemática gratuita FDLIBM (LIBM libremente distribuible) 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 un 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 elegirán calcular atan2 ( y , 1) .
Ver también
- hipot
Referencias
- ^ http://scipp.ucsc.edu/~haber/ph116A/arg_11.pdf
- ^ 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 (opuestos y adyacentes).
- ^ "src / math / atan2.go" . El lenguaje de programación Go . Consultado el 20 de abril de 2018 .
- ^ "Wolf Jung: Mandel, software para dinámicas complejas" . www.mndynamics.com . Consultado el 20 de abril de 2018 .
- ^ Referencia rápida de dirección del viento, Laboratorio de observación de la tierra NCAR UCAR. https://www.eol.ucar.edu/content/wind-direction-quick-reference
- ^ Zhang, T., Stackhouse, PW, Macpherson, B. y Mikovitz, JC, 2021. Una fórmula de 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 función atan2. Energía renovable , 172, 1333-1340. DOI: https://doi.org/10.1016/j.renene.2021.03.047
- ^ "CLHS: Función ASIN, ACOS, ATAN" . LispWorks.
- ^ "Método Microsoft Excel Atan2" . Microsoft.
- ^ "LibreOffice Calc ATAN2" . Libreoffice.org.
- ^ "Lista de funciones de Google Spreadsheets '" .
- ^ "Lista de funciones trigonométricas de números" . Manzana.
- ^ "ANSI SQL: estándar 2008" . Teradata. Archivado desde el original el 20 de agosto de 2015.
- ^ Manual del desarrollador de software de arquitectura Intel IA-32. Volumen 2A: Referencia de 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. ISBN 9781848001916. 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 . Springer Science & Business Media. ISBN 9789048194438. Consultado el 20 de abril de 2018 , a través de 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
- Coordenadas polares y de Arctan
- ¿Qué es 'Arccos'?
Notas
- ^ Por lo tanto
- y
- para cada
- ^ Se puede aplicar la periodicidad del resultado para mapear otro rango deseado, por ejemplo, mapear a [0, 2π) agregando 2π a los resultados negativos.