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

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

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

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

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

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

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

Совместное использование символа среди двух аффинных форм , означает , что соответствующие величины Х , 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 , где element - коэффициент символа в аффинной форме ; и является независимым термином этой формы. Тогда общий диапазон величин - то есть диапазон точки - это изображение гиперкуба аффинным отображением от до, определяемое с помощью .

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

Упрощение аффинной формы [ править ]

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

Реализация [ править ]

Реализация матрицы [ править ]

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

Векторная реализация [ править ]

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

Реализация разреженных векторов [ править ]

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

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

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

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

  • LH de Figueiredo и J. Stolfi (2004) "Аффинная арифметика: концепции и приложения". Численные алгоритмы 37 (1–4), 147–158.
  • JLD Comba и J. Stolfi (1993), "Аффинная арифметика и ее приложения к компьютерной графике". Proc. SIBGRAPI'93 - VI Simpósio Brasileiro de Computação Gráfica e Processamento de Imagens (Ресифи, Бразилия) , 9–18.
  • LH de Figueiredo и J. Stolfi (1996), "Адаптивное перечисление неявных поверхностей с аффинной арифметикой". Форум компьютерной графики , 15 5 , 287–296.
  • W. Heidrich (1997), "Компиляция аффинных арифметических версий общих математических библиотечных функций". Технический отчет 1997-3, Universität Erlangen-Nürnberg.
  • М. Кашиваги (1998), «Алгоритм решения с использованием аффинной арифметики». NOLTA'98 - 1998 Международный симпозиум по нелинейной теории и ее приложениям (Кран-Монтана, Швейцария) , 14–17.
  • Л. Эджизиано, Н. Фемиа и Г. Спаньоло (1998), «Новые подходы к истинной оценке наихудшего случая в анализе допусков схемы и чувствительности - Часть II: Расчет внешнего решения с использованием аффинной арифметики». Proc. COMPEL'98 - 6-й семинар по вычислительной технике в силовой электронике (Вилла Эрба, Италия) , 19–22.
  • В. Гейдрих, Ф. Слусаллек, Х.-П. Зайдель (1998), "Выборка процедурных шейдеров с использованием аффинной арифметики". Транзакции ACM по графике , 17 3 , 158–176.
  • Ф. Мессин и А. Махфуди (1998), "Использование аффинной арифметики в алгоритмах интервальной оптимизации для решения задач многомерного масштабирования". Proc. SCAN'98 - Международный симпозиум IMACS / GAMM по научным вычислениям, компьютерной арифметике и валидированным числам (Будапешт, Венгрия) , 22–25.
  • А. де Кузатис-младший, Л. Х. Фигейредо и М. Гаттасс (1999), «Интервальные методы для поверхностей, отбрасывающих лучи с аффинной арифметикой». Proc. SIBGRAPI'99 - 12-й Бразильский симпозиум по компьютерной графике и обработке изображений , 65–71.
  • К. Бюлер и В. Барт (2000), "Новый алгоритм пересечения параметрических поверхностей на основе линейных интервальных оценок". Proc. SCAN 2000 / Interval 2000 - 9-й международный симпозиум GAMM-IMACS по научным вычислениям, компьютерной арифметике и подтвержденным числам , ??? - ???.
  • И. Войкулеску, Дж. Берхтольд, А. Бойер, Р. Р. Мартин и К. Чжан (2000), "Интервальная и аффинная арифметика для определения расположения поверхностей полиномов степенной и бернштейновской формы". Proc. Математика поверхностей IX , 410–423. Springer, ISBN  1-85233-358-8 .
  • Q. Zhang и RR Martin (2000), «Полиномиальная оценка с использованием аффинной арифметики для рисования кривой». Proc. конференции Eurographics UK 2000 , 49–56. ISBN 0-9521097-9-4 . 
  • Д. Микелуччи (2000), "Надежные вычисления для динамических систем". Proc. SCAN 2000 / Interval 2000 - 9-й международный симпозиум GAMM-IMACS по научным вычислениям, компьютерной арифметике и подтвержденным числам , ??? - ???.
  • Н. Фемиа и Г. Спаньоло (2000), «Истинный анализ устойчивости схемы в худшем случае с использованием генетического алгоритма и аффинной арифметики - Часть I». IEEE Transactions on Circuits and Systems , 47 9 , 1285–1296.
  • Р. Мартин, Х. Шу, И. Войкулеску и Г. Ван (2001), «Сравнение методов оболочки Бернштейна и аффинной арифметики для построения алгебраических кривых». Proc. Неопределенность в геометрических вычислениях , 143–154. Kluwer Academic Publishers, ISBN 0-7923-7309-X . 
  • А. Бойер, Р. Мартин, Х. Шу и И. Войкулеску (2001), "Аффинные интервалы в геометрическом моделисте CSG". Proc. Неопределенность в геометрических вычислениях , 1–14. Kluwer Academic Publishers, ISBN 0-7923-7309-X . 
  • T. Kikuchi и M. Kashiwagi (2001), "Устранение областей отсутствия решения нелинейных уравнений с помощью аффинной арифметики". Proc. NOLTA'01 - 2001 Международный симпозиум по нелинейной теории и ее приложениям .
  • Т. Мията и М. Кашиваги (2001), "О вычислении диапазона многочленов аффинной арифметики". Proc. NOLTA'01 - 2001 Международный симпозиум по нелинейной теории и ее приложениям .
  • Ю. Канадзава и С. Оиши (2002), «Численный метод доказательства существования решений для нелинейных ОДУ с использованием аффинной арифметики». Proc. SCAN'02 - 10-й международный симпозиум GAMM-IMACS по научным вычислениям, компьютерной арифметике и валидированным числам .
  • Х. Шоу, Р. Р. Мартин, И. Войкулеску, А. Бойер и Г. Ван (2002), "Аффинная арифметика в матричной форме для полиномиального вычисления и рисования алгебраической кривой". Прогресс естествознания , 12 1 , 77–81.
  • А. Лемке, Л. Хедрих и Э. Барке (2002), "Определение размеров аналоговой схемы на основе формальных методов с использованием аффинной арифметики". Proc. ICCAD-2002 - Международная конференция по автоматизированному проектированию , 486–489.
  • Ф. Мессин (2002), "Расширения аффинной арифметики: приложение к неограниченной глобальной оптимизации". Journal of Universal Computer Science , 8 11 , 992–1015.
  • К. Бюлер (2002), "Неявные линейные интервальные оценки". Proc. 18-я Весенняя конференция по компьютерной графике (Будмерице, Словакия) , 123–132. ACM Press, ISBN 1-58113-608-0 . 
  • LH de Figueiredo, J. Stolfi и L. Velho (2003), «Аппроксимация параметрических кривых с помощью ленточных деревьев с использованием аффинной арифметики». Форум компьютерной графики , 22 2 , 171–179.
  • К.Ф. Фанг, Т. Чен и Р. Рутенбар (2003), «Анализ ошибок с плавающей точкой на основе аффинной арифметики». Proc. 2003 Международная конф. по акустике, обработке речи и сигналов .
  • А. Пайва, Л. Х. де Фигейредо и Дж. Столфи (2006), «Надежная визуализация странных аттракторов с использованием аффинной арифметики». Компьютеры и графика , 30 6 , 1020– 1026.

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

  • [1] Страница Столфи об АА.
  • [2] LibAffa, реализация аффинной арифметики в LGPL.
    • libaffa на GitHub
  • [3] ASOL, метод ветвей и отсечения для поиска всех решений систем нелинейных уравнений с использованием аффинной арифметики.
  • [4] YalAA, объектно-ориентированная библиотека шаблонов на основе C ++ для аффинной арифметики (AA).
  • kv на GitHub ( библиотека C ++, которая может использовать аффинную арифметику)