stringtranslate.com

атан2

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

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

Функция впервые появилась в языке программирования Fortran в 1961 году. Первоначально она предназначалась для возврата правильного и однозначного значения угла при преобразовании из декартовых координат в полярные координаты . Если и , то и

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

Мотивация

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

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

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

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

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

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

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

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

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

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

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

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

В терминах стандартной функции арктангенса, изображением которой является ⁠ ⁠ , atan2 можно выразить кусочно :

Тангенс половины угла можно вычислить через координаты x и y и радиус r .

Вместо касательной может быть удобно использовать полукасательную ⁠ ⁠ как представление угла, отчасти потому, что угол ⁠ ⁠ имеет уникальную полукасательную,

(См. формулу тангенса половинного угла .) Выражение с ⁠ ⁠ в знаменателе следует использовать, когда ⁠ ⁠ и ⁠ ⁠ для возможной потери значимости при вычислении ⁠ ⁠ . Когда функция atan2 недоступна, ее можно вычислить как удвоенный арктангенс половинного тангенса ⁠ ⁠ .

Производный

Так как функция 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

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

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

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

Сумма или разность нескольких углов, которые должны быть вычислены с помощью ⁠ ⁠, может быть альтернативно вычислена путем составления их как комплексных чисел . При наличии двух пар координат ⁠ ⁠ и ⁠ ⁠ их углы от положительной ⁠ ⁠ оси будут составлены (и длины умножены), если их рассматривать как комплексные числа, а затем умножить друг на друга, ⁠ ⁠ ⁠ ⁠ . Результирующий угол можно найти с помощью одной ⁠ ⁠ операции, при условии, что результирующий угол лежит в ⁠ ⁠ :

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

Эта разностная формула часто используется на практике для вычисления угла между двумя плоскими векторами , поскольку результирующий угол всегда находится в диапазоне ⁠ ⁠ .

Соглашения «Восток — против часовой стрелки», «Север — по часовой стрелке», «Юг — по часовой стрелке» и т. д.

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

В качестве примера, пусть и , тогда формат «восток-против часовой стрелки» дает , формат «север-по часовой стрелке» дает , а формат «юг-по часовой стрелке» дает .

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

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

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

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

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

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

Ссылки

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

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

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

Примечания