Метод Рунге

Метод Рунге

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

Формально, методом Рунге — Кутты является модифицированный и исправленный метод Эйлера, они представляют собой схемы второго порядка точности. Существуют стандартные схемы третьего порядка, не получившие широкого распространения. Наиболее часто используется и реализована в различных математических пакетах (Maple, MathCAD, Maxima) стандартная схема четвёртого порядка. Иногда при выполнении расчётов с повышенной точностью применяются схемы пятого и шестого порядков[1][2]. Построение схем более высокого порядка сопряжено с большими вычислительными трудностями[3]. Методы седьмого порядка должны иметь по меньшей мере девять стадий, в схему восьмого порядка входит 11 стадий. Хотя схемы девятого порядка не имеют большой практической значимости, неизвестно, сколько стадий необходимо для достижения этого порядка точности. Аналогичная задача существует для схем десятого и более высоких порядков[3].

Содержание

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

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

Рассмотрим задачу Коши

\textbf{y}'=\textbf{f}(x,\textbf{y}),   \textbf{y}(x_0)=\textbf{y}_0.

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

 \textbf{y}_{n+1} = \textbf{y}_n + {1 \over 6} (\textbf{k}_1 + 2\textbf{k}_2 + 2\textbf{k}_3 + \textbf{k}_4)

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

 \textbf{k}_1 = h\ \textbf{f} \left( x_n, \textbf{y}_n \right),
 \textbf{k}_2 = h\ \textbf{f} \left( x_n + {h \over 2}, \textbf{y}_n + {1 \over 2} \textbf{k}_1 \right),
 \textbf{k}_3 = h\ \textbf{f} \left( x_n + {h \over 2}, \textbf{y}_n + {1 \over 2} \textbf{k}_2 \right),
 \textbf{k}_4 = h\ \textbf{f} \left( x_n + h, \textbf{y}_n + \textbf{k}_3 \right).

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

Этот метод имеет четвёртый порядок точности, то есть суммарная ошибка на конечном интервале интегрирования имеет порядок O(h^4) (ошибка на каждом шаге порядка O(h^5)).

Прямые методы Рунге — Кутты

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

 \textbf{y}_{n+1} = \textbf{y}_n + \sum_{i=1}^s b_i \textbf{k}_i,

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

\begin{array}{ll}
\textbf{k}_1 =& h\textbf{f}(x_n, \textbf{y}_n),\\
\textbf{k}_2 =& h\textbf{f}(x_n+c_2h, \textbf{y}_n+a_{21}\textbf{k}_1),\\
\cdots&\\
\textbf{k}_s =& h\textbf{f}(x_n+c_sh, \textbf{y}_n+a_{s1}\textbf{k}_1+a_{s2}\textbf{k}_2+\cdots+a_{s,s-1}\textbf{k}_{s-1})
\end{array}

Конкретный метод определяется числом s и коэффициентами b_i, a_{ij} и c_i. Эти коэффициенты часто упорядочивают в таблицу (называемую таблицей Бутчера)

\begin{array}{c|ccccc}
  0      &&&&&\\
  c_2    & a_{21} &&&&\\
  c_3    & a_{31} & a_{32} &&&\\
  \vdots & \vdots & \vdots& \ddots&&\\
  c_s    & a_{s1} & a_{s2}& \dots & a_{ss-1}&\\
  \hline & b_1    & b_2   & \dots & b_{s-1} & b_s
\end{array}

Для коэффициентов метода Рунге — Кутты должны быть выполнены условия \sum_{j=1}^{i-1} a_{ij} = c_i для  i=2, \ldots, s. Если требуется, чтобы метод имел порядок p, то следует также обеспечить условие

\bar\textbf{y}(h+x_0)-\textbf{y}(h+x_0)=O(h^{p+1}),

где \bar\textbf{y}(h+x_0) — приближение, полученное по методу Рунге — Кутты. После многократного дифференцирования это условие преобразуется в систему полиномиальных уравнений относительно коэффициентов метода.

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

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

Решение систем ОДУ

Метод Ру́нге — Ку́тты непосредственно обобщается на случай систем обыкновенных дифференциальных уравнений путём записи системы и метода в векторной форме.

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

y'' + 4y = \cos 3x,\quad y(0) = 0.8,\ y'(0) = 2,\ x \in [0,1],\ h = 0.1

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


\begin{cases}
y' = z = g(x,y,z)\\
z' = cos(3x) - 4y = f(x,y,z)
\end{cases}

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

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

Решение систем дифференциальных уравнений методом Рунге-Кутты является одним из самых распространённых численных методов решений в технике. В среде MATLAB (довольно распространённый и удобный язык для технических вычислений) реализована его одна из разовидностей — метод Дорманда-Принса. Для решения системы уравнений необходимо сначала записать функцию, вычисляющую производные, т.е. функции y = g(x,y,z) и z = cos(3x) - 4y = 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 — с. 363—375.
  2. Ильина В. А., Силаев П. К. Численные методы для физиков-теоретиков. т. 2. — Москва-Ижевск: Институт компьютерных исследований, 2004. — с. 16-30.
  3. 1 2 J. C. Butcher. Numerical Methods for Ordinary Differential Equations. The University of Auckland, New Zealand.
  4. Б. П. Демидович, И. А. Марон, Э. З. Шувалова. Численные методы анализа, 3-е изд. — М.: Наука, 1967.

Wikimedia Foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Полезное


Смотреть что такое "Метод Рунге" в других словарях:

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

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

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

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

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

  • метод Рунге-Кутта — Runge s ir Kutt o metodas statusas T sritis automatika atitikmenys: angl. Runge Kutta method vok. Runge Kutta Verfahren, n rus. метод Рунге Кутта, m pranc. méthode de Runge Kutta, f ryšiai: sinonimas – Rungės ir Kuto metodas …   Automatikos terminų žodynas

  • Метод Эйлера — Метод Эйлера  наиболее простой численный метод решения (систем) обыкновенных дифференциальных уравнений. Впервые описан Леонардом Эйлером в 1768 году в работе «Интегральное исчисление»[1]. Метод Эйлера является явным, одношаговым методом… …   Википедия

  • Рунге Карл — Карл Рунге Карл Давид Тольме Рунге (Carl David Tolmé Runge) (* 30 августа 1856 , Бремен, † 3 января 1927, Геттинген) – немецкий математик и физик. После окончания университета в Берлине, где математику преподавал Вейерштрасс, Рунге был… …   Википедия

  • Метод Адамса — разностный метод численного интегрирования обыкновенных дифференциальных уравнений, позволяющий вычислять таблицу приближённых значений решения в начальных точках. Назван по имени предложившего его английского астронома Дж. К. Адамса в 1855.… …   Википедия

  • Метод Гаусса (численное интегрирование) — Метод Гаусса метод численного интегрирования, позволяющий повысить алгебраический порядок точности методов на основе интерполяционных формул путём специального выбора узлов интегрирования без увеличения числа используемых значений подынтегральной …   Википедия


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»