upd
BIN
physics/homework/graphs/2.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
122
physics/homework/graphs/2.py
Normal file
@@ -0,0 +1,122 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
# Параметры задачи
|
||||
S = 40 # общее расстояние (км) для наглядности
|
||||
v_walk = 4 # скорость пешехода (км/ч)
|
||||
v_bike = 20 # скорость велосипедиста (км/ч)
|
||||
|
||||
# Оптимальное решение: x = S/2
|
||||
x = S / 2 # расстояние, которое первый турист едет на велосипеде
|
||||
|
||||
# Времена для каждого этапа
|
||||
t1_bike = x / v_bike # время первого туриста на велосипеде
|
||||
t1_walk = (S - x) / v_walk # время первого туриста пешком
|
||||
t_total = t1_bike + t1_walk # общее время
|
||||
|
||||
t2_walk = x / v_walk # время второго туриста пешком
|
||||
t2_bike = (S - x) / v_bike # время второго туриста на велосипеде
|
||||
|
||||
print(f"Общее расстояние: {S} км")
|
||||
print(f"Расстояние на велосипеде для каждого: {x} км")
|
||||
print(f"Общее время: {t_total:.2f} ч")
|
||||
print(f"Средняя скорость: {S/t_total:.2f} км/ч")
|
||||
|
||||
# Построение графика
|
||||
fig, ax = plt.subplots(figsize=(12, 8))
|
||||
|
||||
# Турист A (красная линия)
|
||||
# Этап 1: на велосипеде от 0 до x
|
||||
time_A1 = np.linspace(0, t1_bike, 100)
|
||||
pos_A1 = v_bike * time_A1
|
||||
|
||||
# Этап 2: пешком от x до S
|
||||
time_A2 = np.linspace(t1_bike, t_total, 100)
|
||||
pos_A2 = x + v_walk * (time_A2 - t1_bike)
|
||||
|
||||
# Турист B (синяя линия)
|
||||
# Этап 1: пешком от 0 до x
|
||||
time_B1 = np.linspace(0, t2_walk, 100)
|
||||
pos_B1 = v_walk * time_B1
|
||||
|
||||
# Этап 2: на велосипеде от x до S
|
||||
time_B2 = np.linspace(t2_walk, t_total, 100)
|
||||
pos_B2 = x + v_bike * (time_B2 - t2_walk)
|
||||
|
||||
# Построение графиков
|
||||
ax.plot(time_A1, pos_A1, "r-", linewidth=3, label="Турист A (велосипед)")
|
||||
ax.plot(time_A2, pos_A2, "r--", linewidth=3, label="Турист A (пешком)")
|
||||
ax.plot(time_B1, pos_B1, "b--", linewidth=3, label="Турист B (пешком)")
|
||||
ax.plot(time_B2, pos_B2, "b-", linewidth=3, label="Турист B (велосипед)")
|
||||
|
||||
# Отметки важных точек
|
||||
ax.plot(t1_bike, x, "ro", markersize=8, label="A оставляет велосипед")
|
||||
ax.plot(t2_walk, x, "bo", markersize=8, label="B берет велосипед")
|
||||
ax.plot(t_total, S, "go", markersize=10, label="Финиш (одновременно)")
|
||||
|
||||
# Вертикальная линия в точке передачи велосипеда
|
||||
ax.axvline(
|
||||
x=t2_walk,
|
||||
color="gray",
|
||||
linestyle=":",
|
||||
alpha=0.7,
|
||||
label=f"Передача велосипеда (t={t2_walk:.2f}ч)",
|
||||
)
|
||||
ax.axhline(
|
||||
y=x, color="gray", linestyle=":", alpha=0.7, label=f"Точка передачи (x={x}км)"
|
||||
)
|
||||
|
||||
# Настройка графика
|
||||
ax.set_xlabel("Время (часы)", fontsize=12)
|
||||
ax.set_ylabel("Расстояние (км)", fontsize=12)
|
||||
ax.set_title(
|
||||
"График движения двух туристов с одним велосипедом\n"
|
||||
+ f"Средняя скорость: {S/t_total:.2f} км/ч",
|
||||
fontsize=14,
|
||||
fontweight="bold",
|
||||
)
|
||||
ax.grid(True, alpha=0.3)
|
||||
ax.legend(fontsize=10, loc="center right")
|
||||
|
||||
# Добавление аннотаций
|
||||
ax.annotate(
|
||||
f"Скорость: {v_bike} км/ч",
|
||||
xy=(t1_bike / 2, x / 2),
|
||||
xytext=(0.5, 10),
|
||||
arrowprops=dict(arrowstyle="->", color="red", alpha=0.7),
|
||||
fontsize=10,
|
||||
color="red",
|
||||
)
|
||||
ax.annotate(
|
||||
f"Скорость: {v_walk} км/ч",
|
||||
xy=(t1_bike + (t_total - t1_bike) / 2, x + (S - x) / 2),
|
||||
xytext=(4, 35),
|
||||
arrowprops=dict(arrowstyle="->", color="red", alpha=0.7),
|
||||
fontsize=10,
|
||||
color="red",
|
||||
)
|
||||
ax.annotate(
|
||||
f"Скорость: {v_walk} км/ч",
|
||||
xy=(t2_walk / 2, x / 2),
|
||||
xytext=(1.5, 5),
|
||||
arrowprops=dict(arrowstyle="->", color="blue", alpha=0.7),
|
||||
fontsize=10,
|
||||
color="blue",
|
||||
)
|
||||
ax.annotate(
|
||||
f"Скорость: {v_bike} км/ч",
|
||||
xy=(t2_walk + (t_total - t2_walk) / 2, x + (S - x) / 2),
|
||||
xytext=(3.5, 25),
|
||||
arrowprops=dict(arrowstyle="->", color="blue", alpha=0.7),
|
||||
fontsize=10,
|
||||
color="blue",
|
||||
)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Проверка правильности решения
|
||||
print(f"\nПроверка:")
|
||||
print(f"Время туриста A: {t1_bike:.2f} + {t1_walk:.2f} = {t_total:.2f} ч")
|
||||
print(f"Время туриста B: {t2_walk:.2f} + {t2_bike:.2f} = {t2_walk + t2_bike:.2f} ч")
|
||||
print(f"Разность времен: {abs(t_total - (t2_walk + t2_bike)):.6f} ч (должно быть ~0)")
|
||||
BIN
physics/homework/graphs/4.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
233
physics/homework/graphs/4.py
Normal file
@@ -0,0 +1,233 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Параметры задачи
|
||||
h = 10 # высота падения (м)
|
||||
alpha_deg = 30 # угол наклона плоскости (градусы)
|
||||
alpha = np.radians(alpha_deg) # угол в радианах
|
||||
g = 9.81 # ускорение свободного падения
|
||||
|
||||
print(f"Параметры задачи:")
|
||||
print(f"Высота падения h = {h} м")
|
||||
print(f"Угол наклона α = {alpha_deg}°")
|
||||
print()
|
||||
|
||||
# Расчет характерных величин
|
||||
v0 = np.sqrt(2 * g * h) # скорость при первом ударе
|
||||
print(f"Скорость при первом ударе: v₀ = {v0:.2f} м/с")
|
||||
|
||||
# Компоненты скорости после первого отскока
|
||||
v0x = v0 * np.sin(2 * alpha)
|
||||
v0y = -v0 * np.cos(2 * alpha)
|
||||
print(f"Компоненты скорости после отскока:")
|
||||
print(f"v₀ₓ = {v0x:.2f} м/с")
|
||||
print(f"v₀ᵧ = {v0y:.2f} м/с")
|
||||
|
||||
# Время полета между первым и вторым ударами
|
||||
t1 = 2 * np.sqrt(2 * h / g) * (4 * np.sin(alpha) ** 2 - 1)
|
||||
print(f"Время полета между ударами: t₁ = {t1:.3f} с")
|
||||
|
||||
# Расстояния между ударами
|
||||
L1 = 8 * h * np.sin(alpha) * (4 * np.sin(alpha) ** 2 - 1)
|
||||
k = np.cos(2 * alpha) ** 2 # коэффициент уменьшения
|
||||
L2 = L1 * k
|
||||
L3 = L1 * k**2
|
||||
|
||||
print(f"\nРасстояния между точками ударов:")
|
||||
print(f"L₁ = {L1:.2f} м")
|
||||
print(f"L₂ = {L2:.2f} м")
|
||||
print(f"L₃ = {L3:.2f} м")
|
||||
|
||||
# Максимальное удаление от плоскости
|
||||
l_max = h * np.sin(3 * alpha) ** 2 / (2 * np.sin(alpha) ** 2)
|
||||
print(f"\nМаксимальное удаление от плоскости: l = {l_max:.2f} м")
|
||||
|
||||
# Максимальная вертикальная высота над плоскостью
|
||||
h_max = h * np.sin(2 * alpha) ** 2 / (2 * np.cos(alpha) ** 2)
|
||||
print(f"Максимальная вертикальная высота: h_max = {h_max:.2f} м")
|
||||
|
||||
# Построение графика
|
||||
fig, ax = plt.subplots(figsize=(14, 10))
|
||||
|
||||
# Параметры для визуализации
|
||||
x_range = 60
|
||||
y_range = 25
|
||||
|
||||
# Построение наклонной плоскости
|
||||
x_plane = np.linspace(-5, x_range, 100)
|
||||
y_plane = -x_plane * np.tan(alpha)
|
||||
ax.plot(
|
||||
x_plane, y_plane, "k-", linewidth=3, label=f"Наклонная плоскость (α = {alpha_deg}°)"
|
||||
)
|
||||
|
||||
# Первое падение (вертикально вниз)
|
||||
x_fall = np.array([0, 0])
|
||||
y_fall = np.array([h / np.cos(alpha), 0])
|
||||
ax.plot(x_fall, y_fall, "r--", linewidth=2, label="Падение с высоты h")
|
||||
|
||||
|
||||
# Функция для построения траектории между ударами
|
||||
def plot_trajectory(x0, y0, vx, vy, t_flight, color, label, show_max=False):
|
||||
t = np.linspace(0, t_flight, 200)
|
||||
x = x0 + vx * t
|
||||
y = y0 + vy * t - 0.5 * g * t**2
|
||||
|
||||
ax.plot(x, y, color=color, linewidth=2, label=label)
|
||||
|
||||
if show_max:
|
||||
# Максимум траектории
|
||||
t_max = vy / g
|
||||
if t_max > 0 and t_max < t_flight:
|
||||
x_max = x0 + vx * t_max
|
||||
y_max = y0 + vy * t_max - 0.5 * g * t_max**2
|
||||
ax.plot(
|
||||
x_max,
|
||||
y_max,
|
||||
"o",
|
||||
color=color,
|
||||
markersize=8,
|
||||
markerfacecolor="white",
|
||||
markeredgecolor=color,
|
||||
markeredgewidth=2,
|
||||
)
|
||||
|
||||
# Расстояние от плоскости в точке максимума
|
||||
dist_to_plane = (y_max + x_max * np.tan(alpha)) * np.cos(alpha)
|
||||
return x_max, y_max, dist_to_plane
|
||||
|
||||
return None
|
||||
|
||||
|
||||
# Траектория после первого удара
|
||||
x1_end = v0x * t1
|
||||
y1_end = v0y * t1 - 0.5 * g * t1**2
|
||||
max_info = plot_trajectory(
|
||||
0, 0, v0x, v0y, t1, "blue", "После 1-го удара", show_max=True
|
||||
)
|
||||
|
||||
# Точки ударов
|
||||
impact_points_x = [0]
|
||||
impact_points_y = [0]
|
||||
|
||||
# Второй удар
|
||||
impact_points_x.append(x1_end)
|
||||
impact_points_y.append(y1_end)
|
||||
|
||||
# Скорость после второго удара (уменьшается)
|
||||
v1x = v0x * np.cos(2 * alpha)
|
||||
v1y = -v0y * np.cos(2 * alpha)
|
||||
t2 = t1 * np.cos(2 * alpha)
|
||||
|
||||
# Траектория после второго удара
|
||||
x2_end = x1_end + v1x * t2
|
||||
y2_end = y1_end + v1y * t2 - 0.5 * g * t2**2
|
||||
plot_trajectory(x1_end, y1_end, v1x, v1y, t2, "green", "После 2-го удара")
|
||||
|
||||
# Третий удар
|
||||
impact_points_x.append(x2_end)
|
||||
impact_points_y.append(y2_end)
|
||||
|
||||
# Скорость после третьего удара
|
||||
v2x = v1x * np.cos(2 * alpha)
|
||||
v2y = -v1y * np.cos(2 * alpha)
|
||||
t3 = t2 * np.cos(2 * alpha)
|
||||
|
||||
# Траектория после третьего удара
|
||||
x3_end = x2_end + v2x * t3
|
||||
y3_end = y2_end + v2y * t3 - 0.5 * g * t3**2
|
||||
plot_trajectory(x2_end, y2_end, v2x, v2y, t3, "orange", "После 3-го удара")
|
||||
|
||||
# Четвертый удар
|
||||
impact_points_x.append(x3_end)
|
||||
impact_points_y.append(y3_end)
|
||||
|
||||
# Отметка точек ударов
|
||||
ax.plot(impact_points_x, impact_points_y, "ro", markersize=8, label="Точки ударов")
|
||||
|
||||
# Нумерация точек ударов
|
||||
for i, (x, y) in enumerate(zip(impact_points_x, impact_points_y)):
|
||||
ax.annotate(
|
||||
f"{i+1}",
|
||||
(x, y),
|
||||
xytext=(5, 5),
|
||||
textcoords="offset points",
|
||||
fontsize=12,
|
||||
fontweight="bold",
|
||||
color="red",
|
||||
)
|
||||
|
||||
# Отметка максимальных точек
|
||||
if max_info:
|
||||
x_max, y_max, dist_max = max_info
|
||||
ax.annotate(
|
||||
f"Максимум\n(l={dist_max:.1f}м)",
|
||||
(x_max, y_max),
|
||||
xytext=(10, 10),
|
||||
textcoords="offset points",
|
||||
fontsize=10,
|
||||
ha="left",
|
||||
bbox=dict(boxstyle="round,pad=0.3", facecolor="lightblue", alpha=0.7),
|
||||
)
|
||||
|
||||
# Стрелки для показа расстояний
|
||||
mid_x = impact_points_x[1] / 2
|
||||
mid_y = impact_points_y[1] / 2
|
||||
ax.annotate(
|
||||
"",
|
||||
xy=(impact_points_x[1], impact_points_y[1]),
|
||||
xytext=(impact_points_x[0], impact_points_y[0]),
|
||||
arrowprops=dict(arrowstyle="<->", color="purple", lw=2),
|
||||
)
|
||||
ax.text(
|
||||
mid_x,
|
||||
mid_y - 1,
|
||||
f"L₁ = {L1:.1f}м",
|
||||
ha="center",
|
||||
bbox=dict(boxstyle="round,pad=0.3", facecolor="white", alpha=0.8),
|
||||
)
|
||||
|
||||
# Настройка графика
|
||||
ax.set_xlim(-2, x_range)
|
||||
ax.set_ylim(-15, y_range)
|
||||
ax.set_xlabel("x (м)", fontsize=12)
|
||||
ax.set_ylabel("y (м)", fontsize=12)
|
||||
ax.set_title(
|
||||
"Траектория мячика при упругих отскоках от наклонной плоскости",
|
||||
fontsize=14,
|
||||
fontweight="bold",
|
||||
)
|
||||
ax.grid(True, alpha=0.3)
|
||||
ax.legend(fontsize=10)
|
||||
ax.set_aspect("equal")
|
||||
|
||||
# Добавление текстовой информации на график
|
||||
info_text = f"""Результаты расчетов:
|
||||
• L₁ = {L1:.1f} м
|
||||
• L₂ = {L2:.1f} м
|
||||
• L₃ = {L3:.1f} м
|
||||
• l_max = {l_max:.1f} м
|
||||
• h_max = {h_max:.1f} м
|
||||
|
||||
Параметры:
|
||||
• h = {h} м
|
||||
• α = {alpha_deg}°"""
|
||||
|
||||
ax.text(
|
||||
0.02,
|
||||
0.98,
|
||||
info_text,
|
||||
transform=ax.transAxes,
|
||||
fontsize=10,
|
||||
verticalalignment="top",
|
||||
bbox=dict(boxstyle="round,pad=0.5", facecolor="lightyellow", alpha=0.8),
|
||||
)
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Проверка формул для частного случая α = 30°
|
||||
print(f"\nПроверка формул для α = {alpha_deg}°:")
|
||||
print(f"4sin²α - 1 = {4*np.sin(alpha)**2 - 1:.3f}")
|
||||
print(f"cos(2α) = {np.cos(2*alpha):.3f}")
|
||||
print(f"sin(3α) = {np.sin(3*alpha):.3f}")
|
||||
print(f"sin(2α) = {np.sin(2*alpha):.3f}")
|
||||
BIN
physics/homework/graphs/5.png
Normal file
|
After Width: | Height: | Size: 122 KiB |
186
physics/homework/graphs/5.py
Normal file
@@ -0,0 +1,186 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
|
||||
# Параметры задачи
|
||||
L = 20 # расстояние до стены (м)
|
||||
H = 8 # высота стены (м)
|
||||
g = 9.81 # ускорение свободного падения
|
||||
|
||||
print(f"Параметры задачи:")
|
||||
print(f"Расстояние до стены L = {L} м")
|
||||
print(f"Высота стены H = {H} м")
|
||||
print()
|
||||
|
||||
# Расчет оптимальных параметров
|
||||
R = np.sqrt(L**2 + H**2) # расстояние до верхнего края стены
|
||||
tan_alpha_opt = (L + R) / H
|
||||
alpha_opt_rad = np.arctan(tan_alpha_opt)
|
||||
alpha_opt_deg = np.degrees(alpha_opt_rad)
|
||||
|
||||
# Минимальная скорость
|
||||
v0_min = np.sqrt(g * (L**2 + H**2 + L * R) / L)
|
||||
|
||||
print(f"Результаты расчета:")
|
||||
print(f"Расстояние до верхнего края стены R = {R:.2f} м")
|
||||
print(f"Оптимальный угол α = {alpha_opt_deg:.1f}°")
|
||||
print(f"Минимальная скорость v₀ = {v0_min:.2f} м/с")
|
||||
print(f"tan(α) = {tan_alpha_opt:.3f}")
|
||||
print()
|
||||
|
||||
|
||||
# Функция для расчета траектории
|
||||
def trajectory(v0, alpha_rad, t_max):
|
||||
t = np.linspace(0, t_max, 1000)
|
||||
x = v0 * np.cos(alpha_rad) * t
|
||||
y = v0 * np.sin(alpha_rad) * t - 0.5 * g * t**2
|
||||
return x, y, t
|
||||
|
||||
|
||||
# Время полета для оптимальной траектории
|
||||
t_optimal = 2 * v0_min * np.sin(alpha_opt_rad) / g
|
||||
|
||||
# Построение графика
|
||||
fig, (ax1, ax2) = plt.subplots(2, 1, figsize=(14, 12))
|
||||
|
||||
# График 1: Сравнение траекторий
|
||||
# Оптимальная траектория
|
||||
x_opt, y_opt, t_opt = trajectory(v0_min, alpha_opt_rad, t_optimal)
|
||||
|
||||
# Проверим, что траектория проходит через точку (L, H)
|
||||
t_at_wall = L / (v0_min * np.cos(alpha_opt_rad))
|
||||
y_at_wall = v0_min * np.sin(alpha_opt_rad) * t_at_wall - 0.5 * g * t_at_wall**2
|
||||
print(f"Проверка: высота в точке x=L составляет {y_at_wall:.3f} м (должно быть {H} м)")
|
||||
|
||||
ax1.plot(
|
||||
x_opt,
|
||||
y_opt,
|
||||
"r-",
|
||||
linewidth=3,
|
||||
label=f"Оптимальная (α={alpha_opt_deg:.1f}°, v₀={v0_min:.1f}м/с)",
|
||||
)
|
||||
|
||||
# Сравнение с другими углами (при больших скоростях)
|
||||
angles_comp = [30, 45, 60, 75]
|
||||
colors = ["blue", "green", "orange", "purple"]
|
||||
|
||||
for angle, color in zip(angles_comp, colors):
|
||||
alpha_rad = np.radians(angle)
|
||||
# Скорость, необходимая для данного угла
|
||||
# Из условия: L*tan(α) - gL²/(2v²cos²α) = H
|
||||
cos_alpha = np.cos(alpha_rad)
|
||||
tan_alpha = np.tan(alpha_rad)
|
||||
|
||||
if L * tan_alpha > H: # Траектория может пройти над стеной
|
||||
v_needed = np.sqrt(g * L**2 / (2 * cos_alpha**2 * (L * tan_alpha - H)))
|
||||
t_flight = 2 * v_needed * np.sin(alpha_rad) / g
|
||||
x_traj, y_traj, _ = trajectory(v_needed, alpha_rad, t_flight)
|
||||
|
||||
ax1.plot(
|
||||
x_traj,
|
||||
y_traj,
|
||||
"--",
|
||||
color=color,
|
||||
linewidth=2,
|
||||
label=f"{angle}° (v₀={v_needed:.1f}м/с)",
|
||||
)
|
||||
print(f"Для угла {angle}° требуется скорость {v_needed:.2f} м/с")
|
||||
|
||||
# Стена
|
||||
ax1.plot([L, L], [0, H], "k-", linewidth=5, label="Стена")
|
||||
ax1.plot([L - 0.5, L + 0.5], [H, H], "k-", linewidth=5)
|
||||
|
||||
# Точка броска
|
||||
ax1.plot(0, 0, "ko", markersize=8, label="Точка броска")
|
||||
|
||||
# Критическая точка (L, H)
|
||||
ax1.plot(L, H, "ro", markersize=8, label="Критическая точка")
|
||||
|
||||
ax1.set_xlim(-2, 50)
|
||||
ax1.set_ylim(-2, 25)
|
||||
ax1.set_xlabel("Расстояние (м)")
|
||||
ax1.set_ylabel("Высота (м)")
|
||||
ax1.set_title("Сравнение траекторий для перелета через стену")
|
||||
ax1.grid(True, alpha=0.3)
|
||||
ax1.legend()
|
||||
|
||||
# График 2: Зависимость скорости от угла
|
||||
angles = np.linspace(15, 89, 100)
|
||||
speeds = []
|
||||
|
||||
for angle in angles:
|
||||
alpha_rad = np.radians(angle)
|
||||
cos_alpha = np.cos(alpha_rad)
|
||||
tan_alpha = np.tan(alpha_rad)
|
||||
|
||||
if L * tan_alpha > H:
|
||||
v_req = np.sqrt(g * L**2 / (2 * cos_alpha**2 * (L * tan_alpha - H)))
|
||||
speeds.append(v_req)
|
||||
else:
|
||||
speeds.append(np.inf) # Невозможно перелететь
|
||||
|
||||
# Убираем бесконечные значения для графика
|
||||
angles_valid = []
|
||||
speeds_valid = []
|
||||
for angle, speed in zip(angles, speeds):
|
||||
if speed < 100: # Ограничиваем для наглядности
|
||||
angles_valid.append(angle)
|
||||
speeds_valid.append(speed)
|
||||
|
||||
ax2.plot(angles_valid, speeds_valid, "b-", linewidth=2, label="Требуемая скорость")
|
||||
ax2.axhline(
|
||||
y=v0_min,
|
||||
color="r",
|
||||
linestyle="--",
|
||||
linewidth=2,
|
||||
label=f"Минимум = {v0_min:.2f} м/с",
|
||||
)
|
||||
ax2.axvline(
|
||||
x=alpha_opt_deg,
|
||||
color="r",
|
||||
linestyle="--",
|
||||
linewidth=2,
|
||||
label=f"Оптимальный угол = {alpha_opt_deg:.1f}°",
|
||||
)
|
||||
ax2.plot(alpha_opt_deg, v0_min, "ro", markersize=10, label="Оптимум")
|
||||
|
||||
# Минимальный угол для возможности перелета
|
||||
alpha_min = np.degrees(np.arctan(H / L))
|
||||
ax2.axvline(
|
||||
x=alpha_min,
|
||||
color="gray",
|
||||
linestyle=":",
|
||||
alpha=0.7,
|
||||
label=f"Мин. угол = {alpha_min:.1f}°",
|
||||
)
|
||||
|
||||
ax2.set_xlim(15, 90)
|
||||
ax2.set_ylim(15, 50)
|
||||
ax2.set_xlabel("Угол броска (градусы)")
|
||||
ax2.set_ylabel("Требуемая скорость (м/с)")
|
||||
ax2.set_title("Зависимость требуемой скорости от угла броска")
|
||||
ax2.grid(True, alpha=0.3)
|
||||
ax2.legend()
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
|
||||
# Дополнительные расчеты
|
||||
print(f"\nДополнительная информация:")
|
||||
print(f"Минимальный возможный угол: {alpha_min:.1f}° (arctan(H/L))")
|
||||
print(f"Превышение оптимального угла над 45°: {alpha_opt_deg - 45:.1f}°")
|
||||
|
||||
# Сравнение с броском под 45° на максимальную дальность
|
||||
v_45_max_range = np.sqrt(g * L) # Скорость для максимальной дальности L
|
||||
print(f"Скорость для броска на дальность L под 45°: {v_45_max_range:.2f} м/с")
|
||||
print(f"Увеличение скорости из-за стены: {(v0_min/v_45_max_range - 1)*100:.1f}%")
|
||||
|
||||
# Энергия
|
||||
E_min = 0.5 * v0_min**2
|
||||
E_45 = 0.5 * v_45_max_range**2
|
||||
print(f"Минимальная кинетическая энергия (на единицу массы): {E_min:.1f} Дж/кг")
|
||||
print(f"Увеличение энергии из-за стены: {(E_min/E_45 - 1)*100:.1f}%")
|
||||
|
||||
# Максимальная высота оптимальной траектории
|
||||
h_max = v0_min**2 * np.sin(alpha_opt_rad) ** 2 / (2 * g)
|
||||
print(f"Максимальная высота оптимальной траектории: {h_max:.2f} м")
|
||||
print(f"Превышение над стеной: {h_max - H:.2f} м")
|
||||
BIN
physics/homework/graphs/a.png
Normal file
|
After Width: | Height: | Size: 156 KiB |
BIN
physics/homework/homework.pdf
Normal file
1352
physics/homework/homework.typ
Normal file
BIN
physics/labs/PhysLab_ITMO.docx
Normal file
BIN
physics/labs/lab4/in/data.pdf
Normal file
41
physics/labs/lab4/in/data.typ
Normal file
@@ -0,0 +1,41 @@
|
||||
#set text(font: "Maple Mono", size: 1em)
|
||||
|
||||
Масса каретки ($47.0 plus.minus 0.5$) г \
|
||||
Масса шайбы ($220.0 plus.minus 0.5$) г \
|
||||
Мааса грузов на крестовине ($408.0 plus.minus 0.5$) г \
|
||||
Расстояние первой риски от оси ($57.0 plus.minus 0.5$) мм \
|
||||
Расстояние между рисками ($25.0 plus.minus 0.2$) мм \
|
||||
Диаметр ступицы ($46.0 plus.minus 0.5$) мм \
|
||||
Диаметр груза на крестовине ($40.0 plus.minus 0.5$) мм \
|
||||
Высота груза на крестовине ($40.0 plus.minus 0.5$) мм
|
||||
|
||||
|
||||
масса: $m_1$, риска: 1. $t_1 = 4.45, t_2 = 4.55, t_3 = 4.51$ \
|
||||
масса: $m_2$, риска: 1. $t_1 = 3.23, t_2 = 3.18, t_3 = 3.32$ \
|
||||
масса: $m_3$, риска: 1. $t_1 = 2.78, t_2 = 2.83, t_3 = 2.64$ \
|
||||
масса: $m_4$, риска: 1. $t_1 = 2.33, t_2 = 2.42, t_3 = 2.36$ \
|
||||
|
||||
масса: $m_1$, риска: 2. $t_1 = 5.32, t_2 = 5.39, t_3 = 5.24$ \
|
||||
масса: $m_2$, риска: 2. $t_1 = 3.92, t_2 = 4.03, t_3 = 3.99$ \
|
||||
масса: $m_3$, риска: 2. $t_1 = 3.42, t_2 = 3.35, t_3 = 3.38$ \
|
||||
масса: $m_4$, риска: 2. $t_1 = 2.70, t_2 = 2.94, t_3 = 3.10$ \
|
||||
|
||||
масса: $m_1$, риска: 3. $t_1 = 6.41, t_2 = 6.15, t_3 = 6.37$ \
|
||||
масса: $m_2$, риска: 3. $t_1 = 4.61, t_2 = 4.66, t_3 = 4.56$ \
|
||||
масса: $m_3$, риска: 3. $t_1 = 3.68, t_2 = 3.99, t_3 = 3.72$ \
|
||||
масса: $m_4$, риска: 3. $t_1 = 3.41, t_2 = 3.54, t_3 = 3.49$ \
|
||||
|
||||
масса: $m_1$, риска: 4. $t_1 = 7.41, t_2 = 6.76, t_3 = 7.22$ \
|
||||
масса: $m_2$, риска: 4. $t_1 = 5.28, t_2 = 5.23, t_3 = 5.13$ \
|
||||
масса: $m_3$, риска: 4. $t_1 = 4.25, t_2 = 4.36, t_3 = 4.41$ \
|
||||
масса: $m_4$, риска: 4. $t_1 = 3.70, t_2 = 3.83, t_3 = 3.75$ \
|
||||
|
||||
масса: $m_1$, риска: 5. $t_1 = 8.49, t_2 = 8.41, t_3 = 7.81$ \
|
||||
масса: $m_2$, риска: 5. $t_1 = 6.08, t_2 = 5.79, t_3 = 6.04$ \
|
||||
масса: $m_3$, риска: 5. $t_1 = 4.85, t_2 = 4.98, t_3 = 4.72$ \
|
||||
масса: $m_4$, риска: 5. $t_1 = 4.46, t_2 = 4.41, t_3 = 4.49$ \
|
||||
|
||||
масса: $m_1$, риска: 6. $t_1 = 9.11, t_2 = 8.65, t_3 = 9.07$ \
|
||||
масса: $m_2$, риска: 6. $t_1 = 6.76, t_2 = 6.78, t_3 = 6.82$ \
|
||||
масса: $m_3$, риска: 6. $t_1 = 5.73, t_2 = 5.49, t_3 = 5.58$ \
|
||||
масса: $m_4$, риска: 6. $t_1 = 5.30, t_2 = 4.92, t_3 = 5.09$
|
||||
BIN
physics/labs/lab4/in/task.pdf
Normal file
3
physics/labs/lab4/out/.obsidian/app.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"promptDelete": false
|
||||
}
|
||||
1
physics/labs/lab4/out/.obsidian/appearance.json
vendored
Normal file
@@ -0,0 +1 @@
|
||||
{}
|
||||
31
physics/labs/lab4/out/.obsidian/core-plugins.json
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"file-explorer": true,
|
||||
"global-search": true,
|
||||
"switcher": true,
|
||||
"graph": true,
|
||||
"backlink": true,
|
||||
"canvas": true,
|
||||
"outgoing-link": true,
|
||||
"tag-pane": true,
|
||||
"properties": false,
|
||||
"page-preview": true,
|
||||
"daily-notes": true,
|
||||
"templates": true,
|
||||
"note-composer": true,
|
||||
"command-palette": true,
|
||||
"slash-command": false,
|
||||
"editor-status": true,
|
||||
"bookmarks": true,
|
||||
"markdown-importer": false,
|
||||
"zk-prefixer": false,
|
||||
"random-note": false,
|
||||
"outline": true,
|
||||
"word-count": true,
|
||||
"slides": false,
|
||||
"audio-recorder": false,
|
||||
"workspaces": false,
|
||||
"file-recovery": true,
|
||||
"publish": false,
|
||||
"sync": true,
|
||||
"webviewer": false
|
||||
}
|
||||
180
physics/labs/lab4/out/.obsidian/workspace.json
vendored
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"main": {
|
||||
"id": "c07396b2132bdaa4",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "63bc0f50bf5d3797",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "507c8b5f2203bec2",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "markdown",
|
||||
"state": {
|
||||
"file": "report.md",
|
||||
"mode": "source",
|
||||
"source": false
|
||||
},
|
||||
"icon": "lucide-file",
|
||||
"title": "report"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "vertical"
|
||||
},
|
||||
"left": {
|
||||
"id": "c1afa0e677c64103",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "d44455a901e56a11",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "eab0c2abe0de079c",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "file-explorer",
|
||||
"state": {
|
||||
"sortOrder": "alphabetical",
|
||||
"autoReveal": false
|
||||
},
|
||||
"icon": "lucide-folder-closed",
|
||||
"title": "Files"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c9a118c41674640e",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "search",
|
||||
"state": {
|
||||
"query": "",
|
||||
"matchingCase": false,
|
||||
"explainSearch": false,
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical"
|
||||
},
|
||||
"icon": "lucide-search",
|
||||
"title": "Search"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "44252965681d6e70",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "bookmarks",
|
||||
"state": {},
|
||||
"icon": "lucide-bookmark",
|
||||
"title": "Bookmarks"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300
|
||||
},
|
||||
"right": {
|
||||
"id": "da8fd7b6ee034ed7",
|
||||
"type": "split",
|
||||
"children": [
|
||||
{
|
||||
"id": "309d0c951b8b56f0",
|
||||
"type": "tabs",
|
||||
"children": [
|
||||
{
|
||||
"id": "099a56844ffa735b",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "backlink",
|
||||
"state": {
|
||||
"file": "report.md",
|
||||
"collapseAll": false,
|
||||
"extraContext": false,
|
||||
"sortOrder": "alphabetical",
|
||||
"showSearch": false,
|
||||
"searchQuery": "",
|
||||
"backlinkCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-coming-in",
|
||||
"title": "Backlinks for report"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "6fde011e4c5ea954",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outgoing-link",
|
||||
"state": {
|
||||
"file": "report.md",
|
||||
"linksCollapsed": false,
|
||||
"unlinkedCollapsed": true
|
||||
},
|
||||
"icon": "links-going-out",
|
||||
"title": "Outgoing links from report"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c636ec3f883fd53d",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "tag",
|
||||
"state": {
|
||||
"sortOrder": "frequency",
|
||||
"useHierarchy": true,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-tags",
|
||||
"title": "Tags"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "c732ee57c15518c2",
|
||||
"type": "leaf",
|
||||
"state": {
|
||||
"type": "outline",
|
||||
"state": {
|
||||
"file": "report.md",
|
||||
"followCursor": false,
|
||||
"showSearch": false,
|
||||
"searchQuery": ""
|
||||
},
|
||||
"icon": "lucide-list",
|
||||
"title": "Outline of report"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
],
|
||||
"direction": "horizontal",
|
||||
"width": 300,
|
||||
"collapsed": true
|
||||
},
|
||||
"left-ribbon": {
|
||||
"hiddenItems": {
|
||||
"switcher:Open quick switcher": false,
|
||||
"graph:Open graph view": false,
|
||||
"canvas:Create new canvas": false,
|
||||
"daily-notes:Open today's daily note": false,
|
||||
"templates:Insert template": false,
|
||||
"command-palette:Open command palette": false
|
||||
}
|
||||
},
|
||||
"active": "507c8b5f2203bec2",
|
||||
"lastOpenFiles": [
|
||||
"lu932469tplnq.tmp",
|
||||
"lu932469tplno.tmp",
|
||||
"report.md~",
|
||||
"lu932469tpg3y.tmp",
|
||||
"report.md",
|
||||
"report"
|
||||
]
|
||||
}
|
||||
BIN
physics/labs/lab4/out/formatted_report.docx
Normal file
BIN
physics/labs/lab4/out/formatted_report.pdf
Normal file
BIN
physics/labs/lab4/out/report.docx
Normal file
BIN
physics/labs/lab7/in/data.pdf
Normal file
BIN
physics/labs/lab7/in/data.png
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
30
physics/labs/lab7/in/data.typ
Normal file
@@ -0,0 +1,30 @@
|
||||
#set text(font: "Maple Mono", size: 1em)
|
||||
#set align(center)
|
||||
|
||||
$m_(#text("диск")) = (208 plus.minus 1) #text("г")$ \
|
||||
$m_(#text("стержень")) = (75 plus.minus 1) #text("г")$ \
|
||||
$d_(#text("стержень")) = 8 #text("мм")$ \
|
||||
$d_(#text("диск")) = 92 #text("мм")$ \
|
||||
$h = 28 #text("см")$ \
|
||||
|
||||
|
||||
===== Первый замер
|
||||
|
||||
$h_1 = 25.5 #text("см"), t = 1.674 #text("с")$
|
||||
|
||||
===== Второй замер
|
||||
|
||||
$h_1 = 26 #text("см"), t = 1.700 #text("с")$
|
||||
|
||||
===== Третий замер
|
||||
|
||||
$h_1 = 25.7 #text("см"), t = 1.711 #text("с")$
|
||||
|
||||
===== Четвертый замер
|
||||
|
||||
$h_1 = 25.8 #text("см"), t = 1.761 #text("с")$
|
||||
|
||||
===== Пятый замер
|
||||
|
||||
$h_1 = 25.8 #text("см"), t = 1.730 #text("с")$
|
||||
|
||||
BIN
physics/labs/lab7/in/task.pdf
Normal file
BIN
physics/labs/lab7/out/report.docx
Normal file
BIN
physics/labs/lab7/out/report_formatted.docx
Normal file
BIN
physics/labs/lab7/out/report_formatted.pdf
Normal file
BIN
physics/labs/ОБРАБОТКА_ЭКСПЕРИМЕНТАЛЬНЫХ_ДАННЫХ.pdf
Normal file
BIN
physics/practice/assets/1.png
Normal file
|
After Width: | Height: | Size: 516 KiB |
BIN
physics/practice/assets/10.png
Normal file
|
After Width: | Height: | Size: 411 KiB |
BIN
physics/practice/assets/11.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
physics/practice/assets/12.png
Normal file
|
After Width: | Height: | Size: 487 KiB |
BIN
physics/practice/assets/13.png
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
physics/practice/assets/14.png
Normal file
|
After Width: | Height: | Size: 323 KiB |
BIN
physics/practice/assets/15.png
Normal file
|
After Width: | Height: | Size: 313 KiB |
BIN
physics/practice/assets/16.png
Normal file
|
After Width: | Height: | Size: 288 KiB |
BIN
physics/practice/assets/17.png
Normal file
|
After Width: | Height: | Size: 382 KiB |
BIN
physics/practice/assets/18.png
Normal file
|
After Width: | Height: | Size: 356 KiB |
BIN
physics/practice/assets/19.png
Normal file
|
After Width: | Height: | Size: 437 KiB |
BIN
physics/practice/assets/2.png
Normal file
|
After Width: | Height: | Size: 453 KiB |
BIN
physics/practice/assets/20.png
Normal file
|
After Width: | Height: | Size: 328 KiB |
BIN
physics/practice/assets/21.png
Normal file
|
After Width: | Height: | Size: 346 KiB |
BIN
physics/practice/assets/22.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
physics/practice/assets/23.png
Normal file
|
After Width: | Height: | Size: 446 KiB |
BIN
physics/practice/assets/24.png
Normal file
|
After Width: | Height: | Size: 370 KiB |
BIN
physics/practice/assets/25.png
Normal file
|
After Width: | Height: | Size: 326 KiB |
BIN
physics/practice/assets/26.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
BIN
physics/practice/assets/27.png
Normal file
|
After Width: | Height: | Size: 482 KiB |
BIN
physics/practice/assets/28.png
Normal file
|
After Width: | Height: | Size: 352 KiB |
BIN
physics/practice/assets/29.png
Normal file
|
After Width: | Height: | Size: 363 KiB |
BIN
physics/practice/assets/3.png
Normal file
|
After Width: | Height: | Size: 338 KiB |
BIN
physics/practice/assets/30.png
Normal file
|
After Width: | Height: | Size: 391 KiB |
BIN
physics/practice/assets/31.png
Normal file
|
After Width: | Height: | Size: 324 KiB |
BIN
physics/practice/assets/32.png
Normal file
|
After Width: | Height: | Size: 334 KiB |
BIN
physics/practice/assets/33.png
Normal file
|
After Width: | Height: | Size: 393 KiB |
BIN
physics/practice/assets/34.png
Normal file
|
After Width: | Height: | Size: 372 KiB |
BIN
physics/practice/assets/35.png
Normal file
|
After Width: | Height: | Size: 438 KiB |
BIN
physics/practice/assets/36.png
Normal file
|
After Width: | Height: | Size: 305 KiB |
BIN
physics/practice/assets/37.png
Normal file
|
After Width: | Height: | Size: 392 KiB |
BIN
physics/practice/assets/38.png
Normal file
|
After Width: | Height: | Size: 414 KiB |
BIN
physics/practice/assets/39.png
Normal file
|
After Width: | Height: | Size: 382 KiB |
BIN
physics/practice/assets/4.png
Normal file
|
After Width: | Height: | Size: 273 KiB |
BIN
physics/practice/assets/40.png
Normal file
|
After Width: | Height: | Size: 424 KiB |
BIN
physics/practice/assets/41.png
Normal file
|
After Width: | Height: | Size: 331 KiB |
BIN
physics/practice/assets/42.png
Normal file
|
After Width: | Height: | Size: 430 KiB |
BIN
physics/practice/assets/43.png
Normal file
|
After Width: | Height: | Size: 389 KiB |
BIN
physics/practice/assets/44.png
Normal file
|
After Width: | Height: | Size: 476 KiB |
BIN
physics/practice/assets/45.png
Normal file
|
After Width: | Height: | Size: 444 KiB |
BIN
physics/practice/assets/46.png
Normal file
|
After Width: | Height: | Size: 337 KiB |
BIN
physics/practice/assets/47.png
Normal file
|
After Width: | Height: | Size: 313 KiB |
BIN
physics/practice/assets/48.png
Normal file
|
After Width: | Height: | Size: 464 KiB |
BIN
physics/practice/assets/49.png
Normal file
|
After Width: | Height: | Size: 456 KiB |
BIN
physics/practice/assets/5.png
Normal file
|
After Width: | Height: | Size: 271 KiB |
BIN
physics/practice/assets/50.png
Normal file
|
After Width: | Height: | Size: 330 KiB |
BIN
physics/practice/assets/51.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
physics/practice/assets/52.png
Normal file
|
After Width: | Height: | Size: 337 KiB |
BIN
physics/practice/assets/53.png
Normal file
|
After Width: | Height: | Size: 432 KiB |
BIN
physics/practice/assets/54.png
Normal file
|
After Width: | Height: | Size: 339 KiB |
BIN
physics/practice/assets/55.png
Normal file
|
After Width: | Height: | Size: 298 KiB |
BIN
physics/practice/assets/56.png
Normal file
|
After Width: | Height: | Size: 396 KiB |
BIN
physics/practice/assets/57.png
Normal file
|
After Width: | Height: | Size: 402 KiB |
BIN
physics/practice/assets/58.png
Normal file
|
After Width: | Height: | Size: 317 KiB |
BIN
physics/practice/assets/59.png
Normal file
|
After Width: | Height: | Size: 293 KiB |
BIN
physics/practice/assets/6.png
Normal file
|
After Width: | Height: | Size: 312 KiB |
BIN
physics/practice/assets/60.png
Normal file
|
After Width: | Height: | Size: 407 KiB |
BIN
physics/practice/assets/61.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
physics/practice/assets/62.png
Normal file
|
After Width: | Height: | Size: 404 KiB |
BIN
physics/practice/assets/63.png
Normal file
|
After Width: | Height: | Size: 354 KiB |
BIN
physics/practice/assets/64.png
Normal file
|
After Width: | Height: | Size: 347 KiB |
BIN
physics/practice/assets/65.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
physics/practice/assets/66.png
Normal file
|
After Width: | Height: | Size: 388 KiB |
BIN
physics/practice/assets/67.png
Normal file
|
After Width: | Height: | Size: 458 KiB |
BIN
physics/practice/assets/68.png
Normal file
|
After Width: | Height: | Size: 431 KiB |
BIN
physics/practice/assets/69.png
Normal file
|
After Width: | Height: | Size: 473 KiB |
BIN
physics/practice/assets/7.png
Normal file
|
After Width: | Height: | Size: 340 KiB |
BIN
physics/practice/assets/70.png
Normal file
|
After Width: | Height: | Size: 465 KiB |
BIN
physics/practice/assets/71.png
Normal file
|
After Width: | Height: | Size: 243 KiB |
BIN
physics/practice/assets/72.png
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
physics/practice/assets/73.png
Normal file
|
After Width: | Height: | Size: 275 KiB |