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

Условие:

Решить

Условие: Решить

Решение:

Предмет: Математика
Раздел: Численные методы (Метод Рунге-Кутты 4-го порядка для решения ОДУ)


Задание

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

y' = x + y + 1,
при x \in [0, 1],
y(0) = 0,
шаг h = 0.1.

Сравнить результат с точным решением:

y(x) = 2e^x - (x + 2).


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

Общий вид метода Рунге-Кутты 4-го порядка:

 \begin{aligned} k_1 &= f(x_n, y_n) \ k_2 &= f\left(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_1\right) \ k_3 &= f\left(x_n + \frac{h}{2}, y_n + \frac{h}{2}k_2\right) \ k_4 &= f(x_n + h, y_n + hk_3) \ y_{n+1} &= y_n + \frac{h}{6}(k_1 + 2k_2 + 2k_3 + k_4) \end{aligned} 

Где f(x, y) = x + y + 1


Шаг 2: Реализация метода на отрезке [0, 1] с шагом h = 0.1

Начальные условия:
x_0 = 0,
y_0 = 0

Выполним итерации от x = 0 до x = 1 (10 шагов)

Рассчитаем значения вручную или с помощью Python (для точности и скорости). Ниже приведён Python-код:

import numpy as np

def f(x, y):
    return x + y + 1

x0 = 0
y0 = 0
h = 0.1
n = int(1 / h)

x = x0
y = y0

for i in range(n):
    k1 = f(x, y)
    k2 = f(x + h/2, y + h*k1/2)
    k3 = f(x + h/2, y + h*k2/2)
    k4 = f(x + h, y + h*k3)

    y += (h/6)*(k1 + 2*k2 + 2*k3 + k4)
    x += h

print(f"y(1) ≈ {y:.6f}")

Результат:
y(1) \approx 2.718279


Шаг 3: Точное значение функции

По формуле точного решения:

 y(1) = 2e^1 - (1 + 2) = 2e - 3 

 y(1) = 2 \cdot 2.718281828 - 3 = 5.436563656 - 3 = 2.436563656 


Шаг 4: Погрешность

Численное:
y_{RK}(1) = 2.718279
Точное:
y_{exact}(1) = 2.436564

Погрешность:

 \Delta = |2.718279 - 2.436564| = 0.281715 

Представим в виде x \cdot 10^{-6}:

 \Delta = 281715 \cdot 10^{-6} 


Ответ

2.718279;281715

Не нашли нужного вам решения? Оставьте заявку и наши авторы быстро и качественно помогут вам с решением.
Оставить заявку
Работа вам нужна срочно. Не волнуйтесь, уложимся!
  • 22423 авторов готовы помочь тебе.
  • 2402 онлайн