Численное решение ОДУ: методы Эйлера, Хойна и Рунге–Кутта
Задача Коши численно: схема Эйлера, предиктор-корректор Хойна и классический РК4 с весами 1:2:2:1. Сравнение на y′ = y при h = 0,5 и 0,25, жёсткие уравнения и метод стрельбы.
Спутник вошёл в верхние слои атмосферы. Известны его координаты и скорость сейчас, известно уравнение движения — а аналитического решения нет и не будет: сопротивление атмосферы зависит от плотности, плотность — от высоты, высота — от решения. Спрашивать у природы формулу бесполезно. Спрашивать нужно по-другому: известна точка и наклон траектории в ней — куда мы попадём через малую долю секунды? Ответив на этот вопрос многократно, получим траекторию по кусочкам. Так работают все численные решатели дифференциальных уравнений — от калькулятора до аэродинамического пакета.
Задача Коши и идея шагов#
Задача Коши: дано уравнение первого порядка и начальное условие . Требуется восстановить решение на отрезке . Существование и единственность гарантируются теоремой Пикара (при разумных условиях на ), но теорема молчит о том, как решение записать. Численный метод отвечает так: идём с постоянным шагом , на каждом шаге превращаем наклон в приращение значения , и пересчитываем: , .
Методы различаются лишь одним: сколько раз и где спросить наклон внутри шага. Один запрос — Эйлер. Два — Хойн. Четыре — классический Рунге–Кутта. Больше запросов — дороже шаг, но точнее результат; вся классификация методов умещается в этот торг.
Метод Эйлера: ломаная и её цена#
Геометрию метода Эйлера видно без формул: на каждом отрезке ломаная идёт по касательной, проведённой в его левом конце. Касательная честна рядом с точкой касания — дальше начинает врать, и вранье копится. Точность первого порядка, : уменьшили шаг вдвое — ошибка упала примерно вдвое. У выпуклых решений ломаная Эйлера систематически отстаёт: она всё время следует за старым наклоном, тогда как кривая этот наклон меняет.
Ручной расчёт на этом же уравнении: один шаг даёт против точного . Ошибка за один шаг — и так каждый шаг. Прежде чем осуждать метод, посмотрите на его достоинства: формула из одной строки, ноль лишних вычислений функции, и как первый метод в истории он научил человечество считать решения, которых не существует в формулах. Полная техника этого метода с ручными таблицами — в соседнем уроке метод Эйлера; здесь же идём дальше.
Улучшенный Эйлер (Хойн): предиктор-корректор#
Ошибка Эйлера — от устаревшего наклона. Логично сначала спрогнозировать конец шага грубо (методом Эйлера), посчитать наклон там, а затем пересчитать шаг по среднему из двух наклонов. Это схема Хойна (она же — улучшенный или модифицированный Эйлер):
Два вычисления функции на шаг вместо одного — и точность поднимается до : шаг вдвое меньше, ошибка примерно вчетверо меньше. На нашем шаге : прогноз , наклон на конце , итог . Ошибка вместо эйлеровской — в шесть раз лучше за вдвое большую работу.
- Предиктор: — грубый эйлеровский прогноз на конец шага
- Наклон на конце шага:
- Корректор: — шаг пересчитан по среднему наклону
- Точное : ошибка против эйлеровской — в шесть раз лучше
Классический РК4: четыре наклона#
Самый знаменитый численный метод двадцатого века добирает точность, взвешивая четыре наклона: в начале шага, дважды — посередине (второй — по первому пробному наклону) и в конце (по второму срединному). Схема целиком:
Почему веса именно такие? Схема подбирается так, чтобы её разложение по степеням совпало с разложением точного решения вплоть до — уравнений на коэффициенты хватает как раз на четыре порядка. Для линейного уравнения шаг РК4 умножает значение на — обрезанный ряд экспоненты, и это лучшее, что можно сделать с четырьмя запросами наклона. Тот же вопрос «сколько точек брать», только для интегралов, разбирался в уроке про численное интегрирование: РК4 — ближайший родственник формулы Симпсона.
Кто точнее: сравнение на y′ = y#
Прогоним все три метода до точки при двух шагах. Точный ответ: . Уравнение растёт геометрически, поэтому за каждым методом закреплён свой множитель на шаг: у Эйлера , у Хойна , у РК4 — обрезанный ряд до .
| Метод | $y(2)$ при $h = 0{,}5$ | Ошибка | $y(2)$ при $h = 0{,}25$ | Ошибка |
|---|---|---|---|---|
| Эйлер | 5,0625 | 2,33 | 5,9605 | 1,43 |
| Хойн | 6,9729 | 0,416 | 7,2622 | 0,127 |
| РК4 | 7,3840 | 0,0051 | 7,3887 | 0,00039 |
| Точное решение | 7,3891 | — | 7,3891 | — |
- Эйлер: ошибка упала в раза при удвоении числа шагов — первый порядок только разгоняется
- Хойн: падение в раза — второй порядок приближается к своему теоретическому
- РК4: падение в раз — четвёртый порядок идёт к своему пределу
- При малых соотношения выравниваются ровно до , и : так на практике проверяют порядок метода
Уточним язык, чтобы не путаться в отчётах: у метода порядка ошибка на одном шаге масштабируется как , а накопленная на всём отрезке — как . Причина проста: шагов , и умножает локальную ошибку. Именно поэтому «порядок метода» в таблицах — это всегда порядок глобальной ошибки: локальная точность РК4 — пятый порядок, глобальная — четвёртый; обе цифры встречаются в литературе, и теперь вы знаете, какая где.
Читается таблица и по-другому: РК4 при грубом шаге точнее Эйлера при на три порядка — и при этом дешевле в пересчёте на единицу точности. Четыре вычисления функции против одного, но шаг можно брать в разы крупнее. На гладких задачах побеждает тот, у кого выше порядок, а не тот, кто чаще шагает.
Жёсткие уравнения: когда явные методы взрываются#
На гладкой задаче всё было прилично. Возьмём теперь , — решение стремительно умирает к нулю. Устойчивость явного Эйлера требует при , то есть шаг . Возьмём — чуть крупнее: множитель шага , и значения идут — растут по модулю вдвое каждое шаг, хотя настоящее решение к моменту уже меньше .
Такие задачи с резко разными скоростями процессов называются жёсткими: быстрая составляющая (химическая реакция за миллисекунды) диктует крошечный шаг явному методу, хотя интерес к медленной (нагрев реактора за часы). Лечится переходом к неявным схемам: например, неявный Эйлер стабилен на любом шаге — ценой решения уравнения на каждом шаге. Для жёстких систем это плата обязательная, и все промышленные решатели её платят. Почему решения вообще «взрываются» по собственным значениям матрицы системы — отдельная красивая история про устойчивость по Ляпунову.
Практический стандарт для нежёстких задач — адаптивные схемы: пара методов разных порядков (обычно РК4 и РК5, схема Дормана–Принса) считается одновременно, и их разность даёт локальную оценку ошибки без обращения к точному решению — тот же дух, что правило Рунге в численном интегрировании. Шаг автоматически сжимается там, где решение крутое, и растёт на спокойных участках. Именно так работает ode45 в MATLAB и почти любой современный солвер по умолчанию.
Краевые задачи и метод стрельбы: краткий обзор#
В задаче Коши все условия даны в одной точке. В краевой задаче условия распределены по концам отрезка: например, , , . Прямые схемы РК4 к такому виду не приспособлены — им нужен полный стартовый набор и . Метод стрельбы обходит это остроумно: угадаем недостающее начальное условие — пусть — решим задачу Коши любым РК4 и посмотрим, куда попали в правом конце. Промахнёмся — подкорректируем и «выстрелим» снова.
В линейном примере зависимость от прицела прямая: решение с наклоном равно , на правом конце , значит попасть в единицу даёт — и решение найдено за один выстрел. Для нелинейных уравнений зависимость от кривая, и прицеливание ведут методом секущих или дихотомии. Альтернатива стрельбе — конечные разности: уравнение и краевые условия заменяют системой разностных уравнений, то есть большой СЛАУ — полный круг возвращается к уроку численные методы решения СЛАУ. Словарное имя этой конструкции — разностная схема.
Следующий конкретный шаг: вернитесь к симулятору в начале урока, включите и сверьте показание «Ошибка» с таблицей — сходится? Потом посчитайте руками один шаг Хойна для из соседнего урока и потренируйте тему в тренажёре по дифференциальным уравнениям. Оценку реальной точности численного результата стоит сверять с приёмами из урока про источники погрешностей — двойной расчёт с разными шагами есть частный случай правила Рунге.
Один шаг метода Эйлера для , при . Чему равно ?
Шаг метода РК4 уменьшили вдвое. Примерно во сколько раз упадёт ошибка?
Задача , решается явным Эйлером с шагом . Что произойдёт?
Частые вопросы
Чем улучшенный метод Эйлера отличается от обычного?
Обычный метод Эйлера берёт наклон только в начале шага и имеет точность O(h). Улучшенный (Хойн) делает два прохода: сначала грубо прогнозирует конец шага, потом пересчитывает приращение по среднему из начального и конечного наклонов. Это схема «предиктор-корректор» второго порядка: при удвоении числа шагов ошибка падает примерно вчетверо, цена — два вычисления функции на шаг.
Почему метод Рунге–Кутты четвёртого порядка называют классическим?
Он оптимален в своём классе: четыре вычисления функции на шаг — минимальное число, за которое можно выжать четвёртый порядок точности. Схема проста, устойчива на обычных задачах и не требует ничего, кроме права вычислять правую часть. Поэтому до появления адаптивных и жёстких решателей именно РК4 был рабочей лошадью инженерных расчётов — и остаётся первым выбором по умолчанию.
Что такое жёсткое дифференциальное уравнение простыми словами?
Это задача, где процессы с очень разными скоростями идут одновременно: что-то затухает за микросекунды, что-то меняется за часы. Явные методы вынуждены шагать со скоростью самого быстрого процесса, даже если он давно умер в решении, — иначе численный ответ взрывается. Спасение — неявные методы, которые устойчивы при большом шаге, хотя каждый шаг требует решать уравнение.
Как численно решить краевую задачу для ОДУ?
Два основных пути. Метод стрельбы: угадать недостающее условие в начале (например, наклон), решить задачу Коши методом Рунге–Кутты и подбором угаданного параметра попасть в заданное значение на другом конце. Конечные разности: заменить производные разностями на сетке и свести задачу к системе линейных уравнений. Первый прост и хорош для гладких задач, второй устойчивее для сложных случаев.
Готовитесь к контрольной?
Чеклист тем по «Численные методы»: что вы уже умеете, что повторить и в каком порядке.
Открыть чеклист предмета →
Проверьте себя в бою
Босс-экзамен по «Численные методы»: квизы всех уроков плюс бесконечный поток сгенерированных задач. Каждая попытка — новый расклад.
Начать босс-экзамен →