Метод рунге кутта 4 порядка в уравнение эйлера

Численные методы решения обыкновенных дифференциальных уравнений. Метод Эйлера и методы Рунге-Кутта для решения дифференциальных уравнений

Суть метода Эйлера заключается в переходе от бесконечно малых приращений в уравнении к конечным: Метод рунге кутта 4 порядка в уравнение эйлера(1)

т.е. в замене производной приближенным конечно-разностным отношением:

Метод рунге кутта 4 порядка в уравнение эйлера

где h = ∆х — шаг интегрирования.

Отсюда Метод рунге кутта 4 порядка в уравнение эйлера(3)

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

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

Метод рунге кутта 4 порядка в уравнение эйлера

Рис. 5.1. Метод Эйлера

Достоинствами метода Эйлера являются его простота и наглядность, недостатками — относительно невысокая точность (он имеет первый порядок точности) и систематическое накопление ошибки. Точность и устойчивость решения в значительной степени зависят от величины шага интегрирования. Для оценки погрешности и выбора шага может быть применена формула Рунге Метод рунге кутта 4 порядка в уравнение эйлера.

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

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

Метод Рунге-Кутта второго порядка с полным шагом реализуется по формуле:

Метод рунге кутта 4 порядка в уравнение эйлера(6.1.)

Его геометрическая интерпретация (рис. 6.1.) заключается в следующем:

1. Приближенно вычисляют значение функции в точке xi+h по формуле Эйлера Метод рунге кутта 4 порядка в уравнение эйлераи наклон интегральной кривой в этой точке Метод рунге кутта 4 порядка в уравнение эйлера

2. Находят средний наклон на шаге h: Метод рунге кутта 4 порядка в уравнение эйлера

3. По этому наклону уточняют значение yi+1 по формуле (6.1.).

Метод рунге кутта 4 порядка в уравнение эйлераРис. 6.1. Метод Рунге-Кутта второго порядка с полным шагом

Формула метода Рунге-Кутта второго порядка с половинным шагомимеет вид

Метод рунге кутта 4 порядка в уравнение эйлера

Метод рунге кутта 4 порядка в уравнение эйлера

Рисунок 6.3. Метод Рунге-Кутта второго порядка с половинным шагом

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

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

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

Метод Рунге-Кутты 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, и помогите другим вундеркиндам.

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

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

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

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-го порядка.

📸 Видео

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

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

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

Метод Эйлера

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Явный метод Рунге-Кутты второго порядка для решения задачи Коши. Контрольная работа МФТИСкачать

Явный метод Рунге-Кутты второго порядка для решения задачи Коши. Контрольная работа МФТИ

Численные методы. Лекция 10: метод Эйлера, методы Рунге-КуттыСкачать

Численные методы. Лекция 10: метод Эйлера, методы Рунге-Кутты

06 Неявные методы Рунге-КутыСкачать

06 Неявные методы Рунге-Куты

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

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

7.2 Устойчивость методов Рунге КуттыСкачать

7.2 Устойчивость методов Рунге Кутты
Поделиться или сохранить к себе: