Skip to content

Files

Latest commit

4e3a186 · Feb 1, 2024

History

History
120 lines (96 loc) · 3.87 KB

Fourth_Order_Runge-Kutta_Method.md

File metadata and controls

120 lines (96 loc) · 3.87 KB

Метод Рунге-Кутта четвёртого порядка

Решение простого дифференциального уравнения

Существует несколько способов расчёта коэффициентов, здесь используется чаще встречающийся в литературе.

Известны:

  • уравнение первой производной искомой функции;
  • значение искомой функции в начальной точке.

{ d y ( t ) d t = y ( t ) = f ( y ( t ) , t ) y ( t 0 ) = y 0

Необходимо найти значение функции в точке t 1 .

Вычисление производится по формулам:

h = t 1 t 0 k 1 = f ( y ( t 0 ) , t 0 ) k 2 = f ( y ( t 0 ) + k 1 h 2 , t 0 + h 2 ) k 3 = f ( y ( t 0 ) + k 2 h 2 , t 0 + h 2 ) k 4 = f ( y ( t 0 ) + k 3 h ) , t 0 + h ) y ( t 1 ) = y ( t 0 ) + k 1 + 2 k 2 + 2 k 3 + k 4 6 h

Программирование

Для программирования задача заключается в наличии некоторой функции

d y d t = f d y ( y i , t i )

а так же значения переменных y i и t i на i -ом шаге, и величины шага h .

Тогда ход вычислений будет выглядеть как

k 1 := f d y ( y i , t i ) k 2 := f d y ( y i + k 1 h 2 , t i + h 2 ) k 3 := f d y ( y i + k 2 h 2 , t i + h 2 ) k 4 := f d y ( y i + k 3 h , t i + h ) t i + 1 := t i + h y i + 1 := y i + k 1 + 2 k 2 + 2 k 3 + k 4 6 h

y i + 1 и есть значение искомой функции в следующей точке аппроксимации t i + 1 .

Система из двух дифференциальных уравнений

Решается аналогично, коэффициенты вычисляются для каждой из функций.

Программирование

Дано две функции, составляющие систему дифференциальных уравнений:

{ d x d t = f d x ( x i , y i , t i ) d y d t = f d y ( x i , y i , t i )

значения переменных x i , y i и t i на i -ом шаге, и величина шага h .

Тогда вычисление выполняется как:

k 1 x := f d x ( x i , y i , t i ) k 1 y := f d y ( x i , y i , t i ) k 2 x := f d x ( x i + k 1 x h 2 , y i + k 1 y h 2 , t i + h 2 ) k 2 x := f d y ( x i + k 1 x h 2 , y i + k 1 y h 2 , t i + h 2 ) k 3 x := f d x ( x i + k 2 x h 2 , y i + k 2 y h 2 , t i + h 2 ) k 3 y := f d y ( x i + k 2 x h 2 , y i + k 2 y h 2 , t i + h 2 ) k 4 x := f d x ( x i + k 3 x h , y i + k 3 y h , t i + h ) k 4 y := f d y ( x i + k 3 x h , y i + k 3 y h , t i + h ) t i + 1 := t i + h x i + 1 := x i + k 1 x + 2 k 2 x + 2 k 3 x + k 4 x 6 h y i + 1 := y i + k 1 y + 2 k 2 y + 2 k 3 y + k 4 y 6 h

Применение для аппроксимации осциллятора Хопфа

Использование метода Рунге-Кутта четвёртого порядка позволяет хорошо сгладить генерируемые осциллятором Хопфа значения. Для сглаживания используется алгоритм описанный выше для систем дифференциальных уравнений, однако в формулах отсутствует параметр t , а следовательно его не нужно вычислять.