Метод Рунге–Кутты 4-го порядка против метода Эйлера
Коротко: Численный эксперимент считает РК4: при h = 0,1 его ошибка на x = 0,5 равна 1,3·10⁻⁶ против 7,6·10⁻² у Эйлера, а точность 10⁻⁶ стоит 6 шагов против 415 000. Эйлер — инструмент черновика: прикидки, обучение, отладка.
Задача с начальным условием — подопытный кролик численных методов: правая часть простая, а ответ известен наперёд — . Проверка занимает две строки: подставляем ноль — , начальное условие выполнено; дифференцируем — , и правая часть даёт ровно то же. Значит, оба численных ответа можно сверить с эталоном до последнего знака. Сделаем это честно: оба метода пройдут отрезок от нуля до с шагом , и разница окажется драматической — у Эйлера к финишу накопится ошибка , у Рунге–Кутты четвёртого порядка — .
Оба метода — шаговые: решение строится по узлам , и каждый шаг использует уже посчитанное значение. Разница — в том, сколько информации о правой части метод успевает собрать внутри одного шага. Механика шага Эйлера разобрана в уроке метод Эйлера, а теория ошибок шаговых схем — в курсе численное решение ОДУ; здесь же — живой численный эксперимент с таблицей ошибок.
Таблица ошибок: пять узлов, два метода#
Числа ниже получены прямым прогоном обоих методов (скрипт с арифметикой лежит рядом с проектом — можно повторить в пять строк кода). В каждом узле — точное значение , численные ответы и модуль ошибки. Обратите внимание на порядок величин в столбцах ошибок: слева сотые доли, справа миллионные.
| x | Точное решение | Эйлер | Ошибка Эйлера | РК4 | Ошибка РК4 |
|---|---|---|---|---|---|
| 0,1 | 1,110342 | 1,100000 | 1,03·10⁻² | 1,110342 | 1,7·10⁻⁷ |
| 0,2 | 1,242806 | 1,220000 | 2,28·10⁻² | 1,242805 | 3,7·10⁻⁷ |
| 0,3 | 1,399718 | 1,362000 | 3,77·10⁻² | 1,399717 | 6,2·10⁻⁷ |
| 0,4 | 1,583649 | 1,528200 | 5,55·10⁻² | 1,583648 | 9,2·10⁻⁷ |
| 0,5 | 1,797443 | 1,721020 | 7,64·10⁻² | 1,797441 | 1,3·10⁻⁶ |
Смотрите на траекторию ошибок Эйлера: 0,010; 0,023; 0,038; 0,055; 0,076. Ошибка не стоит на месте — она копится от шага к шагу, потому что каждый новый шаг стартует уже с испорченной точки и добавляет свою порцию. К концу отрезка множитель между соседними узлами сходит к величине порядка — так растёт и само решение, у которого главная мода . У РК4 картина другая: 1,7·10⁻⁷; 3,7·10⁻⁷; 6,2·10⁻⁷; 9,2·10⁻⁷; 1,3·10⁻⁶ — рост есть, но в исходной единицах это тысячные доли процента. На финишной прямой разница между методами — 60 000 раз.
Почему O(h⁴) против O(h): анатомия ошибки#
Причина лежит в ряде Тейлора — полный разбор в уроке формула Тейлора. Точное решение за шаг меняется на Шаг Эйлера берёт из этого ряда только первый член с . Всё, что начинается с , — локальная ошибка шага: на нашей задаче в точке производная , и первый шаг врёт примерно на . Сверьте с таблицей: реальная ошибка первого шага — 0,010342. Совпадение не случайность, а подтверждение модели.
За пять шагов локальные ошибки складываются в глобальную, и у Эйлера она масштабируется как : делим шаг пополам — ошибка падает примерно вдвое. РК4 устроен хитрее: четыре наклона подобраны так, что при разложении в ряд Тейлора члены до включительно взаимно сокращаются. Локальная ошибка шага — , глобальная на отрезке — ; аккуратная терминология — в терминах порядок сходимости и в карточке метод Рунге–Кутты четвёртого порядка.
Порядок проверяется на наших же числах: уменьшаем с 0,1 до 0,05 и смотрим на ошибку в . У Эйлера 0,0764 переходит в 0,0397 — отношение 1,93, близко к двум, эмпирический порядок . У РК4 1,26·10⁻⁶ переходит в 8,2·10⁻⁸ — отношение 15,4, близко к шестнадцати, . Теория предсказала 2 и 16 — практика согласилась с точностью до нескольких процентов. Отсюда же растёт и разрыв между методами с уменьшением шага: четыре десятичных знака разницы в порядке — это множитель, который на каждом уплотнении сетки растёт ещё в восемь раз.
Первый шаг уже показывает всю пропасть между методами. Эйлер из шагает в — ошибка 0,010342. РК4 приходит в 1,110342 с ошибкой 1,7·10⁻⁷ — в 61 000 раз меньше, хотя потратил четыре вычисления правой части против одного. Дальше по отрезку разрыв только растёт, потому что у Эйлера каждая новая порция ошибки ложится на уже накопленную.
Цена точности: шагов на единицу точности#
Практичный критерий выбора метода — сколько шагов и вычислений правой части стоит заданная точность. Дожмём оба метода до ошибки в точке . У РК4 хватает шести шагов (): прямым счётом — ошибка 6,2·10⁻⁷, всего 24 вычисления . У Эйлера при 400 000 равномерных шагов ошибка всё ещё 1,03·10⁻⁶, порог берётся около 415 000 шагов — и столько же вычислений . Разница в семнадцать тысяч раз по числу обращений к правой части; если — не «икс плюс игрек», а тяжёлая модель, это разница между секундами и сутками.
| Метод | Порядок | Вычислений f на шаг | Шагов до 10⁻⁶ на [0; 0,5] | Когда применять |
|---|---|---|---|---|
| Эйлер | 1 | около 415 000 | грубые прикидки, обучение, отладка, эскиз интегральной кривой | |
| РК4 | 4 | 6 | численный эксперимент, отчётные значения, моделирование |
Полезно перевести порядок в курс валют. Одна дополнительная верная десятичная цифра стоит Эйлеру десятикратного роста числа шагов, а РК4 — роста в раза. Хотите пять знаков вместо трёх? Эйлер умножает счёт на сто, РК4 — примерно на три. Именно поэтому в реальных расчётах порядок метода важнее скорости одного шага: дешёвый шаг Эйлера не окупается своей дешевизной ни на одном порядке точности выше черновой.
- Оценить, как вообще ведёт себя решение — растёт, затухает, колеблется, — пока формула решения не найдена. Три верных знака тут лишние.
- Понять механику шаговых методов: на Эйлере видно само происхождение ошибки, локальная и глобальная части разделяются руками.
- Отладить код более серьёзного метода: простая схема — прозрачный эталон, и расхождение сразу указывает на баг в правой части или в шаге.
- Считать на очень коротком отрезке, где решение не успевает уйти от касательной: на при Эйлер даёт около трёх верных знаков.
Шаг РК4 уменьшили вдвое: заменяем на . Во сколько раз примерно упадёт глобальная ошибка на отрезке?
Ошибка Эйлера в точке при равна . Сколько примерно равномерных шагов нужно, чтобы дожать её до ?
Где Эйлер — разумный выбор, а не вредительство?
Частые вопросы
Что означает O(h⁴) у метода Рунге–Кутты 4-го порядка?
Это порядок глобальной ошибки на фиксированном отрезке: при уменьшении шага в раз ошибка падает примерно в раз. Пополам шаг — ошибка в 16 раз меньше; в нашем эксперименте получилось 15,4. Четвёрка в названии метода и четвёрка в показателе — одно и то же число: четыре наклона – подобраны так, чтобы убить члены ряда Тейлора до включительно.
Какая погрешность у метода Эйлера на отрезке?
Глобальная ошибка масштабируется как — метод первого порядка. Локальная ошибка одного шага порядка , но за шагов они складываются в . В эксперименте при к накопилось , и ошибка росла от узла к узлу, потому что каждый шаг стартовал уже с испорченной точки.
Когда метода Эйлера действительно достаточно?
Когда задача — качественная, а не количественная: понять форму решения, проверить знак и масштаб, показать студенту, откуда берётся ошибка, отладить код серьёзного метода. Ещё один законный случай — очень короткие отрезки при мелком шаге. Для любых отчётных чисел берите РК4: разница в цене вопроса — 415 000 шагов против 6 при точности .
Почему РК4 не всегда лучше Эйлера, ведь он точнее?
Скорость появления ответа у Эйлера выше там, где точность не нужна, а его прозрачность помогает в обучении и отладке. Но главная честная оговорка — жёсткие задачи: оба метода явные, и на жёстких системах шаг любого из них режется условием устойчивости до бессмысленно мелкого. Там нужны неявные схемы — это уже другая история и другие методы.
Как на практике проверить порядок метода?
Прогоните задачу с известным решением двумя шагами, и , снимите ошибки и и посчитайте . В нашем эксперименте Эйлер дал , РК4 — : оба числа совпали с паспортными в пределах нескольких процентов. Если получилось что-то иное — ищите ошибку в коде правой части.
Что дальше: механику шагов отработайте в тренажёре по дифференциальным уравнениям и тренажёре численных методов, задачи с разборами — в задачах по дифурам, формулы под рукой — в шпаргалке по дифференциальным уравнениям, маршрут решения — в разборе как решать ДУ. Определение объекта — в терминах дифференциальное уравнение. Смежное сравнение с другим численным экспериментом, где правая часть , — в материале Рунге–Кутта 4 и Эйлер: опыт y′ = y; а про то, что бывает, когда явным методам (включая РК4) становится плохо, — в сравнении жёсткие ОДУ против мягких.