Professional Documents
Culture Documents
Lavro 1
Lavro 1
Варіант №15
Виконала:
Студентка 1-го курсу магістратури
ІАТЕ
групи ТР-??мп
ПІП
Перевірив:
Свістунов Сергій Якович
Київ-2022
Завдання
Хід роботи
Код програми
import numpy as np
import matplotlib.pyplot as plt
m1 = 1.0
m2 = 1.0
k_1 = 100.0
k_2 = 100.0
x0_1 = 0.05
x0_2 = 0.15
v0_1 = 0.0
v0_2 = 0.0
L1 = 0.1
L2 = 0.1
f1 = 0.0
f2 = f1
def f(x): return np.array([x[1], ((-f1 * x[1] - k_1 * (x[0] - L1) + k_2 * (x[2] -
x[0] - L2)) / m1), x[3],
(-f2 * x[3] - k_2 * (x[2] - x[0] - L2) / m2)])
h = 0.02
t = np.arange(0, 10 + h, h)
y = np.zeros((len(t), 4))
y[0, :] = [x0_1, v0_1, x0_2, v0_2]
print(results)
plt.figure()
plt.plot(results[:, 0], results[:, 1], label='x1', color='blue')
plt.plot(results[:, 0], results[:, 4], label='x2', color='Purple')
plt.xlabel('time')
plt.ylabel('position')
plt.legend()
plt.xticks(np.arange(0, 10.5, 0.5))
plt.legend(loc="upper right")
plt.figure(figsize=(15, 7))
plt.plot(results[:, 0], results[:, 3], label='ΔL1', color='orange')
plt.plot(results[:, 0], results[:, 6], label='ΔL2', color='green')
plt.xlabel('time')
plt.ylabel('elongation')
plt.legend()
plt.xticks(np.arange(0, 10.5, 0.5))
plt.legend(loc="upper right")
plt.show()
Через точку Рi(Xi,Yi) (мал. 1) проводиться дотична А1 з тангенсом кута нахилу
f(Xi,Yi) до перетинання з ординатою в точці X=Xi + h/2. Одержуємо точку
перетинання В з координатами (Xi+h/2, Yi+h/2*Yi'). Вираховуєм тангенс кута
нахилу дотичної в цій точці: Кi=Yi'+1/2=f(Xi+h/2, Yi+h/2*Yi'). Пряма з таким
нахилом, яка проходить через точку В, позначена А2. Далі, через точку Рі(Xi,Yi)
проводимо пряму Ао, паралельну А2. Перетинання прямой Ао з ординатою Х=Хі+1 і
дае шукану точку Рі+1(Xi+1,Yi+1).
Yi+1=Yi+Ki*(Xi+1-Xi)=Yi+h*f(Xi+h/2,Yi+h/2*Yi') (5.9)
Рисунок 1 Модифікований метод Ейлера
Результати обчислень
Після запуску команд, які зображено на рисунку 3 в консоль було виведено
результати обчислень (Рисунок 4). Оскільки точність обчислень є надзвичайно
важливою при роботі з такими маленькими числами, які вказані в індивідуальному
варіанті, було прийнято рішення ніяк не округляти результати обчислень. Через це
вивід є занадто громіздким і його початок автоматично очищається у консолі. Однак
якісь середні значення можна побачити нижче.