Interested Article - Метод Рунге — Кутты

Ме́тоды Ру́нге — Ку́тты (в литературе встречается название методы Рунге — Кутта ) — большой класс численных методов решения задачи Коши для обыкновенных дифференциальных уравнений и их систем. Первые методы данного класса были предложены около 1900 года немецкими математиками К. Рунге и М. В. Куттой .

К классу методов Рунге — Кутты относятся явный метод Эйлера и модифицированный метод Эйлера с пересчётом, которые представляют собой соответственно методы первого и второго порядка точности. Существуют стандартные явные методы третьего порядка точности, не получившие широкого распространения. Наиболее часто используется и реализован в различных математических пакетах ( Maple , MathCAD , Maxima ) классический метод Рунге — Кутты , имеющий четвёртый порядок точности. При выполнении расчётов с повышенной точностью всё чаще применяются методы пятого и шестого порядков точности . Построение схем более высокого порядка сопряжено с большими вычислительными трудностями .

Методы седьмого порядка должны иметь по меньшей мере девять стадий, а методы восьмого порядка — не менее 11 стадий. Для методов девятого и более высоких порядков (не имеющих, впрочем, большой практической значимости) неизвестно, сколько стадий необходимо для достижения соответствующего порядка точности .

Классический метод Рунге — Кутты четвёртого порядка

Метод Рунге — Кутты четвёртого порядка при вычислениях с постоянным шагом интегрирования столь широко распространён, что его часто называют просто методом Рунге — Кутты.

Рассмотрим задачу Коши для системы обыкновенных дифференциальных уравнений первого порядка (далее , а ).

Тогда приближенное значение в последующих точках вычисляется по итерационной формуле:

Вычисление нового значения проходит в четыре стадии:

где — величина шага сетки по .

Этот метод имеет четвёртый порядок точности. Это значит, что ошибка на одном шаге имеет порядок , а суммарная ошибка на конечном интервале интегрирования имеет порядок .

Явные методы Рунге — Кутты

Семейство явных методов Рунге — Кутты является обобщением как явного метода Эйлера, так и классического метода Рунге — Кутты четвёртого порядка. Оно задаётся формулами

где — величина шага сетки по , а вычисление нового значения проходит в этапов:

Конкретный метод определяется числом и коэффициентами и . Эти коэффициенты часто упорядочивают в таблицу (называемую таблицей Бутчера ):

Для коэффициентов метода Рунге — Кутты должны быть выполнены условия для . Если требуется, чтобы метод имел порядок , то следует также обеспечить условие

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

Неявные методы Рунге — Кутты

Все до сих пор упомянутые методы Рунге — Кутты являются . К сожалению, явные методы Рунге — Кутты, как правило, непригодны для решения жёстких систем уравнений из-за малой области их абсолютной устойчивости . Неустойчивость явных методов Рунге — Кутты создаёт весьма серьёзные проблемы и при .

Неустойчивость явных методов Рунге — Кутты мотивировала развитие неявных методов. Неявный метод Рунге — Кутты имеет вид :

где

Явный метод характерен тем, что матрица коэффициентов для него имеет нижний треугольный вид (включая и нулевую главную диагональ) — в отличие от неявного метода, где матрица имеет произвольный вид. Это также видно по .

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

С другой стороны, (1961) и (1964) показали, что при любом количестве стадий существует неявный метод Рунге — Кутты с порядком точности . Это значит, например, что для описанного выше явного четырёхстадийного метода четвёртого порядка существует неявный аналог с вдвое большим порядком точности.

Неявный метод Рунге — Кутты второго порядка

Простейшим неявным методом Рунге — Кутты является модифицированный метод Эйлера «с пересчётом». Он задаётся формулой:

.

Для его реализации на каждом шаге необходимы как минимум две итерации (и два вычисления функции).

Прогноз:

.

Коррекция:

.

Вторая формула — это простая итерация решения системы уравнений относительно , записанной в форме сжимающего отображения. Для повышения точности итерацию-коррекцию можно сделать несколько раз, подставляя . Модифицированный метод Эйлера «с пересчётом» имеет второй порядок точности.

Устойчивость

Преимуществом неявных методов Рунге — Кутты в сравнении с явными является их бо́льшая устойчивость, что особенно важно при решении жестких уравнений . Рассмотрим в качестве примера линейное уравнение y' = λ y . Обычный метод Рунге — Кутты, применённый к этому уравнению, сведётся к итерации , с r , равным

где обозначает вектор-столбец из единиц . Функция называется функцией устойчивости . Из формулы видно, что является отношением двух полиномов степени , если метод имеет стадий. Явные методы имеют строго нижнюю треугольную матрицу откуда следует, что и что функция устойчивости является многочленом .

Численное решение данного примера сходится к нулю при условии с . Множество таких называется областью абсолютной устойчивости . В частности, метод называется A-устойчивым , если все с находятся в области абсолютной устойчивости. Функция устойчивости явного метода Рунге — Кутты является многочленом, поэтому явные методы Рунге — Кутты в принципе не могут быть A-устойчивыми .

Если метод имеет порядок , то функция устойчивости удовлетворяет условию при . Таким образом, представляет интерес отношение многочленов данной степени, приближающее экспоненциальную функцию наилучшим образом. Эти отношения известны как аппроксимации Паде . Аппроксимация Паде с числителем степени и знаменателем степени А-устойчива тогда и только тогда, когда

-стадийный метод Гаусса — Лежандра имеет порядок , поэтому его функция устойчивости является приближением Паде . Отсюда следует, что метод является A-устойчивым . Это показывает, что A-устойчивые методы Рунге — Кутты могут иметь сколь угодно высокий порядок. В отличие от этого, порядок А-устойчивости методов Адамса не может превышать два.

Произношение

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

Пример решения на алгоритмических языках программирования

производя замену и перенося в правую часть, получаем систему:

В программе на С# используется абстрактный класс RungeKutta, в котором следует переопределить абстрактный метод F, задающий правые части уравнений.

Пример решения в среде MATLAB

Решение систем дифференциальных уравнений методом Рунге — Кутты является одним из самых распространённых численных методов решений в технике. В среде MATLAB реализована его одна из разновидностей — . Для решения системы уравнений необходимо сначала записать функцию, вычисляющую производные, то есть функции y = g ( x , y , z ) и z = cos(3 x ) − 4 y = f ( x , y , z ), о чём сказано выше. В одном из каталогов, к которому имеется доступ из системы MATLAB , нужно создать текстовый файл с именем (например) runge.m со следующим содержимым (для MATLAB версии 5.3):

Имя файла и имя функции должно совпадать, но оно может быть любым неиспользуемым ранее.

Затем необходимо создать главный файл c именем, например, main.m , который будет выполнять основные вычисления. Этот главный файл будет содержать следующий текст:

Так как MATLAB ориентирован на работу с матрицами, решение по методу Рунге — Кутты очень легко выполняется для целого ряда x , как, например, в приведённом примере программы. Здесь решение — график функции в пределах времён от 0 до x_fin .

Решение в среде MATLAB

Переменные x и y , полученные в результате работы функции ODE45 , есть векторы значений. Очевидно, что решение конкретно заданного выше примера — второй элемент x , так как первое значение — 0, шаг интегрирования h = 0,1, а интересующее значение x = 0,1. Следующая запись в командном окне MATLAB даст искомое решение:

Ответ: y1 = 0,98768

Примечания

  1. Бахвалов Н. С. , Жидков Н. П. , Кобельков Г. М. . Численные методы. — М. : Лаборатория Базовых Знаний, 2001. — 630 с. — ISBN 5-93208-043-4 . — С. 363—375.
  2. Ильина В. А., Силаев П. К. . Численные методы для физиков-теоретиков. Ч. 2. — Москва-Ижевск: Институт компьютерных исследований, 2004. — 118 с. — ISBN 5-93972-320-9 . — С. 16—30.
  3. . Numerical Methods for Ordinary Differential Equations. — New York: John Wiley & Sons , 2008. — ISBN 978-0-470-72335-7 .
  4. , p. 349—351.
  5. , p. 41.
  6. , p. 351—352.
  7. от 6 марта 2019 на Wayback Machine .
  8. , p. 40—41.
  9. , p. 40.
  10. , p. 60.
  11. , p. 62—63.
  12. , p. 63.
  13. . Дата обращения: 5 июля 2016. 23 мая 2018 года.
  14. Демидович Б. П., Марон И. А., Шувалова Э. З. . Численные методы анализа. 3-е изд. — М. : Наука , 1967.

Литература

Источник —

Same as Метод Рунге — Кутты