Жёсткие и нежёсткие ОДУ: почему явный метод Эйлера ломается
Коротко: Жёсткость — свойство задачи, а не метода; лечится переходом на неявные схемы. Явный берёт шаг из устойчивости (h < 2/|λ_макс|), неявный — из точности: A-устойчивость снимает запрет на шаг, L-устойчивость — следы быстрых мод. Быстрый диагноз: два метода, один шаг, разные ответы — задача жёсткая.
Задача одной строкой: , . Решение образцово-приличное: за первые несколько тысячных секунды оно прилипает к квазистационарной кривой и дальше просто следит за косинусом с микроскопическим запаздыванием. А теперь явный Эйлер с шагом : на первой секунде лёгкая рябь, к пятой — числа порядка . Уравнение не меняли, метод не меняли — шаг перевалил через , и вычисление сгорело.
Это и есть жёсткость: в задаче смешаны процессы сильно разных скоростей, и самый быстрый из них, давно умерев в решении, продолжает диктовать шаг явному методу. Ниже — вывод границы , определение жёсткости через собственные значения якобиана, честный эксперимент с двумя методами на двух шагах и практическая диагностика. Механика явного метода — в уроке метод Эйлера, фон по устойчивости — в уроке устойчивость решений, вычислительная кухня — в уроке численное решение ОДУ.
| Критерий | Жёсткие ОДУ | Нежёсткие ОДУ |
|---|---|---|
| Собственные значения якобиана | — сотни и тысячи | один порядок величин |
| Масштабы времени | быстрая мода умирает за , но навязывает шаг всему счёту | одно характерное время жизни |
| Явный Эйлер | шаг — доли миллисекунды | шаг диктуется точностью |
| Неявный Эйлер | работает при любом (A-устойчивость) | тоже работает, но Ньютон не окупается |
| Симптом поломки явного метода | пила или взрыв при формально разумном | просто крупная ошибка при крупном |
| Лечение | неявные схемы, L-устойчивые методы Гира/BDF | явные методы Рунге—Кутты |
Почему явный Эйлер взрывается уже при h = 0,0021?#
Достаточно посмотреть на тестовое уравнение с . Один шаг явного Эйлера умножает отклонение от равновесия на фиксированный множитель — и ошибка обязана гаснуть, а не расти:
Проверяем на нашем уравнении (), интегрируя до : при множитель — решение ограничено; при множитель ровно — незатухающая пила; при множитель , и максимум решения за пять секунд достигает порядка . Двухпроцентное превышение шага — девяносто порядков на выходе. При этом неявный Эйлер на том же отрезке спокойно работает хоть с : его множитель по модулю всегда меньше единицы.
Как определить жёсткость через собственные значения якобиана?#
Для системы матрица частных производных — якобиан — несёт собственные значения ; как их находят — в уроке собственные значения и собственные векторы. Задача жёсткая, если все лежат в левой полуплоскости, а их модули разделены в разы:
Физика за формулой: каждой моде отвечает своя постоянная времени — время затухания в раз (см. термин постоянная времени). Быстрая мода умирает за пять тысячных секунды и дальше невооружённым глазом не видна, но явному методу она выставляет счёт за шаг на всём интервале. Решение тем временем прилипает к медленной траектории: во вступительной задаче медленный процесс — косинус, а быстрый — релаксация с ; частное решение вида для таких линейных уравнений строится в уроке линейные неоднородные ДУ.
Что показывают числа: как ведут себя оба метода на двух шагах?#
Эксперимент: , — сознательно стартуем не на квазистационарной кривой, даём начальный толчок величиной около единицы. Точное решение известно: . Гоняем явный и неявный Эйлер и меряем максимальную ошибку против него:
| Метод | Шаг $h$ | Множитель шага | max|ошибка| на $[0{,}5;\, 5]$ | Что видит глаз |
|---|---|---|---|---|
| явный Эйлер | 0,05 | ≈ 0,001 | толчок убит за один шаг, решение гладкое | |
| явный Эйлер | 0,1 | ≈ 1,0 | пила: ошибка не гаснет, решение дёргается с размахом около 2 | |
| явный Эйлер | 0,11 | ≈ 3 700 | ошибка умножается на 1,2 за шаг: | |
| неявный Эйлер | 0,1 | ≈ 0,006 | толчок гаснет втрое за шаг, дальше гладко | |
| неявный Эйлер | 0,05 | ≈ 0,002 | то же, вдвое точнее |
Три симптома в одной таблице. Шаг : множитель нулевой — начальный толчок истреблён мгновенно, живёт только ошибка аппроксимации. Шаг : ровно граница устойчивости, — толчок вспоминается бесконечно пилой, хотя за 0,5 секунды он в решении давно умер. Шаг : рост в 1,2 раза за шаг, и через 45 шагов ошибка — тысячи. Неявный метод при любом из этих шагов спокоен: его множитель по модулю меньше единицы всегда, а при большом близок к нулю — сверхбыстрые моды он не гасит, а хоронит.
Тот же счёт для вступительной задачи с : явный жив при , у границы пилит, за границей улетает в ; неявный при ведёт решение с максимальной ошибкой порядка — шаг в пять раз крупнее всего допустимого бюджета явного метода. Вот цена вопроса: не «точнее/грубее», а «возможно/невозможно».
Чем неявная схема платит за устойчивость: что такое A- и L-устойчивость?#
Неявный Эйлер подставляет правую часть в неизвестную точку:
Для нашей задачи уравнение линейное, и шаг сводится к одной строке: . Для общей нелинейной на каждом шаге решают нелинейное уравнение методом Ньютона — итерационным методом с двумя–пятью вычислениями и якобиана, а для систем — ещё и системой линейных уравнений (техника — в уроке численные методы для СЛАУ). Шаг дорожает в разы; окупается тем, что шаг можно поднять на порядки.
Классификация устойчивости короткая. A-устойчивость: область устойчивости содержит всю левую полуплоскость — любой шаг годится, пока ; неявный Эйлер ею обладает. L-устойчивость — усиление: множитель метода стремится к нулю при , то есть бесконечно быстрые моды уничтожаются за один шаг:
Разница между A и L не академична: трапеции (Кранк—Николсон) при крупном шаге на жёсткой задаче дают незатухающую рябь с множителем — устойчиво по букве закона и некрасиво по существу. Поэтому в жёстких решателях стоят именно L-устойчивые схемы: неявный Эйлер, методы Гира (BDF), неявные Рунге—Кутты типа Radau.
Как диагностировать жёсткость на практике?#
- Шаг 1: решите задачу двумя методами с одинаковым шагом — явным и неявным. Явный взорвался или зашёлся пилой, а неявный спокоен? Перед вами жёсткая задача.
- Шаг 2: выпишите якобиан и посчитайте собственные значения: отношение максимального модуля к минимальному больше сотни — готовьтесь к неявным схемам.
- Шаг 3: оцените бюджет явного счёта: сколько шагов продиктует условие на всём интервале. Миллионы однотипных шагов — время менять метод.
- Шаг 4: проверьте, нужна ли быстрая мода вообще: если процесс умирает за и дальше не виден, L-устойчивая схема похоронит его честно.
- Шаг 5: в готовых пакетах жёсткость включается выбором решателя (ode15s, Radau, BDF) — но диагноз «жёсткая/нежёсткая» всё равно остаётся за вами: пакет угадает не всегда.
| Свойство | Явный Эйлер | Неявный Эйлер |
|---|---|---|
| Формула шага | ||
| Устойчивость | при — шаг под диктовку быстрой моды | A-устойчив: любой при |
| Быстрые моды | навязывают шаг всему счёту | L-устойчивость: гасятся за один шаг |
| Стоимость шага | одно вычисление | линейно — одна формула; в общем случае Ньютон: , якобиан, СЛАУ |
| Шаг ограничен | устойчивостью | только точностью |
| Когда применять | нежёсткие задачи, дешёвая , короткие интервалы | жёсткие задачи, длинные интервалы, кинетика, цепи |
. При каких шагах явный Эйлер останется устойчивым?
На задаче , : явный Эйлер при выдаёт пилу с размахом около 2, неявный при том же шаге — гладкое решение. Диагноз?
Частые вопросы
Как распознать жёсткую задачу, не решая её?
Посмотрите на якобиан правой части: если собственные значения лежат в левой полуплоскости, а их модули различаются в сотни раз, задача жёсткая. Косвенный тест дешевле счёта: решите задачу двумя методами с одинаковым шагом. Явный взорвался или зашёлся пилой, неявный спокоен — перед вами жёсткость, и лечится она переходом на неявные схемы.
Почему неявные методы считаются дороже явных?
Явному хватает одного вычисления правой части на шаг. Неявный решает уравнение относительно нового значения: для нелинейной задачи это метод Ньютона — несколько вычислений и якобиана плюс решение системы линейных уравнений на каждой итерации. Плату отбивает шаг: его можно поднять на порядки, и суммарная стоимость счёта падает.
Нужны ли жёсткие решатели всегда?
Нет. Если собственные значения якобиана одного порядка, шаг всё равно выбирается ради точности, и неявная схема лишь добавит возни с Ньютоном. Жёсткость становится проблемой на длинных интервалах, где условие связывает руки именно тогда, когда решение давно вышло на плавную траекторию и быстрого процесса больше не видно.
Как связаны шаг и точность при решении жёстких задач?
У неявного метода шаг ограничен только точностью, поэтому его выбирает контроль локальной ошибки: погрешность шага Эйлера порядка . Рабочий приём — считать с шагом и и сравнивать решения: разность прикидывает ошибку. Если при укрупнении шага решение не портится, устойчивость вас больше не диктует — счёт вышел на точностный режим.
Следующий шаг: прогоните эксперимент из таблицы руками — пять строк кода на явный и неявный Эйлер, и граница устойчивости перестанет быть абстракцией. Порядок действий при решении уравнений — в разборе, как решать ДУ, задачи для тренировки — в задачах по дифференциальным уравнениям, счёт — в тренажёре по дифурам; формулы под рукой — в шпаргалке по ДУ. Ошибки аппроксимации и округления, которые добавляются поверх устойчивости, разобраны в уроке источники погрешностей; сравнение двух явных методов — в сравнении РК4 против Эйлера, а исходные определения — в терминах дифференциальное уравнение и в уроке системы ДУ.