Решение жестких краевых задач: метод ортогональной прогонки Годунова
Вычислительная катастрофа при интегрировании
Ранее мы обсуждали решение краевых задач с помощью метода пристрелки и метода конечных разностей (прогонки). Для хорошо обусловленных систем эти алгоритмы работают безупречно. Однако в физике плазмы, теории пограничного слоя в гидродинамике и расчетах тонкостенных оболочек инженеры сталкиваются с так называемыми жесткими краевыми задачами. Эти задачи характеризуются наличием быстро растущих и быстро затухающих экспоненциальных решений.
Попытка применить стандартный метод пристрелки к жесткой системе приводит к вычислительной катастрофе. Если мы попытаемся численно интегрировать такую систему от одного конца интервала к другому, быстро растущие компоненты решения (даже если физически они должны отсутствовать и подавляться граничными условиями) из-за микроскопических ошибок машинного округления мгновенно «просыпаются». Они начинают расти экспоненциально, быстро переполняя разрядную сетку компьютера и полностью уничтожая полезный сигнал (медленно меняющиеся компоненты). Векторы решений, которые математически должны быть линейно независимыми, в памяти компьютера «слипаются», вытягиваясь вдоль самого быстрорастущего направления.
Спасение через ортогонализацию
Для решения этой фундаментальной проблемы выдающийся советский математик Сергей Константинович Годунов предложил алгоритм ортогональной прогонки (известный в западной литературе как метод дискретной ортогонализации). Суть идеи заключается во вмешательстве в процесс численного интегрирования до того, как ошибки успеют приобрести катастрофический масштаб.
Алгоритм интегрирует систему независимых векторов с левого конца отрезка. Как только программа замечает, что векторы начинают «слипаться» из-за влияния жесткости (угол между ними становится слишком острым, а матрица их решений теряет обусловленность), процесс интегрирования останавливается. К текущим векторам применяется классический процесс ортогонализации Грама-Шмидта. Векторы принудительно разворачиваются под прямыми углами друг к другу, а их длины нормируются, предотвращая арифметическое переполнение. При этом алгоритм запоминает матрицы преобразования (матрицы ортогонализации). После «очистки» векторов интегрирование продолжается до следующей опасной точки. Дойдя до правого конца и удовлетворив второе краевое условие, алгоритм совершает обратный ход, используя сохраненные матрицы для восстановления истинного физического решения. Метод Годунова стал золотым стандартом надежности для расчета напряженно-деформированного состояния сложнейших оболочечных конструкций.