Работа вам нужна срочно. Не волнуйтесь, уложимся!
- 22423 авторов готовы помочь тебе.
- 2402 онлайн
Решить
Предмет: Математика
Раздел: Численные методы (Метод Рунге-Кутты 4-го порядка для решения ОДУ)
Решить методом Рунге-Кутты 4-го порядка дифференциальное уравнение:
y' = x + y + 1,
при x \in [0, 1],
y(0) = 0,
шаг h = 0.1.
Сравнить результат с точным решением:
y(x) = 2e^x - (x + 2).
Общий вид метода Рунге-Кутты 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
Начальные условия:
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
По формуле точного решения:
y(1) = 2e^1 - (1 + 2) = 2e - 3
y(1) = 2 \cdot 2.718281828 - 3 = 5.436563656 - 3 = 2.436563656
Численное:
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