Atan2

En computación e matemáticas, a función atan2 é o arcotanxente de 2 argumentos. Por definición, θ
atan2 ⁡ ( y, x ) {\displaystyle \theta
\operatorname {atan2} (y, x)} é a medida do ángulo (en radiáns, con − π < θ ≤ π {\displaystyle -\pi <\theta \leq \pi } ) entre o eixo x {\displaystyle x} positivo e o raio desde a orixe ata o punto ( x, y ) {\displaystyle (x, \, y)} no plano cartesiano. Equivalentemente, atan2 ⁡ ( y, x ) {\displaystyle \operatorname {atan2} (y, x)} é o argumento (tamén chamado fase ou ángulo) do número complexo x + i y. {\displaystyle x+iy. } (O argumento dunha función e o argumento dun número complexo, mencionados anteriormente, non deben confundirse).
A función atan2 {\displaystyle \operatorname {atan2} } apareceu por primeira vez na linguaxe de programación Fortran en 1961. Orixinalmente, estaba destinada a devolver un valor correcto e inequívoco para o ángulo θ {\displaystyle \theta } na conversión de coordenadas cartesianas ( x, y ) {\displaystyle (x, \, y)} a coordenadas polares ( r, θ ) {\displaystyle (r, \, \theta )}. Se θ
atan2 ⁡ ( y, x ) {\displaystyle \theta
\operatorname {atan2} (y, x)} e r
x 2 + y 2 {\textstyle r
{\sqrt {x^{2}+y^{2}}}}, entón x
r cos ⁡ θ {\displaystyle x
r\cos \theta } e y
r sin ⁡ θ. {\displaystyle y
r\sin \theta. } Se x > 0 {\displaystyle x>0}, a medida desexada do ángulo é θ
atan2 ⁡ ( y, x )
arctan ⁡ ( y / x ). {\textstyle \theta
\operatorname {atan2} (y, x)
\arctan \left(y/x\right). } No entanto, cando x < 0, o ángulo arctan ⁡ ( y / x ) {\displaystyle \arctan(y/x)} é diametralmente oposto ao ángulo desexado, e ± π {\displaystyle \pm \pi } (media volta) debe engadirse para situar o punto no cuadrante correcto. O uso da función atan2 {\displaystyle \operatorname {atan2} } elimina esta corrección, simplificando o código e as fórmulas matemáticas. Definición e cálculo
A función atan2 calcula o argumento principal do número complexo x + i y {\displaystyle x+iy}, que tamén é a parte imaxinaria do valor principal do logaritmo complexo. É dicir, atan2 ⁡ ( y, x )
arg ⁡ ( x + i y )
Im ⁡ log ⁡ ( x + i y ). {\displaystyle \operatorname {atan2} (y, x)
\operatorname {arg} (x+iy)
\operatorname {Im} \operatorname {log} (x+iy). } Engadir calquera múltiplo enteiro de 2 π {\displaystyle 2\pi } (correspondente a voltas completas ao redor da orixe) dá outro argumento do mesmo número complexo, mais o argumento principal defínese como o ángulo representativo único no intervalo ( − π, π ] {\displaystyle (-\pi, \pi ]}.
En termos da función arcotanxente estándar, cuxa imaxe é ( − 12 π, 12 π ) {\displaystyle {\bigl (}{-{\tfrac {1}{2}}\pi }, {\tfrac {1}{2}}\pi {\bigr )}}, atan2 pódese expresar por tramos: atan2 ⁡ ( y, x )
{ arctan ⁡ ( y x ) se x > 0, arctan ⁡ ( y x ) + π se x < 0 e y ≥ 0, arctan ⁡ ( y x ) − π se x < 0 e y < 0, + π 2 se x
0 e y > 0, − π 2 se x
0 e y < 0, non definida se x
0 e y
0. {\displaystyle \operatorname {atan2} (y, x)
{\begin{cases}\arctan \left({\frac {y}{x}}\right)&{\text{se }}x>0, \\[5mu]\arctan \left({\frac {y}{x}}\right)+\pi &{\text{se }}x<0{\text{ e }}y\geq 0, \\[5mu]\arctan \left({\frac {y}{x}}\right)-\pi &{\text{se }}x<0{\text{ e }}y<0, \\[5mu]+{\frac {\pi }{2}}&{\text{se }}x
0{\text{ e }}y>0, \\[5mu]-{\frac {\pi }{2}}&{\text{se }}x
0{\text{ e }}y<0, \\[5mu]{\text{non definida}}&{\text{se }}x
0{\text{ e }}y
0. \end{cases}}} En vez da tanxente, pode ser conveniente usar a media tanxente t
tan ⁡ 12 θ {\displaystyle t
\tan {\tfrac {1}{2}}\theta } como representación dun ángulo, en parte porque o ángulo θ
atan2 ⁡ ( y, x ) {\displaystyle \theta
\operatorname {atan2} (y, \, x)} ten unha media tanxente única, tan ⁡ 12 θ
y x 2 + y 2 + x
x 2 + y 2 − x y. {\displaystyle \tan {\tfrac {1}{2}}\theta
{\frac {y}{\textstyle {\sqrt {x^{2}+y^{2}}}+x}}
{\frac {\textstyle {\sqrt {x^{2}+y^{2}}}-x}{y}}. } (Véxase fórmula da media tanxente). A expresión con y {\displaystyle y} no denominador debe usarse cando x < 0 {\displaystyle x<0} e y ≠ 0 {\displaystyle y\neq 0} para evitar unha posíbel perda de significancia ao calcular x 2 + y 2 + x {\displaystyle \textstyle {\sqrt {x^{2}+y^{2}}}+x}. Cando non se dispón dunha función atan2, pódese calcular como dúas veces o arcotanxente da media tanxente t {\displaystyle t}. É dicir, atan2 ⁡ ( y, x )
2 arctan ⁡ ( y x 2 + y 2 + x )
2 arctan ⁡ ( x 2 + y 2 − x y ). {\displaystyle \operatorname {atan2} (y, x)
2\arctan \left({\frac {y}{\textstyle {\sqrt {x^{2}+y^{2}}}+x}}\right)
2\arctan \left({\frac {\textstyle {\sqrt {x^{2}+y^{2}}}-x}{y}}\right)\, .} Derivada
Como a función atan2 é unha función de dúas variábeis, ten dúas derivadas parciais. Nos puntos onde existen estas derivadas, atan2 é, excepto por unha constante, igual a arctan(y/x). Polo tanto, ∂ ∂ x atan2 ⁡ ( y, x )
∂ ∂ x arctan ⁡ ( y x )
− y x 2 + y 2, ∂ ∂ y atan2 ⁡ ( y, x )
∂ ∂ y arctan ⁡ ( y x )
x x 2 + y 2. {\displaystyle {\begin{aligned}&{\frac {\partial }{\partial x}}\operatorname {atan2} (y, \, x)
{\frac {\partial }{\partial x}}\arctan \left({\frac {y}{x}}\right)
-{\frac {y}{x^{2}+y^{2}}}, \\[5pt]&{\frac {\partial }{\partial y}}\operatorname {atan2} (y, \, x)
{\frac {\partial }{\partial y}}\arctan \left({\frac {y}{x}}\right)
{\frac {x}{x^{2}+y^{2}}}. \end{aligned}}} Así, o gradiente de atan2 vén dado por ∇ atan2 ( y, x )
( − y x 2 + y 2, x x 2 + y 2 ). {\displaystyle \nabla {\text{atan2}}(y, x)
\left({-y \over x^{2}+y^{2}}, \ {x \over x^{2}+y^{2}}\right). } Representando informalmente a función atan2 como a función de ángulo θ(x, y)
atan2(y, x) (que só está definida ata unha constante) obtense a seguinte fórmula para o diferencial total: d θ
∂ ∂ x atan2 ⁡ ( y, x ) d x + ∂ ∂ y atan2 ⁡ ( y, x ) d y
− y x 2 + y 2 d x + x x 2 + y 2 d y. {\displaystyle {\begin{aligned}\mathrm {d} \theta &
{\frac {\partial }{\partial x}}\operatorname {atan2} (y, \, x)\, \mathrm {d} x+{\frac {\partial }{\partial y}}\operatorname {atan2} (y, \, x)\, \mathrm {d} y\\[5pt]& -{\frac {y}{x^{2}+y^{2}}}\, \mathrm {d} x+{\frac {x}{x^{2}+y^{2}}}\, \mathrm {d} y. \end{aligned}}} Aínda que a función atan2 é descontinua ao longo do eixo x negativo, reflectindo o feito de que o ángulo non se pode definir de forma continua, esta derivada está definida de forma continua excepto na orixe, reflectindo o feito de que os cambios infinitesimais (e de feito locais) no ángulo poden definirse en todas as partes agás na orixe. Integrando esta derivada ao longo dun camiño obtense o cambio total no ángulo sobre o camiño, e integrando sobre un bucle pechado dá o índice da curva.
Na linguaxe da xeometría diferencial, esta derivada é unha 1-forma, e é pechada (a súa derivada é cero) mais non exacta (non é a derivada dunha 0-forma, é dicir, unha función), e de feito xera a primeira cohomoloxía de de Rham do plano perforado. Este é o exemplo máis básico desa forma, e é fundamental en xeometría diferencial.
As derivadas parciais de atan2 non conteñen funcións trigonométricas, o que a fai especialmente útil en moitas aplicacións (por exemplo, sistemas embebidos) onde as funcións trigonométricas poden ser custosas de avaliar. Ilustracións
Esta figura mostra os valores de atan2 ao longo de raios seleccionados desde a orixe, etiquetados na circunferencia unitaria. Os valores, en radiáns, móstranse dentro do círculo. O diagrama usa a convención matemática estándar de que os ángulos aumentan en sentido contrario ás agullas do reloxo desde cero ao longo do raio á dereita. Nótese que a orde dos argumentos está invertida; a función atan2(y, x) calcula o ángulo correspondente ao punto (x, y). Esta figura mostra os valores de arctan ⁡ ( tan ⁡ ( θ ) ) {\displaystyle \arctan(\tan(\theta ))} xunto con atan2 ⁡ ( sin ⁡ ( θ ), cos ⁡ ( θ ) ) {\displaystyle \operatorname {atan2} (\sin(\theta ), \cos(\theta ))} para 0 ≤ θ ≤ 2 π {\displaystyle 0\leq \theta \leq 2\pi }. Ambas as funcións son impares e periódicas con períodos π {\displaystyle \pi } e 2 π {\displaystyle 2\pi }, respectivamente, e polo tanto poden completarse facilmente a calquera rexión de valores reais de θ {\displaystyle \theta }. Pódese ver claramente os cortes de rama da función atan2 {\displaystyle \operatorname {atan2} } en θ
π {\displaystyle \theta
\pi }, e da función arctan {\displaystyle \arctan } en θ ∈ { π 2, 3 π 2 } {\displaystyle \theta \in \{{\tfrac {\pi }{2}}, \; {\tfrac {3\pi }{2}}\}}.
As dúas figuras seguintes mostran vistas en 3D de atan2(y, x) e arctan(y/x) sobre unha rexión do plano. Nótese que para atan2(y, x), os raios no plano X/Y que emanan da orixe teñen valores constantes, mais para arctan(y/x) as liñas no plano X/Y que pasan pola orixe teñen valores constantes. Para x > 0, os dous diagramas dan valores idénticos. Identidade de suma e diferenza de ángulos
A suma ou diferenza de múltiples ángulos que se van calcular mediante atan2 {\displaystyle \operatorname {atan2} } pode calcularse alternativamente compoñéndoos como números complexos. Dados dous pares de coordenadas ( x 1, y 1 ) {\displaystyle (x_{1}, y_{1})} e ( x 2, y 2 ) {\displaystyle (x_{2}, y_{2})}, os seus ángulos desde o eixo x {\displaystyle x} positivo compoñeranse (e as lonxitudes multiplicaranse) se se tratan como números complexos e logo multiplícanse, ( x 1 + i y 1 ) ( x 2 + i y 2 )
{\displaystyle (x_{1}+iy_{1})(x_{2}+iy_{2})
{}} ( x 1 x 2 − y 1 y 2 ) + i ( y 1 x 2 + x 1 y 2 ) {\displaystyle (x_{1}x_{2}-y_{1}y_{2})+i(y_{1}x_{2}+x_{1}y_{2})}. O ángulo resultante pódese atopar usando unha única operación {{tmath|\operatorname{atan2} }, sempre que o ángulo resultante estea en ( − π, π ] {\displaystyle (-\pi, \pi ]}: atan2 ⁡ ( y 1, x 1 ) ± atan2 ⁡ ( y 2, x 2 )
atan2 ⁡ ( y 1 x 2 ± x 1 y 2, x 1 x 2 ∓ y 1 y 2 ), {\displaystyle \operatorname {atan2} (y_{1}, x_{1})\pm \operatorname {atan2} (y_{2}, x_{2})
\operatorname {atan2} (y_{1}x_{2}\pm x_{1}y_{2}, x_{1}x_{2}\mp y_{1}y_{2}), } e do mesmo xeito para máis de dous pares de coordenadas. Se o ángulo composto cruza o eixo x {\displaystyle x} negativo (é dicir, excede o intervalo ( − π, π ] {\displaystyle (-\pi, \pi ]} ), entón os cruces poden contarse e engadirse o múltiplo enteiro apropiado de 2 π {\displaystyle 2\pi } ao resultado final para corrixilo.
Esta fórmula de diferenza úsase frecuentemente na práctica para calcular o ángulo entre dous vectores planos, xa que o ángulo resultante está sempre no intervalo ( − π, π ] {\displaystyle (-\pi, \pi ]}.