math-modeling/box.html

88 lines
9.9 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="ru"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="apple-touch-icon" sizes="180x180" href="apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="favicon-16x16.png">
<link rel="manifest" href="site.webmanifest">
<link rel="mask-icon" href="safari-pinned-tab.svg" color="#5bbad5">
<meta name="msapplication-TileColor" content="#da532c"><link rel="stylesheet" href="css/style.css"><title>Коробка</title></head><body> <header><a href="index.html"><h1>Математическое моделирование</h1></a></header><main class="container lesson"><h2>Коробка</h2><h3>I этап. Постановка задачи</h3><h4>Описание задачи</h4><p>Имеется квадратный лист картона. Из листа по углам вырезают четыре квадрата и склеивают коробку по сторонам вырезов. Какова должна быть сторона вырезаемого квадрата, чтобы коробка имела наибольшую вместимость? Какого размера надо взять лист, чтобы получить из него коробку с заданным максимальным объемом?</p><h4>ЦЕЛЬ МОДЕЛИРОВАНИЯ</h4><p>Определить максимальный объём коробки.</p><h3>II этап. Разработка модели</h3><h4>ИНФОРМАЦИОННАЯ МОДЕЛЬ</h4><table class="element-animation"><tr> <td rowspan="2"><b>Объект</b></td><td colspan="2"><b>Параметры</b></td></tr><tr> <td><b>название</b></td><td><b>значение</b></td></tr><tr> <td>Картонный лист</td><td>Длина стороны <span class="math">a</span></td><td>Исходные данные</td></tr><tr> <td>Вырез</td><td>Шаг изменения <span class="math">∆b</span><br>Размер <span class="math">b</span></td><td>Исходные данные<br>Расчетные данные</td></tr><tr> <td>Коробка </td><td>Длина стороны дна <span class="math">c</span><br>
Площадь дна <span class="math">S</span><br>
Объём <span class="math">V</span></td><td>Расчетные данные<br>Расчетные данные<br>Результаты</td></tr></table><p>Для вывода формул математической модели составим геометрическую модель в виде чертежа с указанием исследуемых характеристик объекта.</p><p>Расчетные параметры объекта определяются по формулам:</p><p> <span class="math">c = a - 2b</span> — длина стороны дна;<br>
<span class="math">S = c<sup>2</sup></span> — площадь дна;<br>
<span class="math">V = Sb</span> — объём.</p><p>Здесь, <span class="math">a</span> — длина стороны картонного листа, <span class="math">b</span> — размер выреза. Первоначальный размер выреза <span class="math">b<sub>0</sub> = 0</span>. Последующие размеры выреза определяются по формуле <span class="math">b<sub>i+1</sub> = b<sub>i</sub> + ∆b</span></p><h4>КОМПЬЮТЕРНАЯ МОДЕЛЬ</h4><p>Для моделирования будем использовать язык моделирования Python.</p><p>Для начала введём переменные. Их названия будут совпадать с информационной моделью.</p><code>a = int(input()) # Получаем и преобразуем данные в числовые значения<br>deltaB = int(input())</code><p>Попробуем проследить, как будет изменятся объём с увеличением размера выреза</p><pre class="element-animation"><code>b = deltaB # При b = 0, объём в любом случае равен нулю,
#поэтому сразу переходим к следующему значению
V = 0 # Изначально объём коробки равен 0
for i in range(20): # Для начала попробуем 20 итераций цикла
c = a - 2 * b
S = c * c
print(f"Объём = {S * b}, при b = {b}") # Выводим значения в консоль
b += deltaB </code></pre><p>Начальные данные: a = 40, deltaB = 1</p><details> <summary>Вывод программы</summary><pre>Объём = 1444, при b = 1
Объём = 2592, при b = 2
Объём = 3468, при b = 3
Объём = 4096, при b = 4
Объём = 4500, при b = 5
Объём = 4704, при b = 6
Объём = 4732, при b = 7
Объём = 4608, при b = 8
Объём = 4356, при b = 9
Объём = 4000, при b = 10
Объём = 3564, при b = 11
Объём = 3072, при b = 12
Объём = 2548, при b = 13
Объём = 2016, при b = 14
Объём = 1500, при b = 15
Объём = 1024, при b = 16
Объём = 612, при b = 17
Объём = 288, при b = 18
Объём = 76, при b = 19
Объём = 0, при b = 20</pre></details><p>Можно заметить, что со объём сначала возрастает, а затем убывает. Значит можно отследить точку максимума.</p><pre class="element-animation"><code>b = deltaB
V = 0
while True:
c = a - 2 * b
S = c * c
if (S * b) < V:
b -= deltaB
c = a - 2 * b
S = c * c
print(f"Объём = {S * b}, при b = {b}")
break # Если получившийся объём меньше,
# чем прошлый, то завершаем цикл
V = S * b
b += deltaB</code></pre><p>В теории программа должна вывести "Объём = 4732, при b = 7"</p><pre class="element-animation"><code><i class=grey>console</i>
40
1
Объём = 4732, при b = 7</code></pre><p>Наша программа показала правильный вариант.<br>Предлагаю сделать её более наглядной, выводя в консоль размер выреза, длину стороны дна, площадь дна и объём.<br>Вернёмся к первому варианту кода.</p><pre class="element-animation"><code>b = deltaB
V = 0
c = a - 2 * b
while c >= 0: # ограничимся только положительным c
c = a - 2 * b
S = c * c
print(f'Размер выреза = {"%.2f" % b}, ', end='')
print(f'длина стороны = {"%.2f" % c}, ', end='')
print(f'площадь = {"%.2f" % S}, ', end='')
print(f'объём = {"%.2f" % (S * b)}')
b += deltaB
# Запись "%.2f" % b ограничивает количество знаков после запятой
# Иначе мы бы увидели число вида "1.6666666666666667",
# зачем захламлять консоль</code></pre><details> <summary>Вывод программы</summary><pre>40
1
Размер выреза = 1.00, длина стороны = 38.00, площадь = 1444.00, объём = 1444.00
Размер выреза = 2.00, длина стороны = 36.00, площадь = 1296.00, объём = 2592.00
Размер выреза = 3.00, длина стороны = 34.00, площадь = 1156.00, объём = 3468.00
Размер выреза = 4.00, длина стороны = 32.00, площадь = 1024.00, объём = 4096.00
Размер выреза = 5.00, длина стороны = 30.00, площадь = 900.00, объём = 4500.00
Размер выреза = 6.00, длина стороны = 28.00, площадь = 784.00, объём = 4704.00
Размер выреза = 7.00, длина стороны = 26.00, площадь = 676.00, объём = 4732.00
Размер выреза = 8.00, длина стороны = 24.00, площадь = 576.00, объём = 4608.00
Размер выреза = 9.00, длина стороны = 22.00, площадь = 484.00, объём = 4356.00
Размер выреза = 10.00, длина стороны = 20.00, площадь = 400.00, объём = 4000.00
Размер выреза = 11.00, длина стороны = 18.00, площадь = 324.00, объём = 3564.00
Размер выреза = 12.00, длина стороны = 16.00, площадь = 256.00, объём = 3072.00
Размер выреза = 13.00, длина стороны = 14.00, площадь = 196.00, объём = 2548.00
Размер выреза = 14.00, длина стороны = 12.00, площадь = 144.00, объём = 2016.00
Размер выреза = 15.00, длина стороны = 10.00, площадь = 100.00, объём = 1500.00
Размер выреза = 16.00, длина стороны = 8.00, площадь = 64.00, объём = 1024.00
Размер выреза = 17.00, длина стороны = 6.00, площадь = 36.00, объём = 612.00
Размер выреза = 18.00, длина стороны = 4.00, площадь = 16.00, объём = 288.00
Размер выреза = 19.00, длина стороны = 2.00, площадь = 4.00, объём = 76.00
Размер выреза = 20.00, длина стороны = 0.00, площадь = 0.00, объём = 0.00
Размер выреза = 21.00, длина стороны = -2.00, площадь = 4.00, объём = 84.00</pre></details><p>С помощью этого кода можно будет пройти дальнейшие тесты.</p><div class="btnWrapper"><a class="btn" href="boxTest.html">Тест </a></div></main></body><script src="js/animation.js"></script></html>