Модель — это объект произвольной природы, отражающий существенные свойства и связи моделируемого объекта для решения задачи.
Модель служит инструментом познания и упрощённым отражением важных особенностей реального объекта, процесса или явления.
Ключевые аспекты:
Для эффективного практического использования модель должна обладать рядом свойств:
| Вид модели | Характеристика | Примеры |
|---|---|---|
| Материальные модели | Имеют реальное воплощение | Глобус, макет здания, игрушечный автомобиль |
| Информационные модели | Не имеют физического воплощения | Схемы, чертежи, таблицы, графики, формулы |
Математическое моделирование — это процесс построения и исследования математических моделей для описания, анализа и прогнозирования поведения реальных объектов, процессов или явлений.
Значение: Позволяет проводить виртуальные вычислительные эксперименты, оптимизировать параметры узлов и агрегатов без необходимости изготавливать дорогостоящие натурные прототипы.
Принцип: Строгая причинно-следственная связь. Одинаковый вход всегда дает в точности один и тот же результат (случайности нет).
Технический пример: Траектория полета тела в поле тяжести, кинематика шестеренчатого редуктора.
Границы применимости: Работает идеально, пока внешние случайные помехи пренебрежимо малы по сравнению с основными силами.
⚠️ Где модель ломается: При броске легкого мяча на ветру или на околозвуковых скоростях, где хаотичные завихрения воздуха полностью меняют траекторию.
Принцип: Описывают не точный исход, а вероятность событий, средние значения и разброс параметров.
Технический пример: Ресурс подшипника до поломки, шумы радиодатчиков, устойчивость дрона к ветру.
Границы применимости: Требуют большого числа наблюдений (закон больших чисел) и неизменных внешних условий во время работы.
⚠️ Где модель ломается: Не применима для единичных нестандартных катастроф (брак конкретной детали при литье) или при непредсказуемой смене условий.
Принцип: «Черный ящик»: формула подобрана исключительно под экспериментальные точки, без объяснения внутренней физики.
Технический пример: Износ протектора шин от пробега, сопротивление терморезистора от температуры.
Границы применимости: Справедлива строго в диапазоне проведенных измерений (интерполяция).
⚠️ Где модель ломается: При экстраполяции (прогнозе за пределы замеров). Если испытывали шины от 0 до +40°C, формула покажет ерунду при −30°C, когда резина замерзнет и потеряет сцепление.
Принцип: Замкнутая формула, выведенная из фундаментальных законов природы. Дает абсолютно точное значение мгновенно.
Технический пример: Закон Ома для электрической цепи ($I = U / R$), период маятника ($T = 2\pi\sqrt{m/k}$).
Границы применимости: Требует жестких идеализаций: плоские/симметричные тела, линейные свойства материалов, малые углы отклонения.
⚠️ Где модель ломается: Закон Ома перестает работать при сильном нагреве проводника (сопротивление меняется), а формула маятника врет при отклонении на углы больше 15–20°.
Принцип: Компьютер разбивает сложную деталь на миллионы простых элементов (тетраэдров/кубиков) и решает уравнения для каждого узла.
Технический пример: Расчет прочности рамы велосипеда на изгиб (МКЭ), симуляция обтекания спойлера гоночного авто (CFD).
Границы применимости: Подходит для объектов любой сложной геометрии, но точность напрямую ограничена мощностью компьютера и шагом сетки.
⚠️ Где модель ломается: Если сетка слишком крупная, результат будет грубой ошибкой. Кроме того, при пластическом разрушении (металл рвется) базовые линейные уравнения перестают работать.
Engee — это современная платформа для научных и инженерных вычислений, основанная на языке Julia.
Основные возможности:
speed = 25 и вычислите расстояние за 3 секунды.sqrt(100) + 25^2.Рабочая область Engee разделена на несколько функциональных зон. Ниже приведена схема, точно повторяющая реальный интерфейс платформы:
engee> — место ввода команд в командной строкеКоманды вводятся после приглашения engee> и выполняются нажатием Enter.
4 * 7.speed = 25.distance = speed * 3.sin(pi/4).x = 10, затем измените её: x = x + 5.v = 12 (скорость, м/с).t = 4 (время, с).s = v * t.a = v / t.p = 1000 (мощность, Вт).A = p * t.В инженерной практике консольный ввод непригоден для отчетов: отсутствует история расчетов и наглядное оформление. Интерактивный блокнот Engee объединяет исполняемый код на языке Julia и разметку технической документации в едином файле .jl.
Вычисленные переменные сохраняются в глобальной памяти ядра (Workspace). Это позволяет разносить подготовку исходных данных, алгоритм и вывод результатов по независимым блокам.
lab5_telemetry.jl.r = 0.25 (м) и массу груза m_load = 450 (кг).M_stat = m_load * 9.81 * r.engineer_calc.jl.mass = 1500.0 (кг), acceleration = 2.5 (м/с²), distance = 10.0 (м).force = mass * acceleration.work = force * distance.«Тяговая работа на дистанции 10 м: [значение] Дж».engineer_calc.jl с сохраненным состоянием вывода ячеек.Физические величины в расчетных задачах распределены во времени или пространстве. Вектор представляет собой ряд последовательных измерений датчика, а матрица — пространственную сетку узлов детали.
[1, 2, 3] создает одномерный вектор Vector{Int64}, а [1 2 3] создает двумерную матрицу размером 1×3 (Matrix{Int64}). В строгих алгоритмах Занятий 11–12 смешение этих типов приведет к отказу вычислений.
v = [1.2, 1.5, 1.8, 2.1, 2.4].ones) для задания базовых весовых коэффициентов.rand).lesson6.jl.temperature из 7 контрольных точек прогрева двигателя: от 65.0°C до 95.0°C.pressure из 7 синхронных замеров давления масла в гидросистеме.100:10:200 сформировать вектор оборотов ротора насоса.zeros(4, 4) для резервирования буфера ошибок контроллера.rand.println.lesson6.jl.Для выполнения всех заданий урока мы будем использовать матрицу data.
[строка, столбец]Извлекает конкретный элемент из матрицы.
data[6, 3] → 9.0698
endУказывает на последний элемент.
data[end, 3] → 5.3002
data[end-1, 3] → 4.0753
: (весь диапазон)Берёт все строки или все столбцы.
data[:, 2] → весь 2-й столбец
[a:b] (срез)Берёт элементы с a по b.
v[2:5] → элементы со 2-го по 5-й
data[:, end-1:end] → последние 2 столбца
[[a, b, c]]Извлекает конкретные элементы по списку.
density[[1, 3, 6]] → 1-й, 3-й и 6-й
[индекс] = значениеЗаменяет значение элемента.
v[3] = 10.5
data[1, end] = 0.5
Создайте переменную x, содержащую значение на пересечении 6-й строки и 3-го столбца матрицы data.
При помощи слова end получите значение на пересечении последней строки и 3-го столбца. Присвойте результат переменной y.
Задайте переменную z со значением из предпоследней строки (end-1) и 3-го столбца.
В Julia можно индексировать матрицу одним числом (счёт идёт по столбцам). Получите восьмой элемент матрицы data напрямую и через переменную y = 8.
Создайте вектор-столбец density, содержащий 2-й столбец матрицы data.
Создайте переменную volumes, содержащую последние два столбца матрицы data (используйте end-1:end).
Создайте переменную p, содержащую 6-й элемент вектора density.
Создайте вектор p, содержащий со 2-го по 5-й элементы вектора density.
Извлеките 1-й, 3-й и 6-й элементы вектора density с помощью списка.
Выполните все задания ниже в интерактивном скрипте Engee, используя матрицу data из подготовительного кода.
v2, содержащий последний столбец матрицы data.v2 на экран.v2 (имеющий значение 3.517) на 0.5.data на 0.5. (Используйте data[1, end] = 0.5).data на экран с помощью display(data).data на второй столбец той же матрицы data: data[:, 1] = data[:, 2].data..ngscript).В физике и инженерии массивы (векторы) часто используются для хранения показаний датчиков. Создадим три вектора: плотность (density), скорость потока 1 (v1) и скорость потока 2 (v2).
По материалам курса эти данные обычно загружаются из файла datafile.csv. Если загрузка недоступна (например, нет сети), используйте резервный вариант, вставив матрицу напрямую в код.
* Если файл загружается успешно, используйте стандартный код из PDF:
using CSV, DataFrames; data = CSV.read("datafile.csv", DataFrame, header=0) и затем density = data[:,2]; ...
.+ .-Добавляет число к каждому элементу массива.
v1 .+ 1 → каждый элемент + 1
+Складывает массивы поэлементно (длины должны совпадать).
v1 + v2 → [v1[1]+v2[1], v1[2]+v2[2], ...]
/Делит каждый элемент массива на число.
vs / 2 → каждый элемент делится на 2
maximum()Находит максимальное значение в массиве.
maximum(v1)
round.()Округляет каждый элемент до целого.
round.(v1)
Физический смысл: Добавление поправки (например, калибровочного смещения +1 м/с) к каждому показанию датчика скорости.
Физический смысл: Нахождение суммарной скорости при сложении двух потоков.
Физический смысл: Нахождение средней скорости va из двух замеров (деление суммарной скорости на 2).
Физический смысл: Определение пикового (аварийного) значения скорости vm для проверки допустимого порога.
Физический смысл: Приведение измерений к целочисленным значениям (например, для отображения на дискретном циферблате).
Выполните задания в интерактивном скрипте Engee.
voltage = [220, 230, 215, 240, 225, 235].voltage_adj.current1 = [10, 12, 8, 15, 11, 13].current2 = [2, 3, 1, 4, 2, 3].voltage, найдите максимальное напряжение..ngscript).В математике умножение матриц (оператор *) подчиняется строгим правилам: число столбцов первой матрицы должно быть равно числу строк второй.
Каждый элемент новой матрицы C получается как сумма произведений элементов строки первой матрицы на элементы столбца второй.
Пример из математики: Умножаем вектор-строку на вектор-столбец.
А если перепутать порядок? Умножение [10; 20] на [3 4] даст матрицу 2×2:
В коде Engee (Julia) это работает так:
В физике и инженерии очень часто нужно перемножить два массива параллельно (элемент на элемент), а не по правилам линейной алгебры. Для этого в Julia используется оператор с точкой .*.
Это математически корректно, если массивы обозначают показания датчиков в одни и те же моменты времени.
*Требует согласования размерностей (столбцы A = строки B).
Результат — скаляр (для векторов) или матрица.
.*Перемножает массивы одинакового размера «параллельно».
[a, b] .* [c, d] = [a*c, b*d]
Если умножить матрицу на вектор-столбец, правило растянется по столбцам.
[1 2; 3 4] .* [10; 20]
Создадим те же векторы, что и на прошлом уроке (резервный вариант, если нет сети).
Физический смысл: Вычисление массы каждой партии груза. Плотность (density) умножается на объём (v1), чтобы получить массу mass.
В математике мы бы умножали матрицы по правилам, но физически это просто параллельное перемножение:
Физический смысл: Умножение матрицы коэффициентов на вектор смещений по столбцам. Оператор .* «растягивает» вектор-столбец на все столбцы матрицы.
Математическое пояснение: Попытка умножить матрицу 4×2 на вектор 4×1 по правилам матричного умножения невозможна (число столбцов первой не равно числу строк второй). Но с точкой .* каждый элемент вектора умножается на соответствующий столбец.
Результат: x будет иметь размерность 4×2. Каждая строка матрицы A умножается на соответствующее значение из вектора B.
Выполните задания в интерактивном скрипте Engee.
U = [220, 230, 215, 240, 225, 235].I = [10, 12, 8, 15, 11, 13].P = U .* I.R = [1 2; 3 4; 5 6] (3×2).K = [0.9; 1.0; 1.1] (3×1).R_adj = R .* K..ngscript).Робот движется по прямой в положительном направлении. На каждом из трёх участков ускорение постоянно, но от участка к участку оно меняется. Сопротивлением движению пренебрегаем. Скорость на границах участков меняется непрерывно.
Положительное ускорение увеличивает скорость, отрицательное — уменьшает её, пока робот движется вперёд. В наших данных скорость не становится отрицательной, поэтому перемещение на каждом участке равно пройденному пути.
Скорость v — в м/с, ускорение a — в м/с², время t — в секундах, путь s — в метрах. Обозначение s здесь относится к пути отдельного участка.
Порядок работы: сначала рассчитываем начальные скорости участков по очереди, затем находим конечные скорости и пути операциями над массивами.
⌨ Набирайте команды самостоятельно. Перед запуском кода рассчитайте первый участок на бумаге.
a[2] = 0.1 Индексация начинается с 1.
a .* t Умножает соответствующие элементы.
t .^ 2 Точка применяет возведение в степень к каждому элементу.
v_start + a .* t Делить массив на число можно обычным знаком /.
maximum(v_end) Максимум среди конечных скоростей участков.
Начальная скорость робота — 0 м/с. На первом участке он разгоняется, на втором продолжает движение с постоянной скоростью, на третьем тормозит.
| Участок | Ускорение, м/с² | Время, с |
|---|---|---|
| 1. Разгон | 0,2 | 5 |
| 2. Равномерное движение | 0 | 4 |
| 3. Торможение | −0,1 | 6 |
Участок 1:
v₁ = 0 + 0,2 · 5 = 1 м/с
s₁ = 0 · 5 + 0,2 · 5² / 2 = 2,5 м
Участок 2: начальная скорость равна 1 м/с.
v₂ = 1 + 0 · 4 = 1 м/с
s₂ = 1 · 4 + 0 · 4² / 2 = 4 м
Участок 3: начальная скорость равна 1 м/с.
v₃ = 1 − 0,1 · 6 = 0,4 м/с
s₃ = 1 · 6 − 0,1 · 6² / 2 = 4,2 м
Робот тормозит, но к концу третьего участка ещё не остановился. На каждом участке скорость меняется линейно; все начальные и конечные скорости неотрицательны. Значит, разворота внутри участков нет.
Начальные скорости вычисляем последовательно. Затем используем массивы одинаковой длины. Запись t .^ 2 означает квадрат каждого элемента массива времени.
v0 = 0.0
a = [0.2, 0.0, -0.1]
t = [5, 4, 6]
v_start = [v0, 0.0, 0.0]
v_start[2] = v_start[1] + a[1] * t[1]
v_start[3] = v_start[2] + a[2] * t[2]
v_end = v_start + a .* t
s = v_start .* t + (a .* (t .^ 2)) / 2
s_total = s[1] + s[2] + s[3]
v_max = maximum([v0, maximum(v_end)])
println("Путь робота на каждом участке: ", s, " м") Вывод результатов: функция println выводит поясняющий текст, значение переменной и единицу измерения. Текст заключаем в двойные кавычки, аргументы разделяем запятыми. По этому примеру самостоятельно оформите остальные результаты.
Проверка: начальные скорости — 0; 1; 1 м/с. Конечные скорости — 1; 1; 0,4 м/с. Пути — 2,5; 4; 4,2 м. Общий путь — 10,7 м. Наибольшая скорость за весь маршрут — 1 м/с.
Максимум ищем среди исходной скорости и конечных скоростей всех участков: при постоянном ускорении максимум скорости участка достигается на одной из его границ.
Начальная скорость остаётся нулевой. Сохраните время участков. Измените ускорения второго и третьего участков: теперь они равны 0,1 м/с² и −0,2 м/с².
Контроль после решения: начальные скорости — 0; 1; 1,4 м/с; конечные — 1; 1,4; 0,2 м/с; пути — 2,5; 4,8; 4,8 м; общий путь — 12,1 м; максимальная скорость — 1,4 м/с. Путь увеличился на 1,4 м.
Для третьего участка первого маршрута найдите время до полной остановки из уравнения 0 = vнач + a · t. Почему нельзя продолжать считать полученное перемещение путём, если время торможения превысит это значение?
Скачать шаблон рабочей тетради
Скачайте шаблон и сохраните свою копию Word. На титульном листе укажите имя, класс и номер варианта. Используйте этот файл на всех занятиях 10–14.
Повторите задачу 1 с данными своего варианта. Начальная скорость во всех вариантах равна 0 м/с. На каждом участке ускорение постоянно. Числа перечислены в порядке участков 1, 2, 3. Вариант назначает преподаватель.
| Вариант | Ускорения, м/с² | Время, с |
|---|---|---|
| 1 | 0,2; 0,1; -0,1 | 5; 4; 6 |
| 2 | 0,3; 0; -0,1 | 4; 5; 6 |
| 3 | 0,2; 0,1; -0,2 | 6; 3; 5 |
| 4 | 0,4; 0; -0,2 | 3; 4; 5 |
| 5 | 0,3; 0,1; -0,2 | 5; 3; 6 |
println:Сдайте один файл Word (.docx). В нём должны быть заполнены «Работа на уроке» и «Домашнее задание» для занятия 10. Сохраните в этом же файле записи предыдущих занятий.
Формулы и ручной расчёт — 1; исходные массивы — 1; последовательный расчёт скоростей — 1; пути, общий путь и максимум — 1; проверка направления и вывод — 1.
На занятии 10 вы рассчитали скорости и пути на трёх участках. Теперь не переписываем этот код, а добавляем в конец секцию расчёта работы и мощности. Для общего разбора используйте исходный пример занятия 10: пути 2,5; 4; 4,2 м, время 5; 4; 6 с.
Модуль силы сопротивления постоянен и равен 2 Н. Рассчитываем только энергию, расходуемую на преодоление этого сопротивления. Условный доступный запас для покрытия этих затрат — 0,01 Вт·ч.
Формула средней скорости через полусумму начальной и конечной применима здесь потому, что на каждом участке ускорение постоянно. Мощность в этой формуле — средняя за участок мощность затрат на сопротивление.
Почему нет косинуса? Для силы, направленной вдоль перемещения, cos 0° = 1. Но сила сопротивления направлена против перемещения: её работа Aсопр = −Fсопрs. Мы считаем положительные затраты энергии Eсопр = −Aсопр = Fсопрs. Подробности и схема угла — в конце урока.
v_avg = (v_start + v_end) / 2s_check = v_avg .* tP_avg = E_res_J ./ tE_res_Wh = E_res_J / 3600Средние скорости участков: (0 + 1)/2 = 0,5 м/с; (1 + 1)/2 = 1 м/с; (1 + 0,4)/2 = 0,7 м/с. Проверка пути: 0,5 · 5 = 2,5 м; 1 · 4 = 4 м; 0,7 · 6 = 4,2 м.
| Участок | Путь, м | Энергия F · s, Дж | Средняя мощность E / t, Вт |
|---|---|---|---|
| 1 | 2,5 | 5 | 1 |
| 2 | 4 | 8 | 2 |
| 3 | 4,2 | 8,4 | 1,4 |
Условного запаса хватает для покрытия рассчитанных затрат на сопротивление. Самая большая средняя мощность участка — 2 Вт. Это не обязательно максимум мгновенной мощности.
Сначала выполните код занятия 10. В памяти должны быть согласованные между собой массивы v_start, v_end, t и s. Для численного ответа выше восстановите исходный маршрут, если меняли его на прошлом уроке.
# Секция 2. Энергия на преодоление сопротивления
F_res = 2.0;
E_available = 0.01;
v_avg = (v_start + v_end) / 2;
s_check = v_avg .* t;
s_error = s_check - s;
E_res_J = F_res * s;
P_avg = E_res_J ./ t;
E_res_Wh = E_res_J / 3600;
E_total_Wh = E_res_Wh[1] + E_res_Wh[2] + E_res_Wh[3];
E_left_Wh = E_available - E_total_Wh;
P_avg_max = maximum(P_avg);
println("Энергия на сопротивление по участкам: ", E_res_J, " Дж") Проверка: элементы s_error должны быть нулевыми или очень близкими к нулю из-за точности вычислений. Если расхождения заметны, проверьте, заново ли вычислены скорости и путь после изменения исходных данных.
Добавьте остальные строки вывода самостоятельно. В делении двух векторов нужна запись ./: время каждого участка используется со своим значением энергии.
На первом участке сопротивление равно 2 Н, на втором — 4 Н, на третьем — 3 Н. Движение остаётся прежним: считаем, что привод обеспечивает заданный маршрут, а здесь оцениваем только затраты на сопротивление.
Контроль: энергии — 5; 16; 12,6 Дж; средние мощности — 1; 4; 2,1 Вт. Общая энергия — 33,6 Дж ≈ 0,00933 Вт·ч; остаток ≈ 0,00067 Вт·ч. Запаса хватает.
Скачать шаблон рабочей тетради
Откройте свою копию рабочей тетради и сохраните прежний номер варианта.
Сохраните номер варианта и все исходные данные своего ДЗ №10. Добавьте новую секцию по образцу задачи 1. Для всех вариантов условный доступный запас — 0,01 Вт·ч.
| Вариант | Сила сопротивления на всех участках, Н |
|---|---|
| 1 | 2 |
| 2 | 3 |
| 3 | 2,5 |
| 4 | 4 |
| 5 | 3,5 |
Сдайте один файл Word (.docx). В нём должны быть заполнены «Работа на уроке» и «Домашнее задание» для занятия 11. Сохраните в этом же файле записи предыдущих занятий.
Формулы и ручной расчёт — 1; использование прежних данных и проверка пути — 1; энергии и мощности — 1; общий расход, остаток и максимум — 1; оформление результатов и физически правильный вывод — 1.
Для постоянной силы и прямолинейного перемещения работа равна A = F · s · cos α. Здесь F — модуль силы, s — модуль перемещения, α — угол между ними. Работа — скалярная величина, которая может быть положительной, отрицательной или нулевой. В нашем движении без разворотов модуль перемещения совпадает с путём.
Работу определяет составляющая силы вдоль перемещения: F cos α. Если сила сонаправлена перемещению, α = 0°, cos α = 1 и A = Fs. Если сила перпендикулярна ему, α = 90° и работа равна нулю. При противоположных направлениях α = 180°, cos α = −1 и A = −Fs.
Сила сопротивления направлена против движения. Её работа отрицательна: A_сопр = −F_сопр · s. Величина E_сопр = F_сопр · s положительна и показывает механическую энергию, рассеиваемую при преодолении сопротивления. Именно эту величину считает код. Косинус не отброшен: его знак уже учтён при переходе от отрицательной работы сопротивления к положительной величине затрат.
При равномерном движении по горизонтали, если действуют только тяга и сопротивление, силы уравновешиваются и работа тяги равна этим затратам. При разгоне это равенство в общем случае неверно: часть работы тяги изменяет кинетическую энергию.
При постоянной силе сопротивления её модуль не меняется вдоль пути. Площадь прямоугольника на графике «модуль силы — путь» равна F · S. В исходном примере это 2 · 10,7 = 21,4 Дж. Проверка единиц: Н · м = Дж. Если сила различается по участкам, складываем площади соответствующих прямоугольников: E_общ = F₁s₁ + F₂s₂ + F₃s₃.
При постоянном ускорении скорость линейно зависит от времени. Поэтому средняя скорость участка равна полусумме начальной и конечной. Умножение на время даёт путь, если направление движения не меняется. Подставим v_кон = v_нач + at: s = ((v_нач + v_кон)/2)t = v_нач t + at²/2. Это та же формула, которую вы использовали в занятии 10.
Если скорость меняет знак внутри участка, формула даёт перемещение, а для пути участок нужно разделить в момент остановки. В данных урока и пяти вариантах ДЗ №10 разворота нет.
Средняя мощность затрат на сопротивление P_ср = E_сопр / t = F_сопр · v_ср. Единица мощности: Дж/с = Вт. В каждый отдельный момент мощность этих затрат равна F_сопр · v. На участке разгона она растёт, при торможении уменьшается. maximum(P_avg) выбирает максимум среди трёх средних значений, а не наибольшую мгновенную мощность за весь маршрут.
Для поступательного движения точки изменение кинетической энергии ΔK = m(v_кон² − v_нач²)/2. Если горизонтально действуют только тяга и сопротивление, работа тяги A_тяги = ΔK + F_сопр · s. В нашем расчёте массы нет, поэтому член ΔK не вычисляем. При торможении работа привода может быть отрицательной; как при этом энергия рассеивается или возвращается в аккумулятор, зависит от устройства привода.
Потери двигателя и преобразователя, питание электроники и возможная рекуперация требуют дополнительных данных и отдельной модели. Поэтому положительный остаток здесь означает лишь достаточность условного запаса для рассчитанной составляющей затрат.
1 Вт·ч = 3600 Дж, поскольку 1 Вт = 1 Дж/с, а 1 ч = 3600 с. Поэтому 21,4 Дж / 3600 ≈ 0,00594 Вт·ч. Условный запас 0,01 Вт·ч равен 36 Дж. Его специально выбрали небольшим для учебного маршрута; это не заявленная ёмкость реального аккумулятора.
Проверьте себя: почему работа сопротивления отрицательна, а затраты положительны? Почему при разгоне нельзя приравнять силу тяги к сопротивлению? Что именно показывает максимум средних мощностей?
Откройте скрипт с исходным маршрутом занятия 10 и расчётом сопротивления из занятия 11. Для общего примера возьмите времена 5, 4 и 6 с, ускорения 0,2; 0; −0,1 м/с² и постоянную силу сопротивления 2 Н. Для домашней работы используйте данные своего варианта.
Кинетическая энергия связана с движением робота. Для модели поступательного движения принимаем массу робота равной 2 кг. Энергию вращения колёс в этой модели опускаем.
При удвоении скорости кинетическая энергия возрастает в четыре раза. Например, при 0,5 м/с получаем 0,25 Дж, а при 1 м/с — 1 Дж. Сравниваем энергию одного и того же робота в двух состояниях.
Вызов функции содержит её имя и аргументы в скобках. sum(t) принимает вектор и возвращает число. findmax(E_k) возвращает пару из максимального значения и его индекса. В присваивании слева можно указать два имени.
sum(t)E_peak, i_peak = findmax(E_k)round(v_mean; digits=3)В начале скорость 0 м/с. Конечные скорости участков равны 1; 1; 0,4 м/с. На этих четырёх границах кинетическая энергия равна 0; 1; 1; 0,16 Дж. Максимум достигается впервые на второй точке, через 5 с. Он сохраняется на всём равномерном участке от 5 до 9 с.
Весь маршрут длится 15 с. Общий путь 10,7 м, средняя скорость маршрута 10,7 / 15 ≈ 0,713 м/с. Затраты на сопротивление из занятия 11 составляют 21,4 Дж. Кинетическая энергия характеризует состояние в конкретный момент, поэтому складывать её значения на границах для оценки расхода энергии нельзя.
# Секция 3. Сводка и кинетическая энергия
m_robot = 2.0;
v_points = [v_start[1]; v_end];
E_k = m_robot * (v_points .^ 2) / 2;
T_route = sum(t);
S_route = sum(s);
v_mean = S_route / T_route;
E_res_total_J = sum(E_res_J);
E_peak, i_peak = findmax(E_k);
println("Максимальная кинетическая энергия: ",
round(E_peak; digits=3), " Дж, точка № ", i_peak) Допишите вывод времени, пути, средней скорости, затрат на сопротивление и массива кинетических энергий. Округляйте числа только для вывода. Первая точка массива соответствует началу маршрута, поэтому точка №2 — конец первого участка. При равных максимумах findmax возвращает индекс первого из них.
Мысленно добавьте груз 1 кг. Считайте, что привод сохраняет прежние скорости, а заданная сила сопротивления остаётся 2 Н. Предскажите, во сколько раз вырастет максимум кинетической энергии. Измените только массу в новой секции и проверьте предположение.
Контроль. Энергии 0; 1,5; 1,5; 0,24 Дж. Максимум вырос в 1,5 раза. Время, путь и энергия на сопротивление имеют прежние значения по условиям модели.
Скачать шаблон рабочей тетради
Откройте свою копию рабочей тетради и сохраните прежний номер варианта.
Сохраните время, ускорения и сопротивление из ДЗ №10–11. Добавьте массу по таблице.
| Вариант | Масса, кг |
|---|---|
| 1 | 2 |
| 2 | 2,5 |
| 3 | 3 |
| 4 | 3,5 |
| 5 | 4 |
findmax определите максимум и индекс первой точки с таким значением.println общее время, путь, среднюю скорость, затраты на сопротивление, энергии на границах и найденный максимум с индексом. Подпишите единицы.Оценивание. Ручной расчёт, массив энергий, сводка, вызов findmax и интерпретация результата — по 1 баллу.
Сдайте один файл Word (.docx). В нём должны быть заполнены «Работа на уроке» и «Домашнее задание» для занятия 12. Сохраните в этом же файле записи предыдущих занятий.
Почему при удвоении массы энергия растёт вдвое, а при удвоении скорости — вчетверо? Почему для средней скорости маршрута нужно разделить общий путь на общее время?
Продолжаем скрипт занятия 12. Общий пример использует исходный маршрут из занятий 10–12. Для графика мощности берём постоянную силу сопротивления 2 Н из первого примера занятия 11.
Ось времени накапливает длительности участков. Границы находятся в моменты 0; 5; 5 + 4 = 9; 5 + 4 + 6 = 15 с. По вертикали откладываем скорости 0; 1; 1; 0,4 м/с из массива v_points.
Внутри каждого участка ускорение постоянно, поэтому скорость изменяется по прямой. Наклон показывает ускорение. Площадь под графиком скорости даёт перемещение, а для нашего движения вперёд оно равно пути.
За небольшой промежуток времени Δt робот проходит примерно v · Δt. На этом пути затраты составляют Fсопр · v · Δt. Если разделить их на Δt, получим мощность в данный момент.
На разгоне от 0 до 1 м/с при силе 2 Н мощность растёт от 0 до 2 Вт. Средняя мощность за этот участок равна 1 Вт, как и в занятии 11. Мощность описывает скорость расходования энергии. Площадь под графиком мощности даёт энергию в джоулях.
t_points = [0; cumsum(t)]plot(t_points, v_points)display(speed_plot)Путь первого участка равен площади треугольника 5 · 1 / 2 = 2,5 м. На втором участке площадь прямоугольника равна 4 · 1 = 4 м. На третьем площадь трапеции равна 6 · (1 + 0,4)/2 = 4,2 м.
cumsum(t) даёт накопленные суммы времени. Добавляем ноль, чтобы время начала маршрута соответствовало первой скорости. Для совместного примера длина обоих массивов равна четырём.
# Секция 4. Графики движения
using Plots
t_points = [0; cumsum(t)];
speed_plot = plot(t_points, v_points;
xlabel="Время, с", ylabel="Скорость, м/с",
title="Скорость робота", marker=:circle, legend=false);
display(speed_plot) Найдите на графике разгон, равномерный участок и торможение. Для третьего участка назовите начало и конец по времени и вычислите наклон прямой.
Контроль. Наклон третьего отрезка (0,4 − 1)/(15 − 9) = −0,1 м/с².
Рассчитайте мощность в четырёх точках из массива скоростей и постоянной силы сопротивления. Сделайте отдельный график по образцу предыдущего. Сопоставьте мощность в начале и конце первого участка с рассчитанным в занятии 11 средним значением.
P_points = F_res * v_points;Контроль. Точки мощности 0; 2; 2; 0,8 Вт. На первом участке площадь под графиком равна 5 · 2 / 2 = 5 Дж. Это энергия на преодоление сопротивления, полученная в занятии 11.
Скачать шаблон рабочей тетради
Откройте свою копию рабочей тетради и сохраните прежний номер варианта.
Продолжите скрипт с прежним номером варианта. Для графика мощности используйте свою постоянную силу из ДЗ №11. Ниже можно сверить исходные данные.
| Вариант | Длительности t₁ · t₂ · t₃, с | Сопротивление, Н |
|---|---|---|
| 1 | 5 · 4 · 6 | 2 |
| 2 | 4 · 5 · 6 | 3 |
| 3 | 6 · 3 · 5 | 2,5 |
| 4 | 3 · 4 · 5 | 4 |
| 5 | 5 · 3 · 6 | 3,5 |
Оценивание. Ручной расчёт, каждый из двух графиков, проверка площадей и объяснение — по 1 баллу.
Сдайте один файл Word (.docx). В нём должны быть заполнены «Работа на уроке» и «Домашнее задание» для занятия 13. Сохраните в этом же файле записи предыдущих занятий.
Подъём линии показывает рост скорости. Более крутой подъём соответствует большему положительному ускорению. Горизонтальный отрезок означает постоянную скорость. При постоянной силе сопротивления график мощности имеет ту же форму, а вертикальные значения умножаются на модуль силы.
Формула средней мощности из занятия 11 относится к целому участку. Значение на графике относится к выбранному моменту. При линейном изменении мощности её среднее значение равно полусумме значений на границах участка.
Добавляем к скрипту отдельный эксперимент. Ставим отметку начала торможения в конце второго участка. В сценарии А берём скорость на этой границе из прежнего маршрута. В сценарии Б робот пересекает ту же отметку со скоростью на 0,4 м/с больше. С этого момента торможение в обоих сценариях имеет постоянное ускорение −0,5 м/с². Отсчёт времени для графика начинается на отметке.
Это отдельная проверка остановки. Ускорение и длительность третьего участка занятий 10–13 остаются в прежнем расчёте. Новый тормозной путь отсчитывается от отметки до остановки, как и расстояние до препятствия. Реакцию привода, уклон и изменение ускорения в эксперименте опускаем.
Здесь b — положительный модуль тормозного ускорения. Первую формулу получаем из уравнения 0 = vвход − bt. Вторая формула даёт площадь треугольника под графиком скорости. После остановки скорость остаётся нулевой.
t_stop = v_entry / b_brakes_stop = (v_entry .* t_stop) / 2plot!(brake_plot, x, y; label="Сценарий Б")Для общего примера скорость в конце второго участка равна 1 м/с. В сценарии Б получаем 1,4 м/с. Препятствие расположено в 1,5 м от отметки.
| Сценарий | Скорость на отметке, м/с | Время до остановки, с | Тормозной путь, м | Запас до препятствия, м |
|---|---|---|---|---|
| А | 1 | 1 / 0,5 = 2 | 1 · 2 / 2 = 1 | 1,5 − 1 = 0,5 |
| Б | 1,4 | 1,4 / 0,5 = 2,8 | 1,4 · 2,8 / 2 = 1,96 | 1,5 − 1,96 = −0,46 |
В сценарии А робот остановится за 0,5 м до препятствия. В сценарии Б теоретический путь до остановки длиннее доступного на 0,46 м. График сценария Б описывает свободное торможение до нуля. При наличии препятствия контакт произошёл бы раньше.
Элементы расчётных массивов идут в порядке А, Б. Каждый отрезок графика получает своё время остановки. На занятии 13 строили по одной линии на график. Здесь короткий новый приём plot! добавляет вторую линию в уже созданный график.
# Секция 5. Эксперимент с торможением
b_brake = 0.5;
distance_limit = 1.5;
v_entry = [v_end[2], v_end[2] + 0.4];
t_stop = v_entry / b_brake;
s_stop = (v_entry .* t_stop) / 2;
clearance = distance_limit .- s_stop;
s_longest, i_longest = findmax(s_stop);
println("Тормозные пути А и Б: ", round.(s_stop; digits=2), " м")
brake_plot = plot([0, t_stop[1]], [v_entry[1], 0];
xlabel="Время после отметки, с", ylabel="Скорость, м/с",
title="Свободное торможение", label="Сценарий А", marker=:circle);
plot!(brake_plot, [0, t_stop[2]], [v_entry[2], 0];
label="Сценарий Б", marker=:diamond);
display(brake_plot)У линий одинаковый наклон −0,5 м/с². Сценарий А заканчивается в точке остановки при t = 2 с, а сценарий Б — при t = 2,8 с. Сравните площади двух треугольников и их тормозные пути.
Оставьте сценарий А как есть. В сценарии Б увеличьте скорость относительно А на 0,6 м/с вместо 0,4 м/с. Перед изменением кода рассчитайте путь вручную. Затем постройте новый график и определите, на сколько раньше нужно поставить отметку начала торможения, чтобы в идеальной модели остановиться ровно у препятствия.
Контроль. Скорость 1,6 м/с, время 3,2 с, путь 2,56 м. Отметку нужно перенести на 2,56 − 1,5 = 1,06 м раньше. Для остановки с запасом перенос должен быть больше.
Скачать шаблон рабочей тетради
Откройте свою копию рабочей тетради и сохраните прежний номер варианта.
Используйте скорость в конце второго участка своего варианта. Для А возьмите её напрямую, для Б прибавьте значение из таблицы. Модуль тормозного ускорения во всех вариантах 0,5 м/с².
| Вариант | Скорость А для сверки, м/с | Прибавка скорости для Б, м/с | До препятствия от отметки, м |
|---|---|---|---|
| 1 | 1,4 | 0,3 | 2,5 |
| 2 | 1,2 | 0,4 | 2 |
| 3 | 1,5 | 0,5 | 3 |
| 4 | 1,2 | 0,6 | 2,2 |
| 5 | 1,8 | 0,4 | 4 |
findmax определите больший тормозной путь и номер сценария.println скорости на отметке, времена и пути остановки, запасы или дефициты и результат findmax.Оценивание. Ручной расчёт, вычисления двух сценариев, график, оформление чисел, физический вывод — по 1 баллу.
Сдайте один файл Word (.docx). В нём должны быть заполнены «Работа на уроке» и «Домашнее задание» для занятия 14. Сохраните в этом же файле записи предыдущих занятий.
При одном и том же b тормозное время пропорционально скорости входа. Тормозной путь растёт пропорционально квадрату этой скорости. Поэтому тормозной путь зависит и от начальной скорости, и от прибавки к ней.
Граница допустимого пути соответствует нулевому запасу. Положительный запас означает остановку перед препятствием. Отрицательный запас показывает, сколько расстояния не хватает в модели свободного торможения.
Функции в Julia определяются с помощью ключевого слова function.
Для простых функций можно использовать краткий синтаксис.
stat_analysis(data), которая принимает массив чисел.Цель: Применить все изученные навыки для решения комплексной задачи.
Контрольная работа охватывает все темы, изученные в 1-м полугодии:
ФИО: _______________________________ Группа: _____
Файл: test_template.jl — откройте в Engee и заполните пропуски
Дан массив результатов измерения температуры (°C) каждый час в течение 12 часов:
Дан массив расстояний (в метрах), пройденных роботом за каждую секунду:
Дан массив показаний датчика движения (1 - движение, 0 - покой):
Смоделируйте заполнение бассейна водой. Каждую минуту уровень воды поднимается на 2 см. Начальный уровень: 0 см. Время симуляции: 30 минут.
Дан массив ежедневных продаж (в тысячах рублей) за 14 дней:
📌 Указание: Скопируйте код из скачанного файла в Engee, заполните все пропуски (________) и выполните ячейки.
После выполнения запустите ячейку с проверкой для автоматического подсчёта баллов.