```html
Предмет: Физика и программирование (инженерные технологии в физике).
Раздел предмета: Численные методы в физике и вычислительная физика.
Описание задания: Задание заключается в том, чтобы разработать программу средней сложности, которая будет производить вычисление физических величин (область на выбор). Программа может быть написана на одном из C-подобных языков или Python, а также требуется предоставить краткое теоретическое обоснование задачи на 1-2 страницы.
Шаги выполнения:
- Выбор задачи: Нужно выбрать область физики и физическую задачу для расчётов. Например:
- Механика: расчет траектории движения тела, подвергающегося действию силы.
- Термодинамика: расчет процессов теплопередачи.
- Электродинамика: решение задач на вычисление силы Лоренца или электрического поля.
- Волновые процессы: расчёт волнового движения.
Рассмотрим, например, задачу из механики: вычисление траектории движения тела по параболе в поле тяжести с учётом воздуха (сопротивления среды).
- Теоретическое обоснование: На 1-2 листах сформулируйте основные физические уравнения:
- Уравнение движения тела: \( \mathbf{F} = m \mathbf{a} \).
- Направленная вниз сила тяжести: \( F_{\text{гравитации}} = mg \).
- Сила сопротивления среды: \( F_{\text{сопротивления}} = -kv^2 \) (вторая степень скорости).
Таким образом, основные дифференциальные уравнения движения тела записываются как:
- \[ m \frac{d^2x}{dt^2} = -kv_x^2, \]
- \[ m \frac{d^2y}{dt^2} = mg - kv_y^2. \]
Эти уравнения можно решить численно.
- Программирование: Пример программы на Python для расчёта траектории тела:
import numpy as np
import matplotlib.pyplot as plt
# Константы
g = 9.81 # ускорение свободного падения (м/с^2)
k = 0.1 # коэффициент сопротивления среды
m = 1.0 # масса тела (кг)
# Начальные условия
v0 = 20.0 # начальная скорость (м/с)
angle = 45 # угол выстрела (в градусах)
x0, y0 = 0, 0 # начальные координаты (м)
# Разбиение на компоненты скорости
v_x0 = v0 * np.cos(np.radians(angle))
v_y0 = v0 * np.sin(np.radians(angle))
# Шаг времени и общее время
dt = 0.01
t_max = 5.0
t_array = np.arange(0, t_max, dt)
# Массивы для хранения результатов
x_array, y_array = [x0], [y0]
vx, vy = v_x0, v_y0
# Численное решение уравнений движения методом Эйлера
for t in t_array:
# Вычисляем силы и ускорение
ax = -k * vx * abs(vx) / m
ay = -g - k * vy * abs(vy) / m
# Обновляем скорость и координаты
vx += ax * dt
vy += ay * dt
x0 += vx * dt
y0 += vy * dt
x_array.append(x0)
y_array.append(y0)
# Прекращаем, если тело упало на землю
if y0 <= 0:
break
plt.plot(x_array, y_array)
plt.show()
```