Интервальная арифметика
Интервальная арифметика — математическая структура, которая для вещественных интервалов определяет операции, аналогичные обычным арифметическим. Эту область математики называют также интервальным анализом или интервальными вычислениями. Данная математическая модель удобна для исследования различных прикладных объектов[1]:
- Величины, значения которых известны только приближённо, то есть определён конечный интервал, в котором эти значения содержатся.
- Величины, значения которых в ходе вычислений искажены ошибками округления.
- Случайные величины.
Объекты и операции интервальной арифметики можно рассматривать как обобщение модели вещественных чисел, поэтому интервалы в ряде источников называются интервальными числами. Практическая важность этой модели связана с тем, что результаты измерений и вычислений почти всегда имеют некоторую погрешность, которую необходимо учесть и оценить.
История вопроса[править | править код]
Интервальная арифметика не является совершенно новым явлением в математике; в истории она несколько раз появлялась под разными именами. Например, Архимед в III веке до н. э.. рассчитал нижнюю и верхнюю границы для числа :
Хотя вычисления с интервалами не были столь же популярны, как другие численные методы, но они не были полностью забыты.
Новая история интервальных вычислений начинается в 1931 году с работы Розалинды Сесили Янг[2], где были приведены правила вычисления с интервалами и другими подмножествами вещественных чисел. В 1951 году появился учебник Пола С. Дуайера по линейной алгебре, в нём эта тема рассматривалась с точки зрения повышения надёжности цифровых систем — интервалы использовались для оценки ошибок округления, связанных с числами с плавающей запятой[3]. В 1958 году Теруо Сунага опубликовал подробный доклад о применении интервальной алгебре в численном анализе[4].
Во второй половине XX века потребности компьютерных вычислений вызвали бурное развитие интервального анализа практически одновременно и независимо в Советском Союзе, США, Японии и Польше. В 1966 году появилась книга американского математика Рамона Мура «Интервальный анализ» (Interval Analysis)[5]. Достоинство этой работы заключалось в том, что, начиная с простого принципа, он предоставлял общий метод для автоматического анализа ошибок, причём не только ошибок, возникающих в результате округления.
В последующие два десятилетия важные исследования по интервальному анализу и его приложениям велись в Германии — Карлом Никелем и его учениками в Университете Фрайбурга, в группах Ульриха Кулиша и Гётца Алефельда в Университете Карлсруэ[6][7], и других.
В 1960-х годах Элдон Р. Хансен занимался расширением интервального подхода на системы линейных уравнений, а затем внес важный вклад в глобальную оптимизацию, включая то, что сейчас известно как метод Хансена — возможно, наиболее широко используемый интервальный алгоритм[8]. Классические методы в этой задаче часто имеют проблему с определением наибольшего (или наименьшего) глобального значения (могут найти только локальный оптимум и не могут найти лучшие значения); Хельмут Рачек и Джон Джордж Рокне разработали вариацию метода ветвей и границ, который до этого применялся только к целочисленным значениям.
В 1988 году Рудольф Лонер разработал программное обеспечение на основе языка Фортран для доказательного решения задачи Коши для систем обыкновенных дифференциальных уравнений[9].
С 1990-х годов началась публикация международного журнала «Интервальные вычисления» − «Interval Computations», который в 1995 году был переименован в «Reliable Computing» («Надёжные вычисления»). Основной тематикой журнала являются доказательные вычисления, методы интервального анализа и его приложения.
В России и СССР интервальной тематикой активно занимался с 1920-х годов В. М. Брадис. В 1962 году один из первых выпусков «Сибирского математического журнала» опубликовал статью Леонида Витальевича Канторовича, который, фактически, наметил основы интервального анализа в частично упорядоченных пространствах и приложения новой техники. В его статье эта тематика была обозначена как приоритетная для нашей вычислительной науки[10]. В послевоенный период одной из первых стала книга Ю. И. Шокина «Интервальный анализ»[11]. В следующем году появилось учебное пособие Т.И. Назаренко и Л.В. Марченко «Введение в интервальные методы вычислительной математики»[12], а в 1986 году — монография С. А. Калмыкова, Ю. И. Шокина и З. Х. Юлдашева «Методы интервального анализа»[13].
Операции над интервалами[править | править код]
Мы будем рассматривать всевозможные конечные вещественные интервалы . Операции над ними определяются следующим образом:
- Сложение: [a,b] + [c,d] = [a + c, b + d]
- Вычитание: [a,b] − [c,d] = [a − d, b − c]
- Умножение: [a,b] × [c,d] = [min (ac, ad, bc, bd), max (ac, ad, bc, bd)]
- Деление: [a,b] / [c,d] = [min (a/c, a/d, b/c, b/d), max (a/c, a/d, b/c, b/d)]
Из определения видно, что интервал-сумма содержит всевозможные суммы чисел из интервалов-слагаемых и определяет границы множества таких сумм. Аналогично трактуются прочие действия. Отметим, что операция деления определена только в том случае, когда интервал-делитель не содержит нуля.
Вырожденные интервалы, у которых начало и конец совпадают, можно отождествить с обычными вещественными числами. Для них данные выше определения совпадают с классическими арифметическими действиями.
Свойства операций[править | править код]
Сложение и умножение интервалов коммутативны и ассоциативны. Но вместо полноценной дистрибутивности умножения по сложению имеет место так называемая субдистрибутивность:
Варианты и расширения интервальной арифметики[править | править код]
Стандарт IEEE 1788[править | править код]
Стандарт компьютерной реализации интервальной арифметики IEEE 1788—2015 был принят в июне 2015 года.[14] В процессе работы над стандартом и в последующие годы были подготовлены несколько свободно распространяемых референсных реализаций:[15] библиотека C++ libieeep1788[16] library for C++, библиотека JInterval для языка Java, а также пакет, реализующий интервальные вычисления для свободного математического ПО GNU Octave[17].
Минимальное подмножество стандарта, предназначенное для упрощения и ускорения его реализации — IEEE Std 1788.1-2017, было принято в декабре 2017 и опубликовано в феврале 2018.[18]
Программное обеспечение[править | править код]
Существует много реализаций интервальной арифметики в различных пакетах программного обеспечения[19]. Зачастую они оформляются как специализированные библиотеки. Ряд компиляторов Fortran и C++ включают в себя поддержку интервальных значений как специального типа данных.
См. также[править | править код]
Примечания[править | править код]
- ↑ Шарый, 2019, с. 18.
- ↑ Young, Rosalind Cicely (1931). The algebra of many-valued quantities. Mathematische Annalen, 104(1), 260—290. (Это её диссертация в Кембриджском университете).
- ↑ Dwyer, Paul Sumner (1951). Linear computations. Oxford, England: Wiley. (University of Michigan)
- ↑ Theory of interval algebra and its application to numerical analysis (англ.) // RAAG Memoirs : journal. — 1958. — No. 2. — P. 29—46.
- ↑ Interval Analysis (англ.). — Englewood Cliff, New Jersey, USA: Prentice Hall, 1966. — ISBN 0-13-476853-1.
- ↑ Grundzüge der Intervallrechnung // Jahrbuch Überblicke Mathematik (нем.) / Laugwitz, Detlef. — Mannheim, Germany: Bibliographisches Institut, 1969. — Bd. 2. — S. 51—98.
- ↑ Wissenschaftliches Rechnen mit Ergebnisverifikation. Eine Einführung (нем.). — Wiesbaden: Springer Vieweg Verlag , 1989. — ISBN 3-528-08943-1.
- ↑ Global Optimization using Interval Analysis (англ.). — 2nd. — New York, USA: Marcel Dekker , 2004. — ISBN 0-8247-4059-9.
- ↑ Bounds for ordinary differential equations of Rudolf Lohner Архивировано 11 мая 2018 года. (in German)
- ↑ Исторические заметки.
- ↑ Шокин, 1981.
- ↑ Т. И. Назаренко, Л. В. Марченко. Введение в интервальные методы вычислительной математики" Учеб. пособие. Иркутск : Изд-во Иркутского ун-та, 1982. — 108 с.
- ↑ С. А. Калмыков, Ю. И. Шокин, З. Х. Юлдашев Методы интервального анализа. — Новосибирск: Наука, 1986, 224 с.
- ↑ IEEE Standard for Interval Arithmetic . Дата обращения: 7 февраля 2022. Архивировано 7 февраля 2022 года.
- ↑ Revol, Nathalie (2015). The (near-)future IEEE 1788 standard for interval arithmetic. 8th small workshop on interval methods. Slides (PDF) Архивная копия от 2 июня 2016 на Wayback Machine
- ↑ C++ implementation of the preliminary IEEE P1788 standard for interval arithmetic . Дата обращения: 31 июля 2018. Архивировано 10 июня 2018 года.
- ↑ GNU Octave interval package . Дата обращения: 31 июля 2018. Архивировано 9 ноября 2016 года.
- ↑ IEEE Std 1788.1-2017 - IEEE Standard for Interval Arithmetic (Simplified) . IEEE SA. IEEE Standards Association. Дата обращения: 6 февраля 2018. Архивировано 7 февраля 2022 года.
- ↑ Software for Interval Computations Архивная копия от 2 марта 2006 на Wayback Machine collected by Vladik Kreinovich, University of Texas at El Paso
Литература[править | править код]
- Алефельд Г., Херцбергер Ю.. Введение в интервальные вычисления. М.: Мир, 1987. 356 с.
- Добронец Б. С. Интервальная математика. Красноярск: Издательство КГУ, 2004.
- Шарый С. П. Конечномерный интервальный анализ. — Новосибирск: XYZ, 2019. — 635 с.
- Шокин Ю. И. Интервальный анализ. — Новосибирск: Сибирское отделение изд-ва «Наука», 1981.
Ссылки[править | править код]
- Интервальный анализ и его приложения.
- Интервальная арифметика на сайте Mathworld (англ.).