Методи Рунге — Кутти — важлива група чисельних методів розв’язування (систем) звичайних диференціальних рівнянь . Названі на честь німецьких математиків Карла Рунге і Мартіна Кутти , які відкрили ці методи.
Метод Рунге — Кутти 4-го порядку настільки широко розповсюджений, що його часто називають просто методом Рунге — Кутти або RK4.
Розглянемо задачу Коші для системи диференціальних рівнянь довільного порядку, що записується у векторній формі як
y
′
=
f
(
x
,
y
)
,
y
(
x
0
)
=
y
0
{\displaystyle {\textbf {y}}'={\textbf {f}}(x,{\textbf {y}}),~~~~~{\textbf {y}}(x_{0})={\textbf {y}}_{0}}
.
Тоді значення невідомої функції в точці
x
n
+
1
{\displaystyle \ x_{n+1}}
обчислюється відносно значення в попередній точці
x
n
{\displaystyle \ x_{n}}
за формулою:
y
n
+
1
=
y
n
+
h
6
(
k
1
+
2
k
2
+
2
k
3
+
k
4
)
{\displaystyle {\textbf {y}}_{n+1}={\textbf {y}}_{n}+{h \over 6}({\textbf {k}}_{1}+2{\textbf {k}}_{2}+2{\textbf {k}}_{3}+{\textbf {k}}_{4})}
,
x
n
+
1
=
x
n
+
h
{\displaystyle \ x_{n+1}=x_{n}+h}
де
h
{\displaystyle \ h}
— крок інтегрування, а коефіцієнти
k
n
{\displaystyle {\textbf {k}}_{n}}
розраховуються таким чином:
k
1
=
f
(
x
n
,
y
n
)
,
{\displaystyle {\textbf {k}}_{1}={\textbf {f}}\left(x_{n},{\textbf {y}}_{n}\right),}
k
2
=
f
(
x
n
+
h
2
,
y
n
+
h
2
k
1
)
,
{\displaystyle {\textbf {k}}_{2}={\textbf {f}}\left(x_{n}+{h \over 2},{\textbf {y}}_{n}+{h \over 2}{\textbf {k}}_{1}\right),}
k
3
=
f
(
x
n
+
h
2
,
y
n
+
h
2
k
2
)
,
{\displaystyle {\textbf {k}}_{3}={\textbf {f}}\left(x_{n}+{h \over 2},{\textbf {y}}_{n}+{h \over 2}{\textbf {k}}_{2}\right),}
k
4
=
f
(
x
n
+
h
,
y
n
+
h
k
3
)
.
{\displaystyle {\textbf {k}}_{4}={\textbf {f}}\left(x_{n}+h,{\textbf {y}}_{n}+h{\textbf {k}}_{3}\right).}
Це метод 4-го порядку, тобто похибка на кожному кроці становить
O
(
h
5
)
{\displaystyle \ O(h^{5})}
, а сумарна похибка на кінцевому інтервалі інтегрування є величиною
O
(
h
4
)
{\displaystyle \ O(h^{4})}
.
Група прямих методів Рунге — Кутти є узагальненням методу Рунге — Кутти 4-го порядку. Наближення задається формулами
y
n
+
1
=
y
n
+
h
∑
i
=
1
s
b
i
k
i
,
{\displaystyle {\textbf {y}}_{n+1}={\textbf {y}}_{n}+h\sum _{i=1}^{s}b_{i}{\textbf {k}}_{i},}
де
k
1
=
f
(
x
n
,
y
n
)
,
{\displaystyle {\textbf {k}}_{1}={\textbf {f}}(x_{n},{\textbf {y}}_{n}),\,}
k
2
=
f
(
x
n
+
c
2
h
,
y
n
+
a
21
h
k
1
)
,
{\displaystyle {\textbf {k}}_{2}={\textbf {f}}(x_{n}+c_{2}h,{\textbf {y}}_{n}+a_{21}h{\textbf {k}}_{1}),\,}
k
3
=
f
(
x
n
+
c
3
h
,
y
n
+
a
31
h
k
1
+
a
32
h
k
2
)
,
{\displaystyle {\textbf {k}}_{3}={\textbf {f}}(x_{n}+c_{3}h,{\textbf {y}}_{n}+a_{31}h{\textbf {k}}_{1}+a_{32}h{\textbf {k}}_{2}),\,}
⋮
{\displaystyle \vdots }
k
s
=
f
(
x
n
+
c
s
h
,
y
n
+
a
s
1
h
k
1
+
a
s
2
h
k
2
+
⋯
+
a
s
,
s
−
1
h
k
s
−
1
)
.
{\displaystyle {\textbf {k}}_{s}={\textbf {f}}(x_{n}+c_{s}h,{\textbf {y}}_{n}+a_{s1}h{\textbf {k}}_{1}+a_{s2}h{\textbf {k}}_{2}+\cdots +a_{s,s-1}h{\textbf {k}}_{s-1}).}
Конкретний метод визначається числом
s
{\displaystyle \ s}
і коефіцієнтами
b
i
,
a
i
j
{\displaystyle \ b_{i},a_{ij}}
і
c
i
{\displaystyle \ c_{i}}
. Ці коефіцієнти часто впорядковують в таблицю
0
c
2
{\displaystyle c_{2}}
a
21
{\displaystyle a_{21}}
c
3
{\displaystyle c_{3}}
a
31
{\displaystyle a_{31}}
a
32
{\displaystyle a_{32}}
⋮
{\displaystyle \vdots }
⋮
{\displaystyle \vdots }
⋱
{\displaystyle \ddots }
c
s
{\displaystyle c_{s}}
a
s
1
{\displaystyle a_{s1}}
a
s
2
{\displaystyle a_{s2}}
⋯
{\displaystyle \cdots }
a
s
,
s
−
1
{\displaystyle a_{s,s-1}}
b
1
{\displaystyle b_{1}}
b
2
{\displaystyle b_{2}}
⋯
{\displaystyle \cdots }
b
s
−
1
{\displaystyle b_{s-1}}
b
s
{\displaystyle b_{s}}
Для коефіцієнтів методу Рунге — Кутти мають справджуватись умови
∑
j
=
1
i
−
1
a
i
j
=
c
i
{\displaystyle \sum _{j=1}^{i-1}a_{ij}=c_{i}}
для
i
=
2
,
s
¯
{\displaystyle i={\overline {2,s}}}
.
Якщо ми хочемо, щоб метод мав порядок
p
{\displaystyle \ p}
, то варто так само забезпечити умову
y
¯
(
h
+
x
0
)
−
y
(
h
+
x
0
)
=
O
(
h
p
+
1
)
,
{\displaystyle {\bar {\textbf {y}}}(h+x_{0})-{\textbf {y}}(h+x_{0})=O(h^{p+1}),}
де
y
¯
(
h
+
x
0
)
{\displaystyle {\bar {\textbf {y}}}(h+x_{0})}
— наближення, отримане за методом Рунге — Кутти. Після багаторазового диференціювання ця умова перетвориться в систему поліноміальних рівнянь, розв'язки якої є коефіцієнтами методу.
Прямі методи розв'язку жорстких диференціальних рівнянь та їх систем неефективні внаслідок різкого збільшення кількості кроків обчислень (при зменшенні кроку інтегрування
h
{\displaystyle h}
) чи зростання похибки при недостатньо малому кроці
h
{\displaystyle h}
.
Нехай похибка має порядок
k
{\displaystyle k}
. Наближене значення
y
(
x
)
,
{\displaystyle y(x),}
обчислене у точці
x
{\displaystyle x}
із величиною кроку
h
{\displaystyle h}
, позначається
Y
(
x
,
h
)
.
{\displaystyle Y(x,h).}
Тоді у точці
x
=
x
0
+
2
n
h
{\displaystyle x=x_{0}+2nh}
y
(
x
)
−
Y
(
x
,
h
)
≈
A
2
n
h
k
+
1
−
A
(
x
−
x
0
)
h
k
,
y
(
x
)
−
Y
(
x
,
2
h
)
≈
A
n
(
2
h
)
k
+
1
=
A
(
x
−
x
0
)
2
k
h
k
,
{\displaystyle y(x)-Y(x,h)\approx A2nh^{k+1}-A(x-x_{0})h^{k},\quad \quad y(x)-Y(x,2h)\approx An(2h)^{k+1}=A(x-x_{0})2^{k}h^{k},}
тобто
Y
(
x
,
2
h
)
−
Y
(
x
,
h
)
≈
A
(
x
−
x
0
)
(
1
−
2
k
)
h
{\displaystyle Y(x,2h)-Y(x,h)\approx A(x-x_{0})(1-2^{k})h}
та, відповідно,
y
(
x
)
−
Y
(
x
,
h
)
≈
Y
(
x
,
h
)
−
Y
(
x
,
2
h
)
2
k
−
1
.
{\displaystyle y(x)-Y(x,h)\approx {\frac {Y(x,h)-Y(x,2h)}{2^{k}-1}}.}
Помилка при кроці
h
{\displaystyle h}
виражається через наближені значення при кроках
h
{\displaystyle h}
та
2
h
.
{\displaystyle 2h.}
Багатокрокові методи використовують для обчислення наступного значення
y
j
+
1
{\displaystyle y_{j+1}}
лише інформацію з напівінтервалу
[
y
j
,
y
j
+
1
)
{\displaystyle [y_{j},y_{j+1})}
. Багатокрокові методи базуються на заміні диференціального рівняння
y
(
x
)
−
f
(
x
,
y
(
x
)
)
=
0
,
y
(
a
)
=
s
{\displaystyle y(x)-f(x,y(x))=0,\quad \quad y(a)=s}
за сталого кроку
h
{\displaystyle h}
різницевим рівнянням порядку
k
{\displaystyle k}
∑
j
=
0
k
a
j
(
k
)
y
−
h
∑
j
=
0
k
b
j
(
k
)
f
(
x
k
+
j
,
y
k
+
j
)
=
0
,
a
k
(
k
)
≠
0
,
(
a
0
(
k
)
)
2
+
(
b
0
(
k
)
)
2
≠
0
,
n
=
0
,
1
,
.
.
.
,
{\displaystyle \sum _{j=0}^{k}a_{j}^{(k)}y-h\sum _{j=0}^{k}b_{j}^{(k)}f(x_{k+j},y_{k+j})=0,\quad \quad a_{k}^{(k)}\neq 0,\quad \quad (a_{0}^{(k)})^{2}+(b_{0}^{(k)})^{2}\neq 0,\quad \quad n=0,1,...,}
y
0
=
s
,
y
1
,
.
.
.
,
y
k
−
1
{\displaystyle y_{0}=s,y_{1},...,y_{k-1}}
- задані значення.
Кожний спосіб такого типу визначається поліномами
p
k
(
z
)
=
a
k
(
k
)
z
k
+
a
k
−
1
(
k
)
z
k
−
1
+
.
.
.
+
z
0
(
k
)
,
σ
k
(
z
)
=
b
k
(
k
)
z
k
+
b
k
−
1
(
k
)
z
k
−
1
+
.
.
.
b
0
(
k
)
.
{\displaystyle p_{k}(z)=a_{k}^{(k)}z^{k}+a_{k-1}^{(k)}z^{k-1}+...+z_{0}^{(k)},\quad \quad \sigma _{k}(z)=b_{k}^{(k)}z^{k}+b_{k-1}^{(k)}z^{k-1}+...b_{0}^{(k)}.}
Якщо степінь
σ
k
{\displaystyle \sigma _{k}}
менше степені
p
k
,
{\displaystyle p_{k},}
то говорять про явний (або відчинений) метод, якщо степені рівні, то про неявний (зачинений).
Розв'язання систем диференціальних рівнянь методом Рунге-Кутти є одним з найбільш поширених числових методів розв'язання в техніці. В середовищі MATLAB /Octave (досить поширена і зручна мова програмування для технічних обчислень) реалізований один з його різновидів — метод Дорманда-Принса.
Крижанівський С.Є. Диференціальні рівняння . — Х.: : ДНТВУ.НКТП, 1938. — 398 с.(укр.)
Гаврилюк І.П. , Макаров В.Л. Методи обчислень. Частина 1 . — К. : Вища школа , 1995. — 367 с. — ISBN 5-11-004111-2 .(укр.)
М. Я. Лященко , М. С. Головань . Чисельні методи: Підручник . — К .: : Либідь , 1996. — 288 с.(укр.)
Цегелик Г. Г . Чисельні методи . — Львів : ЛНУ , 2004. — 407 с.(укр.)
Ляшко І. І. , Боярчук О. К. , Гай Я. Г. , Головач Г. П. Математичний аналіз в прикладах і задачах . — 2026. — 2100+ с.(укр.)
John C. Butcher (2008). Numerical Methods for Ordinary Differential Equations (PDF) . New York: John Wiley & Sons . с. 463. ISBN 978-0-471-96758-3 .
William H. Press, Brian P. Flannery, Saul A. Teukolsky, William T. Vetterling. Numerical Recipes in C. Cambridge, UK: Cambridge University Press, 1988. (Розділи 16.1 і 16.2.).
Методи першого порядку Методи другого порядку Методи вищих порядків Інше