Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

atan2 ( yx ) возвращает угол θ между лучом в точку ( xy ) и положительной осью x , ограниченный (- π , π ] .
График более

Функции или (от «2- аргумента арктангенс ») определяется как угол в евклидовой плоскости , заданной в радианах , между положительной х осью и лучом в точке ( ху ) ≠ (0, 0) .

Функция впервые появилась в языке программирования Fortran (в реализации IBM FORTRAN-IV в 1961 году). Первоначально он был предназначен для возврата правильного и однозначного значения для угла θ при преобразовании декартовых координат ( xy ) в полярные координаты ( rθ ) .

Эквивалентно, это аргумент (также называемый фазой или углом ) комплексного числа

возвращает одно значение & thetas ; таким образом, что - л < & thetas ; & le ; л и для некоторого г > 0 ,

Хотя это правда , следующая эквивалентность не всегда выполняется:

Это справедливо только тогда, когда x > 0 . Когда x <0 , угол, видимый из приведенного выше выражения, указывает в направлении, противоположном правильному углу, и значение π (или 180 °) должно быть либо добавлено, либо вычтено из θ, чтобы поставить декартову точку ( xy ) в правильный квадрант евклидовой плоскости . [1] Это требует знания знаков x и y по отдельности, что означает потерю информации при делении y на x .

Поскольку любое целое число, кратное 2 π, может быть добавлено к углу θ без изменения x или y , что подразумевает неоднозначное значение для возвращаемого значения, возвращается главное значение угла в интервале (- π , π ] . Θ имеет знак , при этом углы против часовой стрелки являются положительными, а по часовой стрелке - отрицательными. В частности, находится в интервале [0, π ], когда y ≥ 0 , и в (- π , 0), когда y <0 .

История и мотивация [ править ]

График касательной функции от - π до + π с соответствующими знаками y / x . Зеленые стрелки указывают на результаты atan2 (−1, −1) и atan2 (1, 1).

Функция atan2 была впервые представлена ​​в языках программирования , но теперь она также широко используется в других областях науки и техники. Он восходит, по крайней мере, к языку программирования FORTRAN [2] и в настоящее время встречается во многих современных языках программирования . Среди этих языков: C «s math.h стандартную библиотеку , та Java библиотеки Math, .NET - х System.Math (пригодная для использования C # , VB.NET , и т.д.), Python модуль по математике, то рубин модуль Math, в Go математике пакет [3]и в другом месте. Кроме того, многие языки сценариев, такие как Perl , включают atan2(y, x)функцию стиля C.

Функция арктангенса с одним аргументом не может различать диаметрально противоположные направления. Например, угол против часовой стрелки от оси x к вектору (1, 1) , вычисляемый обычным способом как arctan (1/1) , равен π / 4 (радианы) или 45 ° . Однако угол между осью x и вектором (−1, −1) оказывается, тем же самым методом, как arctan (−1 / −1) , снова π / 4 , даже если можно было ожидать ответов −3π / 4 (−135 °) или 5π / 4 (225 °). Кроме того, попытка найти угол между xоси и векторов (0,  y ), y ≠ 0 требует вычисления arctan ( y / 0) , которое не выполняется при делении на ноль.

Atan2 функция вычисляет один уникальный арктангенс значение из двух переменных Y и х , где знаки обоих аргументов используются для определения квадранта результата, тем самым выбирая нужную ветвь арктангенса в г / х , например, atan2 ( 1, 1) = π / 4 и atan2 (−1, −1) = −3π / 4 . Аналогично, например, atan2 (1, 0) = π / 2 .

Когда вычисления выполняются вручную, необходимые квадрантные корректировки и обработка исключений могут быть выполнены путем проверки, но более полезно иметь единственную функцию, которая всегда дает однозначно правильный результат. Функция atan2 полезна во многих приложениях, связанных с векторами в евклидовом пространстве , например, для определения направления от одной точки к другой. Основное использование - вращение компьютерной графики для преобразования представлений матрицы вращения в углы Эйлера .

Определение и вычисление [ править ]

Функция atan2 вычисляет главное значение от аргумента функции применяется к комплексному числу х  +  у я . То есть atan2 ( yx ) = Pr arg ( x  +  y i) = Arg ( x  +  y i) . Аргумент может быть изменен на произвольное кратное (соответствует полному повороту вокруг начала координат) без какого-либо изменения угла, но для однозначного определения atan2 используется главное значение в диапазоне , то есть - π<atan2 ( yx ) ≤ π .

В терминах стандартной функции арктангенса , диапазон которой равен (−π / 2, π / 2) , ее можно выразить следующим образом:

Компактное выражение с четырьмя перекрывающимися полуплоскостями:

Айверсон кронштейн обозначение позволяет еще более компактное выражение:

Формула без явной условной конструкции :

Следующее выражение, полученное из формулы тангенциального полуугла, также может использоваться для определения atan2 :

Это выражение может быть более подходящим для символического использования, чем определение выше. Однако он не подходит для общего использования в вычислениях с плавающей запятой , так как эффект ошибок округления расширяется вблизи области x <0, y = 0 (это может даже привести к делению y на ноль).

Вариант последней формулы, позволяющий избежать этих завышенных ошибок округления:

Вывод главного значения аргумента относится к этой цифре.

Примечания:

  • Это дает результаты в диапазоне (−π, π] . [Примечание 2]
  • Как упоминалось выше, главное значение аргумента atan2 ( yx ) может быть связано с arctan ( y / x ) тригонометрией. Вывод происходит следующим образом:
Если ( xy ) = ( r cos  θ , r sin  θ ) , то tan ( θ / 2) = y / ( r + x ) . Следует, что
Обратите внимание, что x 2 + y 2 + x ≠ 0 в рассматриваемой области.

Производная [ править ]

Поскольку функция atan2 является функцией двух переменных, у нее есть две частные производные . В точках, где существуют эти производные, atan2 , за исключением константы, равно arctan ( y / x ) . Следовательно , при х > 0 или у ≠ 0 ,

Таким образом, градиент atan2 определяется выражением

Неформальное представление функции atan2 как угловой функции θ ( x , y ) = atan2 ( y , x ) (которая определяется только с точностью до константы) дает следующую формулу для полного дифференциала :

В то время как функция atan2 является разрывной вдоль отрицательной оси x , отражая тот факт, что угол не может быть определен непрерывно, эта производная определяется непрерывно, за исключением начала координат, что отражает тот факт, что бесконечно малые (и даже локальные) изменения угла могут быть определены везде. кроме происхождения. Интегрирование этой производной по траектории дает общее изменение угла по траектории, а интегрирование по замкнутому контуру дает номер намотки .

На языке дифференциальной геометрии эта производная является одноформной , и она замкнута (ее производная равна нулю), но не является точной (это не производная 0-формы, т. Е. Функции), и фактически она генерирует первый когомологий де Рама из проколотой плоскости . Это самый простой пример такой формы, и он является фундаментальным в дифференциальной геометрии.

Частные производные atan2 не содержат тригонометрических функций, что делает его особенно полезным во многих приложениях (например, встроенных системах), где тригонометрические функции могут быть дорогостоящими для вычисления.

Иллюстрации [ править ]

atan2 для выбранных лучей

На этом рисунке показаны значения atan2 вдоль выбранных лучей от начала координат, отмеченные на единичной окружности. Значения в радианах показаны внутри круга. На диаграмме используется стандартное математическое соглашение, согласно которому углы увеличиваются против часовой стрелки от нуля вдоль луча вправо. Обратите внимание, что порядок аргументов обратный; функция atan2 ( y , x ) вычисляет угол, соответствующий точке ( x , y ) .

Сравнение функций arctan и atan2

На этом рисунке показаны значения вместе с для . Обе функции являются нечетными и периодическими с периодами и , соответственно, и поэтому могут быть легко дополнены к любой области реальных значений . Можно четко видеть разрезы на -функции на , и из -функции в . [4]

На двух рисунках ниже показаны трехмерные изображения atan2 ( y , x ) и arctan (y/Икс) над областью плоскости. Обратите внимание , что для atan2 ( у , х ) , лучи в Х / Y - плоскости , исходящие из начала координат имеют постоянные значения, но для арктангенса (y/Икс) линии на плоскости X / Y, проходящие через начало координат, имеют постоянные значения. Для x > 0 две диаграммы дают одинаковые значения.


Сумма углов и тождество разностей [ править ]

Суммы могут быть свернуты в одну операцию в соответствии со следующим идентификатором

... при условии, что .

Доказательство включает рассмотрение двух случаев: где или, а во втором - где и .

Мы рассматриваем только случай, когда или . Для начала сделаем следующие наблюдения:

  1. при условии, что или .
  2. , где - функция комплексного аргумента .
  3. всякий раз , как следствие формулы Эйлера .
  4. .

Чтобы увидеть (4), имеем тождество где , следовательно . Кроме того, поскольку для любого положительного реального значения , то если мы позволим, и тогда у нас есть .

Из этих наблюдений есть следующие эквиваленты:

Следствие : если и являются двумерными векторами, формула разности часто используется на практике для вычисления угла между этими векторами с помощью , поскольку результирующее вычисление ведет себя мягко в диапазоне и, таким образом, может использоваться без проверки диапазона во многих практических случаях. ситуации.

Реализация функции на общих компьютерных языках [ править ]

Реализация функции отличается от одного компьютерного языка к другому:

  • Функция C atan2и большинство других компьютерных реализаций предназначены для уменьшения усилий по преобразованию декартовых координат в полярные и поэтому всегда определяют atan2(0, 0). В реализациях без подписанного нуля или при наличии положительных нулевых аргументов он обычно определяется как 0. Он всегда будет возвращать значение в диапазоне [-π, π] вместо того, чтобы вызывать ошибку или возвращать NaN (не число).
  • В Common Lisp , где существуют дополнительные аргументы, то atanфункция позволяет при необходимости поставить х координат: . [5](atan y x)
  • В системе Mathematica используется форма, в которой форма с одним параметром предоставляет нормальный арктангенс (обратите внимание, что порядок аргументов обратный по сравнению с соглашением, используемым в обсуждении выше). Mathematica классифицирует как неопределенное выражение.ArcTan[x, y]ArcTan[0, 0]
  • В Microsoft Excel , [6] OpenOffice.org Calc , LibreOffice Calc , [7] Таблицы Google , [8] iWork Numbers , [9] и ANSI SQL: стандарт 2008 , [10]atan2 функция имеет два аргумента обратное.
  • В Intel Architecture ассемблерный код , atan2известен как FPATAN( с плавающей точкой частичного арктангенса) инструкции. [11] Он может иметь дело с бесконечностями, и результаты лежат в закрытом интервале [−π, π] , например = + π / 2 для конечного x . В частности, определяется, когда оба аргумента равны нулю:atan2(∞, x)FPATAN
    atan2(+0, +0) = +0;
    atan2(+0, −0)= + π ;
    atan2(−0, +0) = −0;
    atan2(−0, −0)= - π .
Это определение связано с концепцией нуля со знаком .
  • На большинстве графических калькуляторов TI (за исключением TI-85 и TI-86 ) эквивалентная функция называется R►Pθ и имеет обратные аргументы.
  • На TI-85 вызывается функция arg,angle(x,y) и хотя она, кажется, принимает два аргумента, на самом деле она имеет только один комплексный аргумент, который обозначается парой чисел: x + y i = ( x , y ) .
  • В математических сочинениях, отличных от исходного кода, таких как книги и статьи, используются обозначения Arctan [12] и Tan −1 [13] ; это варианты обычного arctan и tan −1 с заглавной буквы . Это использование согласуется с обозначением сложных аргументов , так что Atan ( y , x ) = Arg ( x + y i) .
  • На калькуляторах HP считайте координаты комплексным числом, а затем принимайте ARG. Или << C->R ARG >> 'ATAN2' STO.
  • На научных калькуляторах функцию часто можно вычислить как угол, полученный при преобразовании ( x , y ) из прямоугольных координат в полярные .
  • Системы, поддерживающие символьную математику, обычно возвращают неопределенное значение для atan2 (0, 0) или иным образом сигнализируют о возникновении ненормального состояния.
  • Для систем, реализующих знаковый ноль , бесконечность или не число (например, с плавающей запятой IEEE ), обычно реализуются разумные расширения, которые могут расширять диапазон создаваемых значений, включая - π и -0. Они также могут возвращать NaN или вызывать исключение при задании аргумента NaN.
  • Для систем, реализующих знаковый ноль (например, с плавающей запятой IEEE ), atan2 (−0, x ) , x <0 представляет риск возврата значения - π , в случае, когда реализация atan2 (y, x) не работает. правильно обрабатывать -0 входов.
  • Бесплатная математическая библиотека FDLIBM (Freely Distributable LIBM), доступная в netlib, имеет исходный код, показывающий, как она реализуется, atan2включая обработку различных исключительных значений IEEE.
  • Для систем без аппаратного умножителя функция atan2 может быть реализована численно надежным способом с помощью метода CORDIC . Таким образом, реализации atan ( y ) , вероятно, выберут для вычисления atan2 ( y , 1) .

См. Также [ править ]

  • гипотеза

Ссылки [ править ]

  1. ^ http://scipp.ucsc.edu/~haber/ph116A/arg_11.pdf
  2. ^ Organick, Эллиотт I. (1966). Праймер FORTRAN IV . Эддисон-Уэсли. п. 42. Некоторые процессоры также предлагают библиотечную функцию под названием ATAN2, функцию двух аргументов (противоположных и смежных).
  3. ^ "src / math / atan2.go" . Язык программирования Go . Проверено 20 апреля 2018 года .
  4. ^ "Вольф Юнг: Мандель, программное обеспечение для сложной динамики" . www.mndynamics.com . Проверено 20 апреля 2018 года .
  5. ^ «CLHS: функция ASIN, ACOS, ATAN» . LispWorks.
  6. ^ «Метод Microsoft Excel Atan2» . Microsoft.
  7. ^ "LibreOffice Calc ATAN2" . Libreoffice.org.
  8. ^ "Список функций таблиц Google" .
  9. ^ «Список тригонометрических функций чисел» . Яблоко.
  10. ^ "ANSI SQL: стандарт 2008" . Терадата. Архивировано из оригинала на 2015-08-20.
  11. ^ IA-32 Руководство разработчика программного обеспечения архитектуры Intel. Том 2A: Справочник по набору команд, AM, 2004.
  12. ^ Бургер, Вильгельм; Бердж, Марк Дж. (7 июля 2010 г.). Принципы обработки цифровых изображений: основные методы . Springer Science & Business Media. ISBN 9781848001916. Проверено 20 апреля 2018 г. - через Google Книги.
  13. ^ Глиссон, Тилдон Х. (18 февраля 2011 г.). Введение в анализ и проектирование цепей . Springer Science & Business Media. ISBN 9789048194438. Проверено 20 апреля 2018 г. - через Google Книги.

Внешние ссылки [ править ]

  • Онлайн калькулятор ATAN2
  • Java 1.6 SE JavaDoc
  • atan2 на Все2
  • Решение PicBasic Pro atan2 для PIC18F
Другие реализации / код для atan2
  • Пеленг между двумя точками
  • Арктан и полярные координаты
  • Что такое «Арккос»?

Заметки [ править ]

  1. ^ Тем самым
      и
      для каждого
  2. ^ Можно применить периодичность результата для сопоставления с другим желаемым диапазоном, например сопоставление с [0, 2π) , добавив к отрицательным результатам.