В математике, Пифагор дополнение следующая бинарная операция на действительных числах :
Название напоминает теорему Пифагора, которая гласит, что длина гипотенузы в виде прямоугольного треугольника является ⊕ Ь, где и б -длины других сторон. В своих приложениях для обработки сигналов и распространения из неопределенности измерения, та же самая операция также называется добавление в квадратуре.
Эта операция обеспечивает простые обозначения и терминологию, когда слагаемые сложные; например, соотношение энергии-импульса в физике становится
Он реализован во многих библиотеках программирования как функция гипотез, чтобы избежать ошибок, возникающих из-за вычислений с ограниченной точностью, выполняемых на компьютерах.
Если измерения X, Y, Z,... имеют независимые ошибки ΔX, ΔY, ΔZ,... соответственно, квадратурный метод дает общую ошибку,
тогда как верхний предел общей ошибки если бы ошибки не были независимыми.Это эквивалентно нахождению величины результирующей при сложении ортогональных векторов, каждый из которых имеет величину, равную неопределенности, с использованием теоремы Пифагора.
При обработке сигналов сложение в квадратуре используется для определения общего шума от независимых источников шума. Например, если датчик изображения дает 6 цифровых числа от дробового шума, 3 из темнового тока шума и 2 теплового шума при определенном условии, общий уровень шума,
цифровые числа, показывающие преобладание более крупных источников шума.Операция ⊕ ассоциативна и коммутативна, и
Этого достаточно, чтобы действительные числа образовали коммутативную полугруппу. Однако ⊕ не является групповой операцией по следующим причинам.Единственный элемент, который потенциально может действовать как элемент идентичности, - это 0, поскольку идентичность e должна удовлетворять e ⊕ e = e. Это дает уравнение, но если e не равно нулю, это означает, что e может быть только нулем. К сожалению, 0 в конце концов не работает как элемент идентичности, поскольку 0⊕ (−1) = 1. Однако это указывает на то, что если операция ⊕ ограничена неотрицательными действительными числами, то 0 действительно действует как идентичность. Следовательно, операция ⊕, действующая на неотрицательные действительные числа, образует коммутативный моноид.
Гипотензия - это математическая функция, предназначенная для вычисления длины гипотенузы прямоугольного треугольника. Он был разработан, чтобы избежать ошибок, возникающих из-за вычислений с ограниченной точностью, выполняемых на компьютерах. Вычислить длину гипотенузы треугольника можно с помощью функции извлечения квадратного корня из суммы двух квадратов, но гипотеза ( x, y) позволяет избежать проблем, возникающих при возведении в квадрат очень больших или очень малых чисел. Если рассчитано по естественной формуле,
квадраты очень больших или малых значений х и у могут превышать диапазон машинной точности при расчете на компьютере, что приводит к неверному результату, вызванной арифметической сгущенного и / или арифметического переполнения. Функция гипотезы была разработана, чтобы вычислить результат, не вызывая этой проблемы.Функция гипотезы часто используется вместе с функцией atan2 для преобразования декартовых координат в полярные координаты :
г = гипотеза ( х, у), θ = atan2 ( y, x).Если любой вход бесконечен, результат будет бесконечным, т. Е.
гипотеза ( x, ± ∞) = гипотеза (± ∞, x) = + ∞Поскольку это верно для всех возможных значений х, в том числе бесконечности, IEEE 754 стандарт с плавающей точкой требует, чтобы это определение также применимо, если х это не является числом (NaN).
Сложность наивной реализации состоит в том, что x 2 или y 2 могут быть переполнены или опустошены, если промежуточный результат не вычисляется с повышенной точностью. Распространенным методом реализации является при необходимости обмен значениями, чтобы | х | ≥ | y |, а затем использовать эквивалентную форму
Вычисление y / x не может быть переполнено, если и x, и y не равны 0. Если y / x не переполняется, окончательный результат будет равен | x |, что верно в пределах точности вычисления. Квадратный корень вычисляется из значения от 1 до 2. Наконец, умножение на | х | не может быть недостаточным и переполняется только тогда, когда результат слишком велик для представления.
У этой реализации есть обратная сторона: требуется дополнительное деление с плавающей запятой, что может удвоить стоимость наивной реализации, поскольку умножение и сложение обычно намного быстрее, чем деление и извлечение квадратного корня.
Более сложные реализации избегают этого, разделяя входные данные на большее количество случаев:
Дополнительные методы позволяют вычислить результат более точно, например, до менее одного ulp.
Функция присутствует на нескольких языках программирования:
++
и +-+
соответственно.