You are on page 1of 5

Київський національний університет імені Тараса Шевченка

факультет радіофізики, електроніки та комп’ютерних систем

Лабораторна робота 5
ЗВИЧАЙНІ ДИФЕРЕНЦІАЛЬНІ РІВНЯННЯ. ЗАДАЧА КОШІ.

Роботу виконав
студент 2-го курсу ЕІТМ
Каденко Олександр

Київ 2023
Завдання: знайти розв’язок звичайного диференціального рівняння аналітично і за допомогою
метода Рунге - Кутти. Порівняти аналітичний та наближений результати. Визначити порядок
точності квадратурної формули.

import numpy as np

def dydx(x, y):


return -2 * x * y * np.exp(-x ** 2)

def analytical_solution(x):
return -0.217116153110207 * np.exp (np.exp(-x**2))

def runge_kutta(x0, y0, xn, h):


x_values = []
numerical_values = []
analytical_values = []

while x0 <= xn:


x_values.append(x0)
numerical_values.append(y0)
analytical_values.append(analytical_solution(x0))

k1 = h * dydx(x0, y0)
k2 = h * dydx(x0 + 0.5 * h, y0 + 0.5 * k1)
k3 = h * dydx(x0 + 0.5 * h, y0 + 0.5 * k2)
k4 = h * dydx(x0 + h, y0 + k3)

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


x0 = x0 + h

return x_values, numerical_values, analytical_values

x0 = -3
y0 = 1
xn = 3
h = 0.1

x_values, numerical_values, analytical_values = runge_kutta(x0, y0, xn, h)

for i in range(len(x_values)):
print("x = {:.2f}, Numerical y = {:.6f}, Analytical y =
{:.6f}".format(x_values[i], numerical_values[i], analytical_values[i]))

print('----------------------------------------------------------------')
print("x = {:.2f}, Numerical y = {:.6f}, Analytical y = {:.6f} with h =
0.1".format(x_values[3], numerical_values[3], analytical_values[3]))
h = 0.3

x_values, numerical_values, analytical_values = runge_kutta(x0, y0, xn, h)


print("x = {:.2f}, Numerical y = {:.6f}, Analytical y = {:.6f} with h =
0.3".format(x_values[3], numerical_values[3], analytical_values[3]))
Висновок: У ході виконання лабораторної роботи було вивчено метод Рунге–Кутта для
розв'язання задачі Коші звичайного диференціального рівняння. Завдання включало
пошук аналітичного розв'язку, порівняння його з наближеним за допомогою методу
Рунге–Кутта, визначення порядку точності квадратурної формули та аналіз впливу
величини кроку інтегрування на точність розв'язку.

Основні кроки та результати:

1. Розробка програми: Була створена програма для розв'язання задачі Коші методом
Рунге–Кутта. Обрана конкретна обчислювальна
2. Перевірка розв'язку: Наведений загальний розв'язок був перевірений для
відповідності диференціальному рівнянню. Був знайдений частинний аналітичний
розв'язок, який відповідає початковій умові варіанту.
3. Побудова таблиці значень: Таблиця значень аналітичного та наближеного
розв'язків була побудована на відрізку з кроком h = 0.1.
4. Дослідження впливу кроку інтегрування: Було проведено дослідження впливу
розміру кроку h на точність розв'язку задачі. Порівняння значень аналітичного та
наближеного розв'язків при різних значеннях h вказало на важливість обрання
оптимального кроку для досягнення бажаної точності.

Висновки:

1. Ефективність методу Рунге–Кутта: Метод Рунге–Кутта виявився ефективним


для наближеного розв'язку задачі Коші.
2. Вплив кроку інтегрування: Величина кроку інтегрування суттєво впливає на
точність результату. Занадто великі або занадто малі значення h можуть призвести
до невірного або витратного обчислення.
3. Порядок точності: Залежність між значеннями аналітичного та наближеного
розв'язків при різних h дозволяє визначити порядок точності квадратурної
формули.

Лабораторна робота дозволила глибше розібратися з методом Рунге–Кутта, оцінити вплив


параметрів на точність розв'язку та виконати порівняльний аналіз з аналітичним
розв'язком.

You might also like