Добавил:
baraevaliza
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ИДЗ по ВычМат 2024 / ИДЗ1
.pyimport matplotlib.pyplot as plt
import numpy as np
import math as m
def f(fi1, w1, fi2, w2):
dfi1_dt = w1
dw1_dt = - C1 * fi1 - C2 * (fi1 - fi2)
dfi2_dt = w2
dw2_dt = - C3 * fi2 + C4 * (fi1 - fi2)
return [dfi1_dt, dw1_dt, dfi2_dt, dw2_dt]
# Параметры маятника
m1 = 1
m2 = 1
g = 9.8
l1 = 1
l2 = 1
k = 0.3
l = 0.5
# Константы
C1 = g / l1
C2 = (k * l**2) / (m1 * l1**2)
C3 = g / l2
C4 = (k * l**2) / (m2 * l2**2)
# Количество шагов и размер шага
n = 1000000
h = 0.001
# Массив углов и скорений на кажом шаге
answer = [[0] * 4 for _ in range(n)]
answer[0] = [m.pi / 3, 1, m.pi / 6, 1] # [fi_1, w1, fi_2, w2]
# Метод Рунге-Кутты 4-го порядка
for i in range(n - 1):
k1 = f(answer[i][0], answer[i][1], answer[i][2], answer[i][3])
k2 = f(answer[i][0] + (h/2) * k1[0], answer[i][1] + (h/2) * k1[1], answer[i][2] + (h/2) * k1[2], answer[i][3] + (h/2) * k1[3])
k3 = f(answer[i][0] + (h/2) * k2[0], answer[i][1] + (h/2) * k2[1], answer[i][2] + (h/2) * k2[2], answer[i][3] + (h/2) * k2[3])
k4 = f(answer[i][0] + h * k3[0], answer[i][1] + h * k3[1], answer[i][2] + h * k3[2], answer[i][3] + h * k3[3])
answer[i+1] = [answer[i][j] + (h/6) * (k1[j] + 2*k2[j] + 2*k3[j] + k4[j]) for j in range(4)]
# Наложение шума на измерения
noise_std_dev = 0.1 # Стандартное отклонение шума
fi1_noisy = [a[0] + np.random.normal(0, noise_std_dev) for a in answer]
fi2_noisy = [a[2] + np.random.normal(0, noise_std_dev) for a in answer]
t_values = [i * h for i in range(n)]
# Построение графика
plt.figure(figsize=(24, 6))
plt.plot(t_values, fi1_noisy, label='fi1(t)')
plt.plot(t_values, fi2_noisy, label='fi2(t)')
plt.xlabel('t')
plt.ylabel('fi1(t), fi2(t)')
plt.legend()
plt.grid()
plt.show()
Соседние файлы в папке ИДЗ по ВычМат 2024
