Методы Рунге – Кутты

редактировать

В численном анализе, что методы Рунге-Кутта ( английский: / г ʊ ŋ ə к ʊ т ɑː / ( слушать ) Об этом звуке RUUNG -ə- KUUT -tah ) представляют собой семейство неявных и явных итерационных методов, которые включают в себя хорошо известная процедура, называемая методом Эйлера, используемая при временной дискретизации для приближенных решений обыкновенных дифференциальных уравнений. Эти методы были разработаны около 1900 года немецкими математиками Карлом Рунге и Вильгельмом Куттой.

Сравнение методов Рунге-Кутты для дифференциального уравнения (красный - точное решение) у знак равно s я п ( т ) 2 * у {\ Displaystyle у '= грех (т) ^ {2} * у}
СОДЕРЖАНИЕ
  • 1 Метод Рунге – Кутты
  • 2 Явные методы Рунге – Кутты
    • 2.1 Примеры
    • 2.2 Двухэтапные методы второго порядка
  • 3 Использование
  • 4 Адаптивные методы Рунге – Кутты
  • 5 Неконфлюэнтные методы Рунге – Кутты
  • 6 Методы Рунге – Кутты – Нистрома
  • 7 Неявные методы Рунге – Кутты
    • 7.1 Примеры
    • 7.2 Стабильность
  • 8 B-стабильность
  • 9 Вывод метода четвертого порядка Рунге – Кутты
  • 10 См. Также
  • 11 Примечания
  • 12 Ссылки
  • 13 Внешние ссылки
Метод Рунге – Кутты.
Склоны по классическому методу Рунге-Кутта

Наиболее широко известный представитель семейства Рунге-Кутта обычно упоминается как «RK4», «классический метод Рунге-Кутта» или просто как «метод Рунге-Кутта».

Пусть проблема начального значения определена следующим образом:

d у d т знак равно ж ( т , у ) , у ( т 0 ) знак равно у 0 . {\ displaystyle {\ frac {dy} {dt}} = f (t, y), \ quad y (t_ {0}) = y_ {0}.}

Вот неизвестная функция (скаляр или вектор) времени, которую мы хотим аппроксимировать; Нам говорят, что скорость, с которой изменяется, является функцией и сам по себе. В начальный момент соответствующее значение равно. Функции и начальные условия, приведены. у {\ displaystyle y} т {\ displaystyle t} d у d т {\ displaystyle {\ frac {dy} {dt}}} у {\ displaystyle y} т {\ displaystyle t} у {\ displaystyle y} т 0 {\ displaystyle t_ {0}} у {\ displaystyle y} у 0 {\ displaystyle y_ {0}} ж {\ displaystyle f} т 0 {\ displaystyle t_ {0}} у 0 {\ displaystyle y_ {0}}

Теперь выберите размер шага h gt; 0 и определите

у п + 1 знак равно у п + 1 6 час ( k 1 + 2 k 2 + 2 k 3 + k 4 ) , т п + 1 знак равно т п + час {\ displaystyle {\ begin {align} y_ {n + 1} amp; = y_ {n} + {\ frac {1} {6}} h \ left (k_ {1} + 2k_ {2} + 2k_ {3} + k_ {4} \ right), \\ t_ {n + 1} amp; = t_ {n} + h \\\ конец {выровнено}}}

для n = 0, 1, 2, 3,..., используя

k 1 знак равно   ж ( т п , у п ) , k 2 знак равно   ж ( т п + час 2 , у п + час k 1 2 ) , k 3 знак равно   ж ( т п + час 2 , у п + час k 2 2 ) , k 4 знак равно   ж ( т п + час , у п + час k 3 ) . {\ displaystyle {\ begin {align} k_ {1} amp; = \ f (t_ {n}, y_ {n}), \\ k_ {2} amp; = \ f \ left (t_ {n} + {\ frac {h} {2}}, y_ {n} + h {\ frac {k_ {1}} {2}} \ right), \\ k_ {3} amp; = \ f \ left (t_ {n} + { \ frac {h} {2}}, y_ {n} + h {\ frac {k_ {2}} {2}} \ right), \\ k_ {4} amp; = \ f \ left (t_ {n} + h, y_ {n} + hk_ {3} \ right). \ end {align}}}
(Примечание: приведенные выше уравнения имеют разные, но эквивалентные определения в разных текстах).

Вот аппроксимация RK4, а следующее значение () определяется текущим значением () плюс средневзвешенное значение четырех приращений, где каждое приращение является произведением размера интервала h и предполагаемого наклона, указанного как функция f в правой части дифференциального уравнения. у п + 1 {\ displaystyle y_ {n + 1}} у ( т п + 1 ) {\ Displaystyle у (т_ {п + 1})} у п + 1 {\ displaystyle y_ {n + 1}} у п {\ displaystyle y_ {n}}

  • k 1 {\ displaystyle k_ {1}}- наклон в начале интервала с использованием ( метода Эйлера ); у {\ displaystyle y}
  • k 2 {\ displaystyle k_ {2}}- наклон в середине интервала, используя и ; у {\ displaystyle y} k 1 {\ displaystyle k_ {1}}
  • k 3 {\ displaystyle k_ {3}}это снова наклон в средней точке, но теперь с использованием и ; у {\ displaystyle y} k 2 {\ displaystyle k_ {2}}
  • k 4 {\ displaystyle k_ {4}}- наклон в конце интервала с использованием и. у {\ displaystyle y} k 3 {\ displaystyle k_ {3}}

При усреднении четырех уклонов больший вес придается уклонам в средней точке. Если не зависит от, так что дифференциальное уравнение эквивалентно простому интегралу, то RK4 является правилом Симпсона. ж {\ displaystyle f} у {\ displaystyle y}

Метод RK4 является методом четвертого порядка, что означает, что локальная ошибка усечения имеет порядок, а общая накопленная ошибка порядка. О ( час 5 ) {\ Displaystyle О (ч ^ {5})} О ( час 4 ) {\ Displaystyle О (ч ^ {4})}

Во многих практических приложениях функция не зависит от (так называемой автономной системы или системы, не зависящей от времени, особенно в физике), и их приращения вообще не вычисляются и не передаются в функцию, а используется только окончательная формула. ж {\ displaystyle f} т {\ displaystyle t} ж {\ displaystyle f} т п + 1 {\ displaystyle t_ {n + 1}}

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

Семейство явных методов Рунге – Кутты является обобщением упомянутого выше метода RK4. Это дается

у п + 1 знак равно у п + час я знак равно 1 s б я k я , {\ displaystyle y_ {n + 1} = y_ {n} + h \ sum _ {i = 1} ^ {s} b_ {i} k_ {i},}

куда

k 1 знак равно ж ( т п , у п ) , k 2 знак равно ж ( т п + c 2 час , у п + час ( а 21 год k 1 ) ) , k 3 знак равно ж ( т п + c 3 час , у п + час ( а 31 год k 1 + а 32 k 2 ) ) ,     k s знак равно ж ( т п + c s час , у п + час ( а s 1 k 1 + а s 2 k 2 + + а s , s - 1 k s - 1 ) ) . {\ displaystyle {\ begin {align} k_ {1} amp; = f (t_ {n}, y_ {n}), \\ k_ {2} amp; = f (t_ {n} + c_ {2} h, y_ {n} + h (a_ {21} k_ {1})), \\ k_ {3} amp; = f (t_ {n} + c_ {3} h, y_ {n} + h (a_ {31} k_ {1} + a_ {32} k_ {2})), \\ amp; \ \ \ vdots \\ k_ {s} amp; = f (t_ {n} + c_ {s} h, y_ {n} + h ( a_ {s1} k_ {1} + a_ {s2} k_ {2} + \ cdots + a_ {s, s-1} k_ {s-1})). \ end {align}}}
(Примечание: приведенные выше уравнения могут иметь разные, но эквивалентные определения в некоторых текстах).

Чтобы указать конкретный метод, необходимо указать целое число s (количество этапов) и коэффициенты a ij (для 1 ≤ j lt; i ≤ s), b i (для i = 1, 2,..., s) и c i (для i = 2, 3,..., s). Матрица [ a ij ] называется матрицей Рунге – Кутты, а b i и c i называются весами и узлами. Эти данные обычно размещаются в мнемоническом устройстве, известном как таблица Мясника (в честь Джона К. Батчера ):

0 {\ displaystyle 0}
c 2 {\ displaystyle c_ {2}} а 21 год {\ displaystyle a_ {21}}
c 3 {\ displaystyle c_ {3}} а 31 год {\ displaystyle a_ {31}} а 32 {\ displaystyle a_ {32}}
{\ displaystyle \ vdots} {\ displaystyle \ vdots} {\ displaystyle \ ddots}
c s {\ displaystyle c_ {s}} а s 1 {\ displaystyle a_ {s1}} а s 2 {\ displaystyle a_ {s2}} {\ displaystyle \ cdots} а s , s - 1 {\ displaystyle a_ {s, s-1}}
б 1 {\ displaystyle b_ {1}} б 2 {\ displaystyle b_ {2}} {\ displaystyle \ cdots} б s - 1 {\ displaystyle b_ {s-1}} б s {\ displaystyle b_ {s}}

Ряд Тейлора разложение показывает, что метод Рунге-Кутта совместна тогда и только тогда,

я знак равно 1 s б я знак равно 1. {\ displaystyle \ sum _ {i = 1} ^ {s} b_ {i} = 1.}

Существуют также сопутствующие требования, если требуется, чтобы метод имел определенный порядок p, что означает, что локальная ошибка усечения равна O ( h p +1). Их можно вывести из определения самой ошибки усечения. Например, двухэтапный метод имеет порядок 2, если b 1 + b 2 = 1, b 2 c 2 = 1/2 и b 2 a 21 = 1/2. Обратите внимание, что популярным условием определения коэффициентов является

j знак равно 1 я - 1 а я j знак равно c я  для  я знак равно 2 , , s . {\ displaystyle \ sum _ {j = 1} ^ {i-1} a_ {ij} = c_ {i} {\ text {for}} i = 2, \ ldots, s.}

Однако одно это условие не является ни достаточным, ни необходимым для согласованности.

В общем, если явный метод Рунге – Кутты имеет порядок, то можно доказать, что количество этапов должно удовлетворять, а если, то. Однако неизвестно, являются ли эти границы точными во всех случаях; например, все известные методы 8-го порядка имеют не менее 11 этапов, хотя возможно, что существуют методы с меньшим числом этапов. (Приведенная выше оценка предполагает, что может существовать метод с 9 этапами; но также может быть и то, что оценка просто не точна.) Действительно, это открытый вопрос, каково точное минимальное количество этапов для явного метода Рунге – Кутты. чтобы иметь порядок в тех случаях, когда еще не обнаружены методы, удовлетворяющие приведенным выше границам с равенством. Вот некоторые известные значения: s {\ displaystyle s} п {\ displaystyle p} s п {\ displaystyle s \ geq p} п 5 {\ displaystyle p \ geq 5} s п + 1 {\ displaystyle s \ geq p + 1} s {\ displaystyle s} п {\ displaystyle p}

п 1 2 3 4 5 6 7 8 мин s 1 2 3 4 6 7 9 11 {\ displaystyle {\ begin {array} {c | cccccccc} p amp; 1 amp; 2 amp; 3 amp; 4 amp; 5 amp; 6 amp; 7 amp; 8 \\\ hline \ min s amp; 1 amp; 2 amp; 3 amp; 4 amp; 6 amp; 7 amp; 9 amp; 11 \ end {array}}}

Доказуемые границы выше означают, что мы не можем найти методы заказов, которые требуют меньшего количества этапов, чем методы, которые мы уже знаем для этих заказов. Однако вполне возможно, что мы сможем найти метод упорядочения, который имеет только 8 стадий, тогда как единственные известные сегодня имеют не менее 9 стадий, как показано в таблице. п знак равно 1 , 2 , , 6 {\ Displaystyle р = 1,2, \ ldots, 6} п знак равно 7 {\ displaystyle p = 7}

Примеры

Метод RK4 подпадает под эти рамки. Его таблица

0
1/2 1/2
1/2 0 1/2
1 0 0 1
1/6 1/3 1/3 1/6

Небольшая вариация «метода» Рунге – Кутты также принадлежит Кутте в 1901 году и называется правилом 3/8. Основное преимущество этого метода заключается в том, что почти все коэффициенты ошибок меньше, чем в популярном методе, но для этого требуется немного больше FLOP (операций с плавающей запятой) на временной шаг. Его таблица Мясника

0
1/3 1/3
2/3 -1/3 1
1 1 −1 1
1/8 3/8 3/8 1/8

Однако самый простой метод Рунге – Кутты - это (прямой) метод Эйлера, задаваемый формулой. Это единственный непротиворечивый явный метод Рунге – Кутты с одним этапом. Соответствующая таблица у п + 1 знак равно у п + час ж ( т п , у п ) {\ displaystyle y_ {n + 1} = y_ {n} + hf (t_ {n}, y_ {n})}

0
1

Методы второго порядка с двумя этапами

Пример метода второго порядка с двумя этапами представляет собой метод средней точки :

у п + 1 знак равно у п + час ж ( т п + 1 2 час , у п + 1 2 час ж ( т п ,   у п ) ) . {\ displaystyle y_ {n + 1} = y_ {n} + hf \ left (t_ {n} + {\ frac {1} {2}} h, y_ {n} + {\ frac {1} {2}) } hf (t_ {n}, \ y_ {n}) \ right).}

Соответствующая таблица

0
1/2 1/2
0 1

Метод средней точки - не единственный метод Рунге – Кутты второго порядка, состоящий из двух этапов; существует семейство таких методов, параметризованных параметром α и задаваемых формулой

у п + 1 знак равно у п + час ( ( 1 - 1 2 α ) ж ( т п , у п ) + 1 2 α ж ( т п + α час , у п + α час ж ( т п , у п ) ) ) . {\ displaystyle y_ {n + 1} = y_ {n} + h {\ bigl (} (1 - {\ tfrac {1} {2 \ alpha}}) f (t_ {n}, y_ {n}) + {\ tfrac {1} {2 \ alpha}} f (t_ {n} + \ alpha h, y_ {n} + \ alpha hf (t_ {n}, y_ {n})) {\ bigr)}.}.

Его таблица Мясника

0
α {\ displaystyle \ alpha} α {\ displaystyle \ alpha}
( 1 - 1 2 α ) {\ displaystyle (1 - {\ tfrac {1} {2 \ alpha}})} 1 2 α {\ displaystyle {\ tfrac {1} {2 \ alpha}}}

В этом семействе дает метод средней точки и является методом Хойна. α знак равно 1 2 {\ Displaystyle \ альфа = {\ tfrac {1} {2}}} α знак равно 1 {\ Displaystyle \ альфа = 1}

Использовать

В качестве примера рассмотрим двухэтапный метод Рунге – Кутты второго порядка с α = 2/3, также известный как метод Ральстона. Это дано таблицей

0
2/3 2/3
1/4 3/4

с соответствующими уравнениями

k 1 знак равно ж ( т п ,   у п ) , k 2 знак равно ж ( т п + 2 3 час ,   у п + 2 3 час k 1 ) , у п + 1 знак равно у п + час ( 1 4 k 1 + 3 4 k 2 ) . {\ displaystyle {\ begin {align} k_ {1} amp; = f (t_ {n}, \ y_ {n}), \\ k_ {2} amp; = f (t_ {n} + {\ tfrac {2}) {3}} h, \ y_ {n} + {\ tfrac {2} {3}} hk_ {1}), \\ y_ {n + 1} amp; = y_ {n} + h \ left ({\ tfrac {1} {4}} k_ {1} + {\ tfrac {3} {4}} k_ {2} \ right). \ End {align}}}

Этот метод используется для решения задачи начального значения

d у d т знак равно загар ( у ) + 1 , у 0 знак равно 1 ,   т [ 1 , 1.1 ] {\ displaystyle {\ frac {dy} {dt}} = \ tan (y) +1, \ quad y_ {0} = 1, \ t \ in [1,1.1]}

с размером шага h = 0,025, поэтому метод должен состоять из четырех шагов.

Метод работает следующим образом:

т 0 знак равно 1 : {\ displaystyle t_ {0} = 1 \ двоеточие}
у 0 знак равно 1 {\ displaystyle y_ {0} = 1}
т 1 знак равно 1.025 : {\ displaystyle t_ {1} = 1,025 \ двоеточие}
у 0 знак равно 1 {\ displaystyle y_ {0} = 1} k 1 знак равно 2,557407725 {\ displaystyle k_ {1} = 2,557407725} k 2 знак равно ж ( т 0 + 2 3 час ,   у 0 + 2 3 час k 1 ) знак равно 2,7138981400 {\ displaystyle k_ {2} = f (t_ {0} + {\ tfrac {2} {3}} h, \ y_ {0} + {\ tfrac {2} {3}} hk_ {1}) = 2,7138981400 }
у 1 знак равно у 0 + час ( 1 4 k 1 + 3 4 k 2 ) знак равно 1.066869388 _ {\ displaystyle y_ {1} = y_ {0} + h ({\ tfrac {1} {4}} k_ {1} + {\ tfrac {3} {4}} k_ {2}) = {\ underline { 1.066869388}}}
т 2 знак равно 1.05 : {\ displaystyle t_ {2} = 1,05 \ двоеточие}
у 1 знак равно 1.066869388 {\ displaystyle y_ {1} = 1.066869388} k 1 знак равно 2,813524695 {\ displaystyle k_ {1} = 2,813524695} k 2 знак равно ж ( т 1 + 2 3 час ,   у 1 + 2 3 час k 1 ) {\ displaystyle k_ {2} = f (t_ {1} + {\ tfrac {2} {3}} h, \ y_ {1} + {\ tfrac {2} {3}} hk_ {1})}
у 2 знак равно у 1 + час ( 1 4 k 1 + 3 4 k 2 ) знак равно 1,141332181 _ {\ displaystyle y_ {2} = y_ {1} + h ({\ tfrac {1} {4}} k_ {1} + {\ tfrac {3} {4}} k_ {2}) = {\ underline { 1.141332181}}}
т 3 знак равно 1.075 : {\ displaystyle t_ {3} = 1,075 \ двоеточие}
у 2 знак равно 1,141332181 {\ displaystyle y_ {2} = 1,141332181} k 1 знак равно 3,183536647 {\ displaystyle k_ {1} = 3,183536647} k 2 знак равно ж ( т 2 + 2 3 час ,   у 2 + 2 3 час k 1 ) {\ displaystyle k_ {2} = f (t_ {2} + {\ tfrac {2} {3}} h, \ y_ {2} + {\ tfrac {2} {3}} hk_ {1})}
у 3 знак равно у 2 + час ( 1 4 k 1 + 3 4 k 2 ) знак равно 1,227417567 _ {\ displaystyle y_ {3} = y_ {2} + h ({\ tfrac {1} {4}} k_ {1} + {\ tfrac {3} {4}} k_ {2}) = {\ underline { 1.227417567}}}
т 4 знак равно 1.1 : {\ displaystyle t_ {4} = 1.1 \ двоеточие}
у 3 знак равно 1,227417567 {\ displaystyle y_ {3} = 1,227417567} k 1 знак равно 3,796866512 {\ displaystyle k_ {1} = 3,796866512} k 2 знак равно ж ( т 3 + 2 3 час ,   у 3 + 2 3 час k 1 ) {\ displaystyle k_ {2} = f (t_ {3} + {\ tfrac {2} {3}} h, \ y_ {3} + {\ tfrac {2} {3}} hk_ {1})}
у 4 знак равно у 3 + час ( 1 4 k 1 + 3 4 k 2 ) знак равно 1,335079087 _ . {\ displaystyle y_ {4} = y_ {3} + h ({\ tfrac {1} {4}} k_ {1} + {\ tfrac {3} {4}} k_ {2}) = {\ underline { 1.335079087}}.}.

Численные решения соответствуют подчеркнутым значениям.

Адаптивные методы Рунге – Кутты.

Адаптивные методы предназначены для оценки локальной ошибки усечения одного шага Рунге – Кутты. Для этого используются два метода: один с порядком, а другой с порядком. Эти методы переплетены, т. Е. Имеют общие промежуточные этапы. Благодаря этому оценка ошибки требует небольших или пренебрежимо малых вычислительных затрат по сравнению с шагом с помощью метода более высокого порядка. п {\ displaystyle p} п - 1 {\ displaystyle p-1}

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

Шаг более низкого порядка определяется выражением

у п + 1 * знак равно у п + час я знак равно 1 s б я * k я , {\ displaystyle y_ {n + 1} ^ {*} = y_ {n} + h \ sum _ {i = 1} ^ {s} b_ {i} ^ {*} k_ {i},}

где те же, что и для метода высшего порядка. Тогда ошибка k я {\ displaystyle k_ {i}}

е п + 1 знак равно у п + 1 - у п + 1 * знак равно час я знак равно 1 s ( б я - б я * ) k я , {\ displaystyle e_ {n + 1} = y_ {n + 1} -y_ {n + 1} ^ {*} = h \ sum _ {i = 1} ^ {s} (b_ {i} -b_ {i } ^ {*}) k_ {i},}

что есть. Таблица Бутчера для этого типа метода расширена, чтобы дать значения: О ( час п ) {\ Displaystyle О (ч ^ {р})} б я * {\ displaystyle b_ {i} ^ {*}}

0
c 2 {\ displaystyle c_ {2}} а 21 год {\ displaystyle a_ {21}}
c 3 {\ displaystyle c_ {3}} а 31 год {\ displaystyle a_ {31}} а 32 {\ displaystyle a_ {32}}
{\ displaystyle \ vdots} {\ displaystyle \ vdots} {\ displaystyle \ ddots}
c s {\ displaystyle c_ {s}} а s 1 {\ displaystyle a_ {s1}} а s 2 {\ displaystyle a_ {s2}} {\ displaystyle \ cdots} а s , s - 1 {\ displaystyle a_ {s, s-1}}
б 1 {\ displaystyle b_ {1}} б 2 {\ displaystyle b_ {2}} {\ displaystyle \ cdots} б s - 1 {\ displaystyle b_ {s-1}} б s {\ displaystyle b_ {s}}
б 1 * {\ displaystyle b_ {1} ^ {*}} б 2 * {\ displaystyle b_ {2} ^ {*}} {\ displaystyle \ cdots} б s - 1 * {\ displaystyle b_ {s-1} ^ {*}} б s * {\ displaystyle b_ {s} ^ {*}}

Метод Рунге – Кутты – Фельберга имеет два метода порядков 5 и 4. Его расширенная таблица Бутчера:

0
1/4 1/4
3/8 3/32 9/32
13 декабря 1932/2197 −7200/2197 7296/2197
1 439/216 −8 3680/513 -845/4104
1/2 −8/27 2 −3544/2565 1859/4104 −11/40
16/135 0 6656/12825 28561/56430 −9/50 2/55
25/216 0 1408/2565 2197/4104 −1/5 0

Однако простейший адаптивный метод Рунге-Кутты включает в себя сочетание метода Хойна, который имеет порядок 2, с методом Эйлера, который является порядком 1. Его расширенная таблица Бутчера имеет следующий вид:

0
1 1
1/2 1/2
1 0

Другие адаптивные методы Рунге-Кутта являются метод Bogacki-Shampine (заказы 3 и 2), метод Расчетно-Карп и метод Дорманда-Принц (оба с заказами 5 и 4).

Неконфлюэнтные методы Рунге – Кутты

Метод Рунге – Кутты называется неконфлюэнтным, если все они различны. c я , я знак равно 1 , 2 , , s {\ Displaystyle c_ {я}, \, я = 1,2, \ ldots, s}

Методы Рунге – Кутты – Нистрома.

Методы Рунге – Кутты – Нистрома - это специализированные методы Рунге-Кутты, оптимизированные для дифференциальных уравнений второго порядка следующего вида:

d 2 у d т 2 знак равно ж ( у , у ˙ , т ) . {\ displaystyle {\ frac {d ^ {2} y} {dt ^ {2}}} = f (y, {\ dot {y}}, t).}
Неявные методы Рунге – Кутты

Все упомянутые до сих пор методы Рунге – Кутты являются явными. Явные методы Рунге – Кутты обычно не подходят для решения жестких уравнений, поскольку их область абсолютной устойчивости мала; в частности, он ограничен. Этот вопрос особенно важен при решении дифференциальных уравнений в частных производных.

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

у п + 1 знак равно у п + час я знак равно 1 s б я k я , {\ displaystyle y_ {n + 1} = y_ {n} + h \ sum _ {i = 1} ^ {s} b_ {i} k_ {i},}

куда

k я знак равно ж ( т п + c я час ,   у п + час j знак равно 1 s а я j k j ) , я знак равно 1 , , s . {\ displaystyle k_ {i} = f \ left (t_ {n} + c_ {i} h, \ y_ {n} + h \ sum _ {j = 1} ^ {s} a_ {ij} k_ {j}) \ right), \ quad i = 1, \ ldots, s.}

Разница с явным методом заключается в том, что в явном методе сумма по j увеличивается только до i - 1. Это также отображается в таблице Бутчера: матрица коэффициентов явного метода имеет нижнюю треугольную форму. В неявном методе сумма по j увеличивается до s, а матрица коэффициентов не является треугольной, давая таблицу Бутчера вида а я j {\ displaystyle a_ {ij}}

c 1 а 11 а 12 а 1 s c 2 а 21 год а 22 а 2 s c s а s 1 а s 2 а s s б 1 б 2 б s б 1 * б 2 * б s * знак равно c А б Т {\ displaystyle {\ begin {array} {c | cccc} c_ {1} amp; a_ {11} amp; a_ {12} amp; \ dots amp; a_ {1s} \\ c_ {2} amp; a_ {21} amp; a_ {22} amp; \ dots amp; a_ {2s} \\\ vdots amp; \ vdots amp; \ vdots amp; \ ddots amp; \ vdots \\ c_ {s} amp; a_ {s1} amp; a_ {s2} amp; \ dots amp; a_ {ss} \\\ hline amp; b_ {1} amp; b_ {2} amp; \ dots amp; b_ {s} \\ amp; b_ {1} ^ {*} amp; b_ {2} ^ {*} amp; \ dots amp; b_ {s} ^ {*} \\\ end {array}} = {\ begin {array} {c | c} \ mathbf {c} amp; A \\\ hline amp; \ mathbf {b ^ {T}} \\\ end {array}}}

См. Выше адаптивные методы Рунге-Кутты для объяснения ряда. б * {\ displaystyle b ^ {*}}

Следствием этого различия является то, что на каждом шаге необходимо решать систему алгебраических уравнений. Это значительно увеличивает вычислительные затраты. Если для решения дифференциального уравнения с m компонентами используется метод с s этапами, то система алгебраических уравнений имеет ms компоненты. Этому можно противопоставить неявные линейные многоступенчатые методы (другое большое семейство методов для ОДУ): неявный s- ступенчатый линейный многоступенчатый метод должен решать систему алгебраических уравнений только с m компонентами, поэтому размер системы не увеличивается. по мере увеличения количества шагов.

Примеры

Простейшим примером неявного метода Рунге – Кутты является обратный метод Эйлера :

у п + 1 знак равно у п + час ж ( т п + час ,   у п + 1 ) . {\ displaystyle y_ {n + 1} = y_ {n} + hf (t_ {n} + h, \ y_ {n + 1}). \,}

Таблица Мясника для этого проста:

1 1 1 {\ displaystyle {\ begin {array} {c | c} 1 amp; 1 \\\ hline amp; 1 \\\ end {array}}}

Эта таблица Бутчера соответствует формулам

k 1 знак равно ж ( т п + час ,   у п + час k 1 ) а также у п + 1 знак равно у п + час k 1 , {\ displaystyle k_ {1} = f (t_ {n} + h, \ y_ {n} + hk_ {1}) \ quad {\ text {and}} \ quad y_ {n + 1} = y_ {n} + hk_ {1},}

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

Другой пример неявного метода Рунге – Кутты - правило трапеций. Его таблица Мясника:

0 0 0 1 1 2 1 2 1 2 1 2 1 0 {\ displaystyle {\ begin {array} {c | cc} 0 amp; 0 amp; 0 \\ 1 amp; {\ frac {1} {2}} amp; {\ frac {1} {2}} \\\ hline amp; {\ frac {1} {2}} amp; {\ frac {1} {2}} \\ amp; 1 amp; 0 \\\ end {array}}}

Правило трапеции - это метод коллокации (как описано в этой статье). Все методы коллокации являются неявными методами Рунге-Кутты, но не все неявные методы Рунге-Кутты являются методами коллокации.

Эти методы Гаусса-Лежандра образуют семейство методов коллокации на основе гауссовой квадратуре. Метод Гаусса – Лежандра с s этапами имеет порядок 2 s (таким образом, могут быть построены методы сколь угодно высокого порядка). Метод с двумя этапами (и, следовательно, порядок четыре) имеет таблицу Мясника:

1 2 - 1 6 3 1 4 1 4 - 1 6 3 1 2 + 1 6 3 1 4 + 1 6 3 1 4 1 2 1 2 1 2 + 1 2 3 1 2 - 1 2 3 {\ displaystyle {\ begin {array} {c | cc} {\ frac {1} {2}} - {\ frac {1} {6}} {\ sqrt {3}} amp; {\ frac {1} { 4}} amp; {\ frac {1} {4}} - {\ frac {1} {6}} {\ sqrt {3}} \\ {\ frac {1} {2}} + {\ frac {1 } {6}} {\ sqrt {3}} amp; {\ frac {1} {4}} + {\ frac {1} {6}} {\ sqrt {3}} и {\ frac {1} {4 }} \\\ hline amp; {\ frac {1} {2}} amp; {\ frac {1} {2}} \\ amp; {\ frac {1} {2}} + {\ frac {1} {2 }} {\ sqrt {3}} amp; {\ frac {1} {2}} - {\ frac {1} {2}} {\ sqrt {3}} \ end {array}}}

Стабильность

Преимущество неявных методов Рунге – Кутты перед явными заключается в их большей устойчивости, особенно в применении к жестким уравнениям. Рассмотрим линейное тестовое уравнение. Метод Рунге – Кутты, примененный к этому уравнению, сводится к итерации, где r определяется как у знак равно λ у {\ displaystyle y '= \ lambda y} у п + 1 знак равно р ( час λ ) у п {\ Displaystyle у_ {п + 1} = г (ч \ лямбда) \, у_ {п}}

р ( z ) знак равно 1 + z б Т ( я - z А ) - 1 е знак равно Det ( я - z А + z е б Т ) Det ( я - z А ) , {\ displaystyle r (z) = 1 + zb ^ {T} (I-zA) ^ {- 1} e = {\ frac {\ det (I-zA + zeb ^ {T})} {\ det (I -zA)}},}

где e обозначает вектор единиц. Функция r называется функцией устойчивости. Из формулы следует, что r есть частное двух многочленов степени s, если метод имеет s этапов. Явные методы имеют строго нижнюю треугольную матрицу A, из чего следует, что det ( I - zA) = 1 и что функция устойчивости является полиномом.

Численное решение линейного тестового уравнения обращается в ноль, если | г ( г) | lt;1 при z = h λ. Множество таких z называется областью абсолютной устойчивости. В частности, метод называется абсолютно устойчивым, если все z с Re ( z) lt;0 находятся в области абсолютной устойчивости. Функция устойчивости явного метода Рунге – Кутты является полиномом, поэтому явные методы Рунге – Кутта никогда не могут быть A-стабильными.

Если метод имеет порядок р, то функция удовлетворяет стабильность как. Таким образом, представляет интерес изучение частных многочленов заданных степеней, которые наилучшим образом аппроксимируют экспоненциальную функцию. Они известны как аппроксимации Паде. Аппроксимация Паде с числителем степени m и знаменателем степени n A-устойчива тогда и только тогда, когда m ≤ n ≤ m + 2. р ( z ) знак равно е z + О ( z п + 1 ) {\ displaystyle r (z) = {\ textrm {e}} ^ {z} + O (z ^ {p + 1})} z 0 {\ displaystyle z \ to 0}

Метод Гаусса – Лежандра с s этапами имеет порядок 2 s, поэтому его функция устойчивости является аппроксимацией Паде с m = n = s. Следовательно, метод является A-устойчивым. Это показывает, что A-стабильный Рунге – Кутта может иметь сколь угодно высокий порядок. Напротив, порядок A-устойчивых линейных многоступенчатых методов не может превышать двух.

B-стабильность

Концепция A-устойчивости решения дифференциальных уравнений связана с линейным автономным уравнением. Далквист предложил исследование устойчивости численных схем применительно к нелинейным системам, удовлетворяющим условию монотонности. Соответствующие концепции были определены как G-устойчивость для многоступенчатых методов (и связанных одноэлементных методов) и B-устойчивость (Butcher, 1975) для методов Рунге – Кутта. Метод Рунге – Кутты, примененный к проверяющей нелинейной системе, называется B-устойчивым, если это условие следует для двух численных решений. у знак равно λ у {\ displaystyle y '= \ lambda y} у знак равно ж ( у ) {\ Displaystyle у '= е (у)} ж ( у ) - ж ( z ) ,   у - z lt; 0 {\ Displaystyle \ langle f (y) -f (z), \ yz \ rangle lt;0} у п + 1 - z п + 1 у п - z п {\ displaystyle \ | y_ {n + 1} -z_ {n + 1} \ | \ leq \ | y_ {n} -z_ {n} \ |}

Пусть, и - три матрицы, определенные формулой B {\ displaystyle B} M {\ displaystyle M} Q {\ displaystyle Q} s × s {\ displaystyle s \ times s}

B знак равно диагональ ( б 1 , б 2 , , б s ) , M знак равно B А + А Т B - б б Т , Q знак равно B А - 1 + А - Т B - А - Т б б Т А - 1 . {\ displaystyle B = \ operatorname {diag} (b_ {1}, b_ {2}, \ ldots, b_ {s}), \, M = BA + A ^ {T} B-bb ^ {T}, \, Q = BA ^ {- 1} + A ^ {- T} BA ^ {- T} bb ^ {T} A ^ {- 1}.}

Метод Рунге – Кутты называется алгебраически устойчивым, если обе матрицы и неотрицательно определены. Достаточным условием B-устойчивости является: и неотрицательно определены. B {\ displaystyle B} M {\ displaystyle M} B {\ displaystyle B} Q {\ displaystyle Q}

Вывод метода четвертого порядка Рунге – Кутты.

В целом метод порядка Рунге – Кутты можно записать как: s {\ displaystyle s}

у т + час знак равно у т + час я знак равно 1 s а я k я + О ( час s + 1 ) , {\ displaystyle y_ {t + h} = y_ {t} + h \ cdot \ sum _ {i = 1} ^ {s} a_ {i} k_ {i} + {\ mathcal {O}} (h ^ { s + 1}),}

куда:

k я знак равно у т + час j знак равно 1 s β я j ж ( k j ,   т п + α я час ) {\ displaystyle k_ {i} = y_ {t} + h \ cdot \ sum _ {j = 1} ^ {s} \ beta _ {ij} f \ left (k_ {j}, \ t_ {n} + \ альфа _ {i} h \ right)}

является приращение, полученные оценок производных в -й порядке. у т {\ displaystyle y_ {t}} я {\ displaystyle i}

Мы разрабатываем вывод для метода четвертого порядка Рунге – Кутты, используя общую формулу с вычисленными, как объяснялось выше, в начальной, средней и конечной точках любого интервала ; таким образом, выбираем: s знак равно 4 {\ displaystyle s = 4} ( т ,   т + час ) {\ Displaystyle (т, \ т + ч)}

α я β я j α 1 знак равно 0 β 21 год знак равно 1 2 α 2 знак равно 1 2 β 32 знак равно 1 2 α 3 знак равно 1 2 β 43 год знак равно 1 α 4 знак равно 1 {\ displaystyle {\ begin {align} amp; \ alpha _ {i} amp;amp; \ beta _ {ij} \\\ alpha _ {1} amp; = 0 amp; \ beta _ {21} amp; = {\ frac {1} {2 }} \\\ alpha _ {2} amp; = {\ frac {1} {2}} amp; \ beta _ {32} amp; = {\ frac {1} {2}} \\\ alpha _ {3} amp; = {\ frac {1} {2}} amp; \ beta _ {43} amp; = 1 \\\ alpha _ {4} amp; = 1 amp;amp; \\\ конец {выровнено}}}

и в противном случае. Начнем с определения следующих величин: β я j знак равно 0 {\ displaystyle \ beta _ {ij} = 0}

у т + час 1 знак равно у т + час ж ( у т ,   т ) у т + час 2 знак равно у т + час ж ( у т + час / 2 1 ,   т + час 2 ) у т + час 3 знак равно у т + час ж ( у т + час / 2 2 ,   т + час 2 ) {\ displaystyle {\ begin {align} y_ {t + h} ^ {1} amp; = y_ {t} + hf \ left (y_ {t}, \ t \ right) \\ y_ {t + h} ^ { 2} amp; = y_ {t} + hf \ left (y_ {t + h / 2} ^ {1}, \ t + {\ frac {h} {2}} \ right) \\ y_ {t + h} ^ {3} amp; = y_ {t} + hf \ left (y_ {t + h / 2} ^ {2}, \ t + {\ frac {h} {2}} \ right) \ end {выравнивается}}}

где и. Если мы определим: у т + час / 2 1 знак равно у т + у т + час 1 2 {\ displaystyle y_ {t + h / 2} ^ {1} = {\ dfrac {y_ {t} + y_ {t + h} ^ {1}} {2}}} у т + час / 2 2 знак равно у т + у т + час 2 2 {\ displaystyle y_ {t + h / 2} ^ {2} = {\ dfrac {y_ {t} + y_ {t + h} ^ {2}} {2}}}

k 1 знак равно ж ( у т ,   т ) k 2 знак равно ж ( у т + час / 2 1 ,   т + час 2 ) знак равно ж ( у т + час 2 k 1 ,   т + час 2 ) k 3 знак равно ж ( у т + час / 2 2 ,   т + час 2 ) знак равно ж ( у т + час 2 k 2 ,   т + час 2 ) k 4 знак равно ж ( у т + час 3 ,   т + час ) знак равно ж ( у т + час k 3 ,   т + час ) {\ displaystyle {\ begin {align} k_ {1} amp; = f (y_ {t}, \ t) \\ k_ {2} amp; = f \ left (y_ {t + h / 2} ^ {1}, \ t + {\ frac {h} {2}} \ right) = f \ left (y_ {t} + {\ frac {h} {2}} k_ {1}, \ t + {\ frac {h} {2 }} \ right) \\ k_ {3} amp; = f \ left (y_ {t + h / 2} ^ {2}, \ t + {\ frac {h} {2}} \ right) = f \ left ( y_ {t} + {\ frac {h} {2}} k_ {2}, \ t + {\ frac {h} {2}} \ right) \\ k_ {4} amp; = f \ left (y_ {t + h} ^ {3}, \ t + h \ right) = f \ left (y_ {t} + hk_ {3}, \ t + h \ right) \ end {выровнено}}}

и для предыдущих соотношений мы можем показать, что следующие равенства выполняются до: О ( час 2 ) {\ Displaystyle {\ mathcal {O}} (ч ^ {2})}

k 2 знак равно ж ( у т + час / 2 1 ,   т + час 2 ) знак равно ж ( у т + час 2 k 1 ,   т + час 2 ) знак равно ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) k 3 знак равно ж ( у т + час / 2 2 ,   т + час 2 ) знак равно ж ( у т + час 2 ж ( у т + час 2 k 1 ,   т + час 2 ) ,   т + час 2 ) знак равно ж ( у т ,   т ) + час 2 d d т [ ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) ] k 4 знак равно ж ( у т + час 3 ,   т + час ) знак равно ж ( у т + час ж ( у т + час 2 k 2 ,   т + час 2 ) ,   т + час ) знак равно ж ( у т + час ж ( у т + час 2 ж ( у т + час 2 ж ( у т ,   т ) ,   т + час 2 ) ,   т + час 2 ) ,   т + час ) знак равно ж ( у т ,   т ) + час d d т [ ж ( у т ,   т ) + час 2 d d т [ ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) ] ] {\ displaystyle {\ begin {align} k_ {2} amp; = f \ left (y_ {t + h / 2} ^ {1}, \ t + {\ frac {h} {2}} \ right) = f \ left (y_ {t} + {\ frac {h} {2}} k_ {1}, \ t + {\ frac {h} {2}} \ right) \\ amp; = f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} {\ frac {d} {dt}} f \ left (y_ {t}, \ t \ right) \\ k_ {3} amp; = f \ left (y_ {t + h / 2} ^ {2}, \ t + {\ frac {h} {2}} \ right) = f \ left (y_ {t} + {\ frac {h} {2}} f \ left (y_ {t} + {\ frac {h} {2}} k_ {1}, \ t + {\ frac {h} {2}} \ right), \ t + {\ frac {h} {2 }} \ right) \\ amp; = f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} {\ frac {d} {dt}} \ left [f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} {\ frac {d} {dt}} f \ left (y_ {t}, \ t \ right) \ right] \ \ k_ {4} amp; = f \ left (y_ {t + h} ^ {3}, \ t + h \ right) = f \ left (y_ {t} + hf \ left (y_ {t} + {\ frac {h} {2}} k_ {2}, \ t + {\ frac {h} {2}} \ right), \ t + h \ right) \\ amp; = f \ left (y_ {t} + hf \ left (y_ {t} + {\ frac {h} {2}} f \ left (y_ {t} + {\ frac {h} {2}} f \ left (y_ {t}, \ t \ right)), \ t + {\ frac {h} {2}} \ right), \ t + {\ frac {h} {2}} \ right), \ t + h \ right) \\ amp; = f \ left (y_ {t}, \ t \ right) + h {\ frac {d} {dt}} \ left [f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} { \ frac {d} {dt}} \ left [f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} {\ frac {d} {dt}} f \ left (y_ {t}, \ t \ right) \ right] \ right] \ end {выровнено}}}

куда:

d d т ж ( у т ,   т ) знак равно у ж ( у т ,   т ) у ˙ т + т ж ( у т ,   т ) знак равно ж у ( у т ,   т ) у ˙ + ж т ( у т ,   т ) знак равно у ¨ т {\ displaystyle {\ frac {d} {dt}} f (y_ {t}, \ t) = {\ frac {\ partial} {\ partial y}} f (y_ {t}, \ t) {\ dot {y}} _ {t} + {\ frac {\ partial} {\ partial t}} f (y_ {t}, \ t) = f_ {y} (y_ {t}, \ t) {\ dot { y}} + f_ {t} (y_ {t}, \ t): = {\ ddot {y}} _ {t}}

является полной производной по времени. ж {\ displaystyle f}

Если теперь выразить общую формулу, используя то, что мы только что вывели, мы получим:

у т + час знак равно у т + час { а ж ( у т ,   т ) + б [ ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) ] + + c [ ж ( у т ,   т ) + час 2 d d т [ ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) ] ] + + d [ ж ( у т ,   т ) + час d d т [ ж ( у т ,   т ) + час 2 d d т [ ж ( у т ,   т ) + час 2 d d т ж ( у т ,   т ) ] ] ] } + О ( час 5 ) знак равно у т + а час ж т + б час ж т + б час 2 2 d ж т d т + c час ж т + c час 2 2 d ж т d т + + c час 3 4 d 2 ж т d т 2 + d час ж т + d час 2 d ж т d т + d час 3 2 d 2 ж т d т 2 + d час 4 4 d 3 ж т d т 3 + О ( час 5 ) {\ displaystyle {\ begin {align} y_ {t + h} = {} amp; y_ {t} + h \ left \ lbrace a \ cdot f (y_ {t}, \ t) + b \ cdot \ left [f ( y_ {t}, \ t) + {\ frac {h} {2}} {\ frac {d} {dt}} f (y_ {t}, \ t) \ right] \ right. + \\ amp; { } + c \ cdot \ left [f (y_ {t}, \ t) + {\ frac {h} {2}} {\ frac {d} {dt}} \ left [f \ left (y_ {t}, \ t \ right) + {\ frac {h} {2}} {\ frac {d} {dt}} f (y_ {t}, \ t) \ right] \ right] + \\ amp; {} + d \ cdot \ left [f (y_ {t}, \ t) + h {\ frac {d} {dt}} \ left [f (y_ {t}, \ t) + {\ frac {h} {2 }} {\ frac {d} {dt}} \ left [f (y_ {t}, \ t) + \ left. {\ frac {h} {2}} {\ frac {d} {dt}} f (y_ {t}, \ t) \ right] \ right] \ right] \ right \ rbrace + {\ mathcal {O}} (h ^ {5}) \\ = {} amp; y_ {t} + a \ cdot hf_ {t} + b \ cdot hf_ {t} + b \ cdot {\ frac {h ^ {2}} {2}} {\ frac {df_ {t}} {dt}} + c \ cdot hf_ {t } + c \ cdot {\ frac {h ^ {2}} {2}} {\ frac {df_ {t}} {dt}} + \\ amp; {} + c \ cdot {\ frac {h ^ {3 }} {4}} {\ frac {d ^ {2} f_ {t}} {dt ^ {2}}} + d \ cdot hf_ {t} + d \ cdot h ^ {2} {\ frac {df_ {t}} {dt}} + d \ cdot {\ frac {h ^ {3}} {2}} {\ frac {d ^ {2} f_ {t}} {dt ^ {2}}} + d \ cdot {\ frac {h ^ {4}} {4}} {\ frac {d ^ {3} f_ {t}} {dt ^ {3}}} + {\ mathcal {O}} (h ^ { 5}) \ конец {выровнено}}}

и сравнивая это с рядом Тейлора из вокруг: у т + час {\ displaystyle y_ {t + h}} у т {\ displaystyle y_ {t}}

у т + час знак равно у т + час у ˙ т + час 2 2 у ¨ т + час 3 6 у т ( 3 ) + час 4 24 у т ( 4 ) + О ( час 5 ) знак равно знак равно у т + час ж ( у т ,   т ) + час 2 2 d d т ж ( у т ,   т ) + час 3 6 d 2 d т 2 ж ( у т ,   т ) + час 4 24 d 3 d т 3 ж ( у т ,   т ) {\ displaystyle {\ begin {align} y_ {t + h} amp; = y_ {t} + h {\ dot {y}} _ {t} + {\ frac {h ^ {2}} {2}} { \ ddot {y}} _ {t} + {\ frac {h ^ {3}} {6}} y_ {t} ^ {(3)} + {\ frac {h ^ {4}} {24}} y_ {t} ^ {(4)} + {\ mathcal {O}} (h ^ {5}) = \\ amp; = y_ {t} + hf (y_ {t}, \ t) + {\ frac { h ^ {2}} {2}} {\ frac {d} {dt}} f (y_ {t}, \ t) + {\ frac {h ^ {3}} {6}} {\ frac {d ^ {2}} {dt ^ {2}}} f (y_ {t}, \ t) + {\ frac {h ^ {4}} {24}} {\ frac {d ^ {3}} {dt ^ {3}}} f (y_ {t}, \ t) \ конец {выровнено}}}

получаем систему ограничений на коэффициенты:

{ а + б + c + d знак равно 1 1 2 б + 1 2 c + d знак равно 1 2 1 4 c + 1 2 d знак равно 1 6 1 4 d знак равно 1 24 {\ displaystyle {\ begin {cases} amp; a + b + c + d = 1 \\ [6pt] amp; {\ frac {1} {2}} b + {\ frac {1} {2}} c + d = { \ frac {1} {2}} \\ [6pt] amp; {\ frac {1} {4}} c + {\ frac {1} {2}} d = {\ frac {1} {6}} \\ [6pt] amp; {\ frac {1} {4}} d = {\ frac {1} {24}} \ end {case}}}

который при решении дает, как указано выше. а знак равно 1 6 , б знак равно 1 3 , c знак равно 1 3 , d знак равно 1 6 {\ displaystyle a = {\ frac {1} {6}}, b = {\ frac {1} {3}}, c = {\ frac {1} {3}}, d = {\ frac {1} {6}}}

Смотрите также
Примечания
использованная литература
внешние ссылки
Последняя правка сделана 2023-08-11 03:22:41
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте