Main menu

Квадратуры Гаусса-Кронрода: адаптивное интегрирование с контролем ошибки

Идеальная формула и проблема оценки погрешности

В области численного интегрирования (квадратур) методы Гаусса являются абсолютным математическим совершенством. В то время как метод Симпсона по 3 равномерным узлам точно интегрирует полиномы только 3-й степени, квадратура Гаусса-Лежандра по тем же 3 узлам способна абсолютно точно проинтегрировать полином 5-й степени! Сдвигая узлы с равномерной сетки в корни ортогональных многочленов Лежандра, метод Гаусса выжимает теоретический максимум алгебраической точности (степень 2n-1 для n узлов).

Однако на практике вычислительной математики у классических формул Гаусса выявился фатальный инженерный недостаток: отсутствие дешевого способа контроля погрешности. Программа-решатель не знает, аналитическую функцию какой сложности ей «скормили». Чтобы гарантировать заданную пользователем точность, алгоритму нужно вычислить интеграл по n узлам, затем удвоить количество узлов (взять 2n) и сравнить результаты. Но узлы Гаусса для разных n не пересекаются (за исключением нулевой точки для нечетных n). Это значит, что вычисленные ранее значения функции придется выбросить в мусорную корзину и вычислять тяжелую подынтегральную функцию во всех новых 2n точках заново. При многократном измельчении это приводит к колоссальным потерям машинного времени.

Гениальное расширение Александра Кронрода

Решение этой сложнейшей проблемы было найдено в 1964 году советским математиком Александром Семеновичем Кронродом. Его идея была настолько изящна, что навсегда вошла в золотой фонд мировой вычислительной математики. Кронрод поставил задачу: как добавить к уже существующим n узлам Гаусса оптимальное количество новых узлов, чтобы старые вычисления (узлы) были полностью переиспользованы, а точность новой, составной формулы была бы максимально возможной?

Кронрод математически доказал, что оптимальным является добавление строго n+1 новых узлов (они лежат между узлами Гаусса). Полученная составная квадратура по 2n+1 узлам обладает алгебраической степенью точности 3n+1. Теперь алгоритм работает так: сначала вычисляется грубый интеграл по n узлам Гаусса. Затем вычисляются значения функции только в n+1 новых точках Кронрода. Старые и новые значения складываются с новыми весами, давая высокоточный интеграл Кронрода. Разница между интегралом Гаусса и интегралом Кронрода дает великолепную, практически бесплатную оценку текущей ошибки интегрирования!

Библиотека QUADPACK и адаптивное разбиение

Самым популярным стандартом в индустрии стала пара узлов: 7-точечная формула Гаусса и 15-точечная формула Кронрода (G7/K15). На базе этой элегантной пары бельгийскими математиками (Писсенс и де Донкер) был написан пакет программ QUADPACK.

Этот пакет реализует глобальную адаптивную стратегию. Алгоритм вычисляет интеграл на всем заданном отрезке методом Гаусса-Кронрода и оценивает ошибку. Если ошибка превышает заданный допуск, алгоритм не увеличивает порядок полиномов, а разрезает отрезок ровно пополам (строит бинарное дерево). В каждой половине процедура повторяется. Алгоритм поддерживает список (очередь) всех подотрезков, сортируя их по величине вносимой ошибки, и агрессивно дробит только те участки оси, где функция ведет себя нерегулярно (резкие скачки, осцилляции). Этот мощный, надежный и экономный алгоритм (qag в QUADPACK) сегодня является скрытым мотором интегрирования в функциях `integral` системы MATLAB и `scipy.integrate.quad` в экосистеме Python.

Подробнее

Численное решение дифференциальных уравнений с запаздывающим аргументом

Когда настоящее зависит от далекого прошлого

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

Такие процессы моделируются дифференциальными уравнениями с запаздывающим аргументом (ДДУЗА, или Delay Differential Equations, DDEs). В простейшем виде уравнение выглядит как y'(t) = f(t, y(t), y(t-tau)), где tau — это время запаздывания. Эта небольшая добавка (t-tau) радикально меняет всю математическую природу задачи, превращая конечномерное пространство состояний ОДУ в бесконечномерное. Теперь для запуска процесса интегрирования нам недостаточно знать начальное положение системы в одной точке (t=0). Нам необходимо задать начальную функцию (предысторию) на всем интервале от -tau до 0!

Распространение разрывов и сглаживание

Первая вычислительная трудность при решении ДДУЗА — это феномен распространения разрывов производных. Если начальная функция на отрезке [-tau, 0] не склеена идеально гладко с самим уравнением в точке t=0 (что бывает почти всегда), то в точке t=0 возникает разрыв первой производной решения. Поскольку значение из точки t=0 попадет в правую часть уравнения через время tau, этот разрыв породит излом уже второй производной в точке t=tau. Затем появится разрыв третьей производной в точке t=2*tau, и так далее.

К счастью, дифференциальный оператор обладает эффектом интегрирования: с каждым шагом на величину запаздывания порядок разрыва повышается, и решение становится все более гладким. Тем не менее, для высокоточных численных методов (например, Рунге-Кутты 4-го порядка) эти начальные изломы являются катастрофой — метод теряет свой порядок точности. Современный решатель ДДУЗА должен уметь алгоритмически выявлять эти точки разрывов (breaking points) и принудительно ставить узлы сетки интегрирования точно в эти точки, чтобы не интегрировать через излом.

Плотный вывод (Dense Output) и интерполяция

Вторая и главная проблема: алгоритму нужно знать значение функции y(t-tau) в прошлом. Если алгоритм интегрирует с переменным адаптивным шагом (что обязательно для эффективных расчетов), точка (t-tau) практически никогда не совпадет с теми узлами сетки, которые алгоритм уже вычислил и сохранил в памяти. Точка запаздывания попадет куда-то между прошлыми узлами.

Чтобы найти значение между узлами, алгоритму необходим механизм непрерывного (плотного) вывода (Dense Output). Классические дискретные методы Рунге-Кутты здесь не подходят. Математикам пришлось разрабатывать непрерывные методы Рунге-Кутты, которые на каждом шаге выдают не только число в конце интервала, но и специальный интерполяционный полином (сплайн Эрмита), который локально описывает функцию внутри шага с сохранением заявленного порядка точности. Обращаясь к истории полиномов, решатель вычисляет точное значение запаздывающего аргумента. Современные программы (например, dde23 в MATLAB) изящно решают системы с постоянным, переменным и даже распределенным (интегральным) запаздыванием, позволяя моделировать хаотические аттракторы Маккея-Гласса в лазерной физике.

Подробнее

Вейвлет-Галеркинские методы: объединение МКЭ и спектрального анализа

Ограничения базисных функций в вычислительной математике

При численном решении дифференциальных уравнений в частных производных (УЧП) методом Галеркина выбор базисных функций определяет успех всего алгоритма. В классическом методе конечных элементов (МКЭ) используются локальные кусочные полиномы. Они отлично подстраиваются под геометрию, но дают медленную алгебраическую сходимость. В спектральных методах используются глобальные синусоиды (ряды Фурье) или ортогональные полиномы. Они дают феноменальную экспоненциальную сходимость для гладких функций, но полностью разваливаются (порождают глобальные осцилляции Гиббса), если в решении появляется локальный разрыв, ударная волна или острый пик. Глобальный базис не умеет «фокусироваться» на локальных особенностях.

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

Многомасштабный анализ и адаптивные сетки

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

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

Проблема коэффициентов связи (Connection Coefficients)

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

Гладкие ортогональные вейвлеты с компактным носителем (вейвлеты Добеши) не имеют аналитических формул — они задаются рекурсивными фильтрами. Соответственно, вычислить аналитически интеграл от их производной невозможно. Для решения этой проблемы была разработана теория вычисления «коэффициентов связи» (Connection coefficients) — точных значений этих интегралов через решение специальных систем алгебраических уравнений, вытекающих из свойств масштабирования. Сегодня вейвлет-методы активно применяются для моделирования турбулентности (DNS и LES), где необходимость отслеживать каскад энергии вихрей разных масштабов идеально ложится на многомасштабную физику самих вейвлетов.

Подробнее

Соц. сети