stringtranslate.com

Аффинная арифметика

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

Аффинная арифметика призвана стать улучшением интервальной арифметики (IA) и похожа на обобщенную интервальную арифметику , арифметику Тейлора первого порядка, модель центра-наклона и исчисление эллипсоидов — в том смысле, что она представляет собой автоматический метод получения гарантированных приближений первого порядка к общим формулам.

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

Определение

В аффинной арифметике каждая входная или вычисляемая величина x представляется формулой , где — известные числа с плавающей точкой, а — символьные переменные, значения которых, как известно, лежат только в диапазоне [-1,+1].

Так, например, величина X , которая, как известно, лежит в диапазоне [3,7], может быть представлена ​​аффинной формой для некоторого k . Наоборот, форма подразумевает, что соответствующая величина X лежит в диапазоне [3,17].

Совместное использование символа двумя аффинными формами подразумевает , что соответствующие величины X , Y частично зависимы, в том смысле, что их совместный диапазон меньше, чем декартово произведение их отдельных диапазонов. Например, если и , то отдельные диапазоны X и Y равны [2,18] и [13,27], но совместный диапазон пары ( X , Y ) — это шестиугольник с углами (2,27), (6,27), (18,19), (18,13), (14,13), (2,21) — который является собственным подмножеством прямоугольника [ 2,18]×[13,27].

Аффинные арифметические операции

Аффинные формы можно комбинировать со стандартными арифметическими операциями или элементарными функциями для получения гарантированных приближений к формулам.

Аффинные операции

Например, если заданы аффинные формы для X и Y , можно получить аффинную форму для Z = X + Y просто путем сложения форм — то есть, установив для каждого j . Аналогично, можно вычислить аффинную форму для Z = X , где — известная константа, установив для каждого j . Это обобщается на произвольные аффинные операции, такие как Z = X + Y + .

Неаффинные операции

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

Затем форма дает гарантированное включение для величины Z ; более того, аффинные формы совместно обеспечивают гарантированное включение для точки ( X , Y ,..., Z ), которое часто намного меньше декартова произведения диапазонов отдельных форм.

Цепочка операций

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

Для гладких функций ошибки аппроксимации, сделанные на каждом шаге, пропорциональны квадрату h 2 ширины h входных интервалов. По этой причине аффинная арифметика часто дает гораздо более узкие границы, чем стандартная интервальная арифметика (чьи ошибки пропорциональны h ).

Ошибки округления

Чтобы обеспечить гарантированное включение, аффинные арифметические операции должны учитывать ошибки округления при вычислении результирующих коэффициентов . Этого нельзя сделать, округлив каждую в определенном направлении, поскольку любое такое округление фальсифицировало бы зависимости между аффинными формами, которые разделяют символ . Вместо этого необходимо вычислить верхнюю границу ошибки округления каждой и добавить все эти значения к коэффициенту нового символа (округление вверх). Таким образом, из-за ошибок округления даже аффинные операции, такие как Z = X и Z = X + Y , добавят дополнительный член .

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

Аффинная проекционная модель

Аффинную арифметику можно рассматривать в матричной форме следующим образом. Пусть — все входные и вычисляемые величины, используемые в какой-то момент во время вычисления. Аффинные формы для этих величин могут быть представлены одной матрицей коэффициентов A и вектором b , где элемент — коэффициент символа в аффинной форме ; а — независимый член этой формы. Тогда совместный диапазон величин — то есть диапазон точки — является образом гиперкуба с помощью аффинного отображения из в , определяемого .

Диапазон этого аффинного отображения является зонотопом, ограничивающим совместный диапазон величин . Таким образом, можно сказать, что AA является "зонотопной арифметикой". Каждый шаг AA обычно влечет за собой добавление еще одной строки и одного столбца к матрице A .

Упрощение аффинной формы

Поскольку каждая операция AA обычно создает новый символ , количество членов в аффинной форме может быть пропорционально количеству операций, используемых для его вычисления. Таким образом, часто необходимо применять шаги «конденсации символов», когда два или более символов заменяются меньшим набором новых символов. Геометрически это означает замену сложного зонотопа P более простым зонотопом Q , который его охватывает. Эту операцию можно выполнить, не разрушая свойство аппроксимации первого порядка конечного зонотопа.

Выполнение

Реализация матрицы

Аффинная арифметика может быть реализована глобальным массивом A и глобальным вектором b , как описано выше. Этот подход достаточно адекватен, когда набор вычисляемых величин невелик и известен заранее. При таком подходе программист должен поддерживать внешнее соответствие между индексами строк и интересующими величинами. Глобальные переменные содержат число m аффинных форм (строк), вычисленных до сих пор, и число n символов (столбцов), использованных до сих пор; они автоматически обновляются при каждой операции AA.

Векторная реализация

В качестве альтернативы каждая аффинная форма может быть реализована как отдельный вектор коэффициентов. Такой подход более удобен для программирования, особенно когда есть вызовы библиотечных процедур, которые могут использовать AA внутренне. Каждой аффинной форме можно дать мнемоническое имя; ее можно выделять при необходимости, передавать процедурам и возвращать, когда она больше не нужна. Тогда код AA будет выглядеть гораздо ближе к исходной формуле. Глобальная переменная хранит число n символов, использованных до сих пор.

Реализация разреженного вектора

При достаточно длинных вычислениях набор «живых» величин (которые будут использоваться в будущих вычислениях) намного меньше набора всех вычисляемых величин; то же самое касается набора «живых» символов . В этой ситуации реализации матриц и векторов слишком расточительны по времени и пространству.

В таких ситуациях следует использовать разреженную реализацию. А именно, каждая аффинная форма хранится как список пар (j, ), содержащих только члены с ненулевым коэффициентом . Для эффективности члены должны быть отсортированы в порядке j . Такое представление несколько усложняет операции AA; однако стоимость каждой операции становится пропорциональной количеству ненулевых членов, появляющихся в операндах, а не общему количеству символов, использованных до сих пор.

Это представление, используемое LibAffa.

Ссылки

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