stringtranslate.com

Атан2

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

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

Функция впервые появилась в языке программирования Фортран в 1961 году. Изначально она предназначалась для возврата правильного и однозначного значения угла θ при преобразовании из декартовых координат ( x , y ) в полярные координаты ( r , θ ) . Если и , то и

Если x > 0 , желаемая мера угла равна. Однако, когда x < 0 , угол диаметрально противоположен желаемому углу, и необходимо добавить ± π (половина оборота ), чтобы поместить точку в правильный квадрант . [1] Использование функции устраняет эту коррекцию, упрощая код и математические формулы.

Мотивация

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

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

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

Чтобы исправить это, в языках программирования была введена функция atan2 , по крайней мере, еще в языке Fortran IV 1960-х годов. [2] Величина atan2( y , x ) — это угол между осью x и лучом, идущим от начала координат до точки ( x , y ) в любом месте декартовой плоскости. Знаки x и y используются для определения квадранта результата и выбора правильной ветви многозначной функции Arctan ( y / x ) .

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

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

Порядок аргументов

В 1961 году Фортран представил функцию atan2 с таким порядком аргумента , что аргумент (фазовый угол) комплексного числа равен Это соответствует порядку дроби слева направо, записанному так, что для положительных значений Однако это противоположно традиционный порядок компонентов для комплексных чисел или в виде координат. См. раздел «Определение и вычисление».

Некоторые другие языки программирования (см. § Реализации функции в распространенных компьютерных языках) вместо этого выбрали противоположный порядок. Например, Microsoft Excel использует OpenOffice Calc, а Mathematica использует значение по умолчанию для арктангенса с одним аргументом, если вызывается с одним аргументом.

Определение и расчет

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

С точки зрения стандартной функции арктанга , диапазон которой равен (−π/2, π/2) , ее можно выразить следующим образом, чтобы определить поверхность, которая не имеет разрывов, за исключением полубесконечной линии x<0 y=0:

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

Обозначение скобок Айверсона позволяет получить еще более компактное выражение: [примечание 1]

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

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

с плавающей запятойx <0, y = 0y

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

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

Примечания:

Производная

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

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

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

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

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

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

Иллюстрации

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

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

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

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

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

Угловая сумма и разность тождественны

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

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

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

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

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

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

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

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

Условные обозначения «восток — против часовой стрелки», «север — часовая стрелка», «юг — часовая стрелка» и т. д.

Функция изначально была разработана для соглашения в чистой математике, которое можно назвать восток-против часовой стрелки . Однако в практических приложениях часто нормой являются соглашения по северной и южной часовой стрелке . Например, в науках об атмосфере направление ветра можно рассчитать, используя функцию с восточным и северным компонентами вектора ветра в качестве аргументов; [4] угол азимута Солнца может быть рассчитан аналогичным образом, используя в качестве аргументов восточную и северную компоненты солнечного вектора. Направление ветра обычно определяется по направлению на север по часовой стрелке, а угол азимута Солнца широко использует соглашения как по северной, так и по южной часовой стрелке. [5] Эти различные соглашения можно реализовать, поменяв местами позиции и изменив знаки x- и y-аргументов следующим образом:

Например, пусть и , тогда формат восточного направления против часовой стрелки дает , формат северной часовой стрелки дает , а формат южного направления дает .

Изменение знака аргументов x и/или y и/или замена их позиций может создать 8 возможных вариантов функции, и они, что интересно, соответствуют 8 возможным определениям угла, а именно, по часовой стрелке или против часовой стрелки, начиная с каждого из 4 основных направления : север, восток, юг и запад.

Реализации функции на распространенных компьютерных языках.

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

Конвенцию используют:

Это определение связано с понятием знакового нуля .

Смотрите также

Рекомендации

  1. ^ «Аргумент комплексного числа» (PDF) . Институт физики элементарных частиц Санта-Крус. Зима 2011.
  2. ^ Органик, Эллиотт И. (1966). Букварь по Фортрану IV . Аддисон-Уэсли. п. 42. Некоторые процессоры также предлагают библиотечную функцию ATAN2, функцию двух аргументов (противоположного и соседнего).
  3. ^ «Вольф Юнг: Мандель, программное обеспечение для сложной динамики» . www.mndynamics.com . Проверено 20 апреля 2018 г.
  4. ^ «Краткий справочник по направлению ветра» . Лаборатория наблюдения Земли NCAR UCAR.
  5. ^ Чжан, Тайпин; Стэкхаус, Пол В.; Макферсон, Брэдли; Миковиц, Дж. Коллин (2021). «Формула солнечного азимута, которая делает ненужным подробное рассмотрение без ущерба для математической строгости: математическая установка, применение и расширение формулы, основанной на подсолнечной точке и функции atan2». Возобновляемая энергия . 172 : 1333–1340. doi : 10.1016/j.renene.2021.03.047 . S2CID  233631040.
  6. ^ «Метод Microsoft Excel Atan2» . Майкрософт.
  7. ^ "LibreOffice Calc ATAN2" . LibreOffice.org.
  8. ^ «Функции и формулы – Помощь редакторов документов» . support.google.com .
  9. ^ «Список тригонометрических функций чисел». Яблоко.
  10. ^ «ANSI SQL: стандарт 2008» . Терадата. Архивировано из оригинала 20 августа 2015 г.
  11. ^ «CLHS: Функция ASIN, ACOS, ATAN» . Лиспворкс.
  12. ^ «Математика · Язык Джулии» . docs.julialang.org .
  13. ^ «Часто задаваемые вопросы · Язык Джулии» . docs.julialang.org .
  14. ^ IA-32 Руководство разработчика программного обеспечения для архитектуры Intel. Том 2A: Справочник по набору команд, AM, 2004 г.
  15. ^ Бургер, Вильгельм; Бердж, Марк Дж. (7 июля 2010 г.). Принципы цифровой обработки изображений: фундаментальные методы. Springer Science & Business Media. ISBN 978-1-84800-191-6. Проверено 20 апреля 2018 г. - через Google Книги.
  16. Глиссон, Тилдон Х. (18 февраля 2011 г.). Введение в анализ и проектирование цепей. Springer Science & Business Media. ISBN 9789048194438. Проверено 20 апреля 2018 г. - через Google Книги.

Внешние ссылки

Другие реализации/код для atan2

Примечания

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