МатВектор

Command Palette

Search for a command to run...

🌊 Диффуры🔢 Численные методы

Метод Рунге–Кутты 4-го порядка против метода Эйлера

РК4Эйлер

Коротко: Численный эксперимент считает РК4: при h = 0,1 его ошибка на x = 0,5 равна 1,3·10⁻⁶ против 7,6·10⁻² у Эйлера, а точность 10⁻⁶ стоит 6 шагов против 415 000. Эйлер — инструмент черновика: прикидки, обучение, отладка.

Задача с начальным условием — подопытный кролик численных методов: правая часть простая, а ответ известен наперёд — . Проверка занимает две строки: подставляем ноль — , начальное условие выполнено; дифференцируем — , и правая часть даёт ровно то же. Значит, оба численных ответа можно сверить с эталоном до последнего знака. Сделаем это честно: оба метода пройдут отрезок от нуля до с шагом , и разница окажется драматической — у Эйлера к финишу накопится ошибка , у Рунге–Кутты четвёртого порядка — .

Оба метода — шаговые: решение строится по узлам , и каждый шаг использует уже посчитанное значение. Разница — в том, сколько информации о правой части метод успевает собрать внутри одного шага. Механика шага Эйлера разобрана в уроке метод Эйлера, а теория ошибок шаговых схем — в курсе численное решение ОДУ; здесь же — живой численный эксперимент с таблицей ошибок.

шаг Эйлера: движение по касательной, проведённой в начале отрезка; здесь
шаг РК4: четыре пробных наклона — в начале, дважды в середине и в конце шага — и взвешенная комбинация

Таблица ошибок: пять узлов, два метода#

Числа ниже получены прямым прогоном обоих методов (скрипт с арифметикой лежит рядом с проектом — можно повторить в пять строк кода). В каждом узле — точное значение , численные ответы и модуль ошибки. Обратите внимание на порядок величин в столбцах ошибок: слева сотые доли, справа миллионные.

xТочное решениеЭйлерОшибка ЭйлераРК4Ошибка РК4
0,11,1103421,1000001,03·10⁻²1,1103421,7·10⁻⁷
0,21,2428061,2200002,28·10⁻²1,2428053,7·10⁻⁷
0,31,3997181,3620003,77·10⁻²1,3997176,2·10⁻⁷
0,41,5836491,5282005,55·10⁻²1,5836489,2·10⁻⁷
0,51,7974431,7210207,64·10⁻²1,7974411,3·10⁻⁶
y' = x + y, y(0) = 1, h = 0,1: ошибка Эйлера растёт по отрезку в семь раз, ошибка РК4 остаётся на уровне 10⁻⁷–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грубые прикидки, обучение, отладка, эскиз интегральной кривой
РК446численный эксперимент, отчётные значения, моделирование
Цена одной и той же точности 10⁻⁶ на задаче y' = x + y, y(0) = 1

Полезно перевести порядок в курс валют. Одна дополнительная верная десятичная цифра стоит Эйлеру десятикратного роста числа шагов, а РК4 — роста в раза. Хотите пять знаков вместо трёх? Эйлер умножает счёт на сто, РК4 — примерно на три. Именно поэтому в реальных расчётах порядок метода важнее скорости одного шага: дешёвый шаг Эйлера не окупается своей дешевизной ни на одном порядке точности выше черновой.

  • Оценить, как вообще ведёт себя решение — растёт, затухает, колеблется, — пока формула решения не найдена. Три верных знака тут лишние.
  • Понять механику шаговых методов: на Эйлере видно само происхождение ошибки, локальная и глобальная части разделяются руками.
  • Отладить код более серьёзного метода: простая схема — прозрачный эталон, и расхождение сразу указывает на баг в правой части или в шаге.
  • Считать на очень коротком отрезке, где решение не успевает уйти от касательной: на при Эйлер даёт около трёх верных знаков.
Проверь себя+15 XP

Шаг РК4 уменьшили вдвое: заменяем на . Во сколько раз примерно упадёт глобальная ошибка на отрезке?

Проверь себя+15 XP

Ошибка Эйлера в точке при равна . Сколько примерно равномерных шагов нужно, чтобы дожать её до ?

Проверь себя+15 XP

Где Эйлер — разумный выбор, а не вредительство?

Частые вопросы

Что означает O(h⁴) у метода Рунге–Кутты 4-го порядка?

Это порядок глобальной ошибки на фиксированном отрезке: при уменьшении шага в раз ошибка падает примерно в раз. Пополам шаг — ошибка в 16 раз меньше; в нашем эксперименте получилось 15,4. Четвёрка в названии метода и четвёрка в показателе — одно и то же число: четыре наклона – подобраны так, чтобы убить члены ряда Тейлора до включительно.

Какая погрешность у метода Эйлера на отрезке?

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

Когда метода Эйлера действительно достаточно?

Когда задача — качественная, а не количественная: понять форму решения, проверить знак и масштаб, показать студенту, откуда берётся ошибка, отладить код серьёзного метода. Ещё один законный случай — очень короткие отрезки при мелком шаге. Для любых отчётных чисел берите РК4: разница в цене вопроса — 415 000 шагов против 6 при точности .

Почему РК4 не всегда лучше Эйлера, ведь он точнее?

Скорость появления ответа у Эйлера выше там, где точность не нужна, а его прозрачность помогает в обучении и отладке. Но главная честная оговорка — жёсткие задачи: оба метода явные, и на жёстких системах шаг любого из них режется условием устойчивости до бессмысленно мелкого. Там нужны неявные схемы — это уже другая история и другие методы.

Как на практике проверить порядок метода?

Прогоните задачу с известным решением двумя шагами, и , снимите ошибки и и посчитайте . В нашем эксперименте Эйлер дал , РК4 — : оба числа совпали с паспортными в пределах нескольких процентов. Если получилось что-то иное — ищите ошибку в коде правой части.

Что дальше: механику шагов отработайте в тренажёре по дифференциальным уравнениям и тренажёре численных методов, задачи с разборами — в задачах по дифурам, формулы под рукой — в шпаргалке по дифференциальным уравнениям, маршрут решения — в разборе как решать ДУ. Определение объекта — в терминах дифференциальное уравнение. Смежное сравнение с другим численным экспериментом, где правая часть , — в материале Рунге–Кутта 4 и Эйлер: опыт y′ = y; а про то, что бывает, когда явным методам (включая РК4) становится плохо, — в сравнении жёсткие ОДУ против мягких.