Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Видео:4a. Методы Рунге-КуттаСкачать

4a. Методы Рунге-Кутта

Метод Рунге-Кутты 4-го порядка для решения дифференциального уравнения

Учитывая следующие входные данные,

  • Обычное дифференциальное уравнение, которое определяет значение dy / dx в виде x и y.
  • Начальное значение y, т. Е. Y (0)

Таким образом, мы приведены ниже.

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Задача состоит в том, чтобы найти значение неизвестной функции y в заданной точке x.

Метод Рунге-Кутты находит приблизительное значение y для данного x. Только обыкновенные дифференциальные уравнения первого порядка могут быть решены с помощью метода 4-го порядка Рунге Кутты.

Ниже приведена формула, используемая для вычисления следующего значения y n + 1 из предыдущего значения y n . Значения n равны 0, 1, 2, 3,… (x — x0) / h. Здесь h — высота шага, а x n + 1 = x 0 + h

, Меньший размер шага означает большую точность.

Как решить дифференциальное уравнение методом рунге кутта 4 порядка
Формула в основном вычисляет следующее значение y n + 1, используя текущее значение y n плюс средневзвешенное значение четырех приращений.

  • k 1 — приращение, основанное на наклоне в начале интервала, используя y
  • K 2 представляет собой приращение на основе наклона в средней точке интервала, с использованием Y + 1 HK / 2.
  • к 3 снова приращение на основе наклона в средней точке, используя при помощи у + кк 2/2.
  • k 4 — это приращение, основанное на наклоне в конце интервала, с использованием y + hk 3 .

Этот метод является методом четвертого порядка, это означает, что локальная ошибка усечения имеет порядок O (h 5 ), в то время как общая накопленная ошибка составляет порядок O (h 4 ).

Ниже приведена реализация приведенной выше формулы.

// C программа для реализации метода Рунге Кутты
#include

// Пример дифференциального уравнения «dy / dx = (x — y) / 2»

float dydx( float x, float y)

// Находит значение y для заданного x, используя размер шага h
// и начальное значение y0 в x0.

float rungeKutta( float x0, float y0, float x, float h)

// Подсчитать количество итераций, используя размер шага или

int n = ( int )((x — x0) / h);

float k1, k2, k3, k4, k5;

// Итерация по количеству итераций

// Применить формулы Рунге Кутты, чтобы найти

// следующее значение у

k2 = h*dydx(x0 + 0.5*h, y + 0.5*k1);

k3 = h*dydx(x0 + 0.5*h, y + 0.5*k2);

k4 = h*dydx(x0 + h, y + k3);

// Обновить следующее значение y

y = y + (1.0/6.0)*(k1 + 2*k2 + 2*k3 + k4);;

// Обновляем следующее значение x

float x0 = 0, y = 1, x = 2, h = 0.2;

printf ( «nThe value of y at x is : %f» ,

rungeKutta(x0, y, x, h));

// Java-программа для реализации метода Рунге Кутты

double dydx( double x, double y)

// Находит значение y для заданного x, используя размер шага h

// и начальное значение y0 в x0.

double rungeKutta( double x0, double y0, double x, double h)

differential d1 = new differential();

// Подсчитать количество итераций, используя размер шага или

int n = ( int )((x — x0) / h);

double k1, k2, k3, k4, k5;

// Итерация по количеству итераций

for ( int i = 1 ; i

// Применить формулы Рунге Кутты, чтобы найти

// следующее значение у

k1 = h * (d1.dydx(x0, y));

k2 = h * (d1.dydx(x0 + 0.5 * h, y + 0.5 * k1));

k3 = h * (d1.dydx(x0 + 0.5 * h, y + 0.5 * k2));

k4 = h * (d1.dydx(x0 + h, y + k3));

// Обновить следующее значение y

y = y + ( 1.0 / 6.0 ) * (k1 + 2 * k2 + 2 * k3 + k4);

// Обновляем следующее значение x

public static void main(String args[])

differential d2 = new differential();

double x0 = 0 , y = 1 , x = 2 , h = 0.2 ;

System.out.println( «nThe value of y at x is : «

+ d2.rungeKutta(x0, y, x, h));

// Этот код предоставлен Prateek Bhindwar

# Программа Python для реализации метода Рунге Кутты
# Пример дифференциального уравнения «dy / dx = (x — y) / 2»

# Находит значение y для заданного x, используя размер шага h
# и начальное значение y0 при x0.

def rungeKutta(x0, y0, x, h):

# Подсчитать количество итераций, используя размер шага или

n = ( int )((x — x0) / h)

# Итерировать по количеству итераций

for i in range ( 1 , n + 1 ):

«Apply Runge Kutta Formulas to find next value of y»

k1 = h * dydx(x0, y)

k2 = h * dydx(x0 + 0.5 * h, y + 0.5 * k1)

k3 = h * dydx(x0 + 0.5 * h, y + 0.5 * k2)

k4 = h * dydx(x0 + h, y + k3)

# Обновить следующее значение y

y = y + ( 1.0 / 6.0 ) * (k1 + 2 * k2 + 2 * k3 + k4)

# Обновить следующее значение x

print ‘The value of y at x is:’ , rungeKutta(x0, y, x, h)

# Этот код предоставлен Prateek Bhindwar

// C # программа для реализации Runge
// метод Кутты

static double dydx( double x, double y)

// Находит значение y для данного x

// используя размер шага h и начальный

// значение y0 в x0.

static double rungeKutta( double x0,

double y0, double x, double h)

// Подсчитать количество итераций используя

// размер шага или высота шага h

int n = ( int )((x — x0) / h);

double k1, k2, k3, k4;

// Итерация по количеству итераций

for ( int i = 1; i

// Применяем формулы Рунге Кутты

// найти следующее значение у

k1 = h * (dydx(x0, y));

k2 = h * (dydx(x0 + 0.5 * h,

k3 = h * (dydx(x0 + 0.5 * h,

k4 = h * (dydx(x0 + h, y + k3));

// Обновить следующее значение y

y = y + (1.0 / 6.0) * (k1 + 2

// Обновляем следующее значение x

public static void Main()

double x0 = 0, y = 1, x = 2, h = 0.2;

Console.WriteLine( «nThe value of y»

+ rungeKutta(x0, y, x, h));

// Этот код предоставлен Sam007.

// PHP-программа для реализации
// метод Рунге Кутта

// Пример дифференциального уравнения
// «dy / dx = (x — y) / 2»

function dydx( $x , $y )

return (( $x — $y ) / 2);

// Находит значение y для
// дано х, используя размер шага h
// и начальное значение y0 в x0.

function rungeKutta( $x0 , $y0 , $x , $h )

// Подсчитать количество итераций

// используя размер шага или шаг

$k1 ; $k2 ; $k3 ; $k4 ; $k5 ;

// Итерация по номеру

for ( $i = 1; $i $n ; $i ++)

// Применить Рунге Кутта

// формулы для поиска

// следующее значение у

$k1 = $h * dydx( $x0 , $y );

$k2 = $h * dydx( $x0 + 0.5 * $h ,

$k3 = $h * dydx( $x0 + 0.5 * $h ,

$k4 = $h * dydx( $x0 + $h , $y + $k3 );

// Обновить следующее значение y

$y = $y + (1.0 / 6.0) * ( $k1 + 2 *

// Обновляем следующее значение x

echo «The value of y at x is : » ,

rungeKutta( $x0 , $y , $x , $h );

// Этот код предоставлен anuj_67.
?>

Сложность по времени вышеупомянутого решения составляет O (n), где n — (x-x0) / ч.

Некоторые полезные ресурсы для подробных примеров и большего количества объяснения.
http://w3.gazi.edu.tr/

Эта статья предоставлена Арпит Агарвал . Если вам нравится GeeksforGeeks и вы хотите внести свой вклад, вы также можете написать статью и отправить ее по почте на contrib@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.

Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Видео:Метод ЭйлераСкачать

Метод Эйлера

7.4. Метод Рунге-Кутта 4 порядка

На практике наибольшее распространение получил метод Рунге-Кутта 4-го порядка, в котором усреднение проводится по трём точкам, формула Эйлера на каждом отрезке используется 4 раза: в начале отрезка, дважды в его середине и в конце отрезка.

Расчетные формулы метода для дифференциального уравнения (7.3) имеют вид:

Как решить дифференциальное уравнение методом рунге кутта 4 порядка, (7.8)

Где i = 0, 1, …., n-1 — номер узла;

Xi = a + i×h — координата узла;

У0 = у(х0) — начальное условие.

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Погрешность метода dМ = О(h5).

Схема алгоритма решения ОДУ методом Рунге-Кутта 4-го порядка отличается алгоритмом расчёта новой точки (Рис. 7.5).

Пример 7.4. Решение ранее рассмотренного уравнения (пример 7.1) методом Рунге-Кутта 4 порядка.

Y’ — 2×y + x2 = 1, x Î [0;1], y(0) = 1.

Пусть n = 10 , h = (1 — 0)/10 = 0,1.

Начальная точка x0 = 0, y0 = 1.

Рассчет первой точки.

Сначала вычислим значения C0, C1, C2, C3:

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Вычислим значение y1:

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Аналогично можно вычислить значения функции во 2, 3, . , 10 точках.

Как решить дифференциальное уравнение методом рунге кутта 4 порядка

Рис. 7.7. Схема алгоритма расчета новой точки методом Рунге-Кутта 4-го порядка.

Общая характеристика методов:

1. Все методы являются Одношаговыми, то есть для вычисления значения функции в новой точке используется ее значение в предыдущей точке. Это свойство называется Самостартованием.

2. Все методы легко обобщаются на системы дифференциальных уравнений 1-го порядка.

Видео:Решение ОДУ методом Рунге-Кутта 4 порядка (программа)Скачать

Решение ОДУ методом Рунге-Кутта 4 порядка (программа)

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

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

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

Для того, чтобы использовать калькулятор, вам надо привести дифференциальное уравнение к форме

и ввести правую часть уравнения f(x,y) в поле y’ калькулятора.

Также вам понадобится ввести начальное значение

и указать точку в которой вы хотите получить численное решение уравнения .

Последнее параметр калькулятора — размер шага с которым вычисляется следующее приближение по графику функции.

Описание метода можно найти под калькулятором.

🎬 Видео

3_11. Алгоритм Рунге-КуттыСкачать

3_11. Алгоритм Рунге-Кутты

Решение ОДУ методом Рунге КуттаСкачать

Решение ОДУ методом Рунге Кутта

Решение ОДУ: метод Рунге КуттаСкачать

Решение ОДУ: метод Рунге Кутта

04 Метод Рунге-Кутты 4-го порядкаСкачать

04 Метод Рунге-Кутты 4-го порядка

Программируем метод Рунге-Кутта 4 порядкаСкачать

Программируем метод Рунге-Кутта 4 порядка

6.4 Явные методы Рунге-КуттыСкачать

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

Интегрирование систем дифференциальных уравнений методом Рунге-Кутта 4-ог порядка в Arduino IDE.Скачать

Интегрирование систем дифференциальных уравнений методом Рунге-Кутта 4-ог порядка в Arduino IDE.

Методы численного анализа - Метод Рунге-Кутта для ОДУ 2 порядкаСкачать

Методы численного анализа - Метод Рунге-Кутта для ОДУ 2 порядка

Численные методы решения ДУ: метод Рунге-КуттаСкачать

Численные методы решения ДУ: метод Рунге-Кутта

Метод Рунге Кутты 2 и 4 порядковСкачать

Метод Рунге Кутты 2 и 4 порядков

Решение ОДУ методом Рунге КуттаСкачать

Решение ОДУ методом Рунге Кутта

Метод Эйлера. Метод Рунге-Кутта. Классический метод Рунге-Кутта 4 порядка точности. Лекция №9Скачать

Метод Эйлера. Метод Рунге-Кутта. Классический метод Рунге-Кутта 4 порядка точности. Лекция №9

Линейное дифференциальное уравнение Коши-ЭйлераСкачать

Линейное дифференциальное уравнение Коши-Эйлера

Численное решение задачи Коши методом ЭйлераСкачать

Численное решение задачи Коши методом Эйлера

6.1 Численные методы решения задачи Коши для ОДУСкачать

6.1 Численные методы решения задачи Коши для ОДУ

Численные методы решения ОДУСкачать

Численные методы решения ОДУ
Поделиться или сохранить к себе: