88 lines
9.9 KiB
HTML
88 lines
9.9 KiB
HTML
<!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> |