52 lines
7.3 KiB
HTML
52 lines
7.3 KiB
HTML
<!DOCTYPE html><html lang="en"><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><p>Известно, что форма комнаты прямоугольная, размеры комнаты задаются высотой <span class="math">(h)</span>, длиной <span class="math">(a)</span> и шириной <span class="math">(b)</span>. 15% площади стен комнаты занимают окна и двери, они не входят в площадь оклеивания. 10% площади рулона уходит на обрезки. Нужно купить один рулон про запас.</p><h4>ЦЕЛЬ МОДЕЛИРОВАНИЯ</h4><p>Помочь покупателям быстро определять необходимое количество рулонов обоев.</p><h3>II этап. Разработка модели</h3><h4>ИНФОРМАЦИОННАЯ МОДЕЛЬ</h4><table class="element-animation"><tr><td class="title" rowspan="2">Объект</td><td class="title" colspan="2">Параметры</td></tr><tr><td><i>название</i></td><td><i>значения</i></td></tr><tr><td>Обои</td><td>Наименования образцов<br>
|
||
Длина рулона <span class="math">(l)</span><br>
|
||
Ширина рулона <span class="math">(d)</span><br>
|
||
Обрезки <span class="math">(Обр)</span><br>
|
||
Площадь рулона <span class="math">(S<sub>р</sub>)</span></td><td>Исходные данные<br>
|
||
Исходные данные<br>
|
||
Исходные данные<br>
|
||
Рекомендуется 10%<br>
|
||
Расчетные данные</td></tr><tr><td>Комната</td><td>Высота <span class="math">(h)</span><br>
|
||
Длина <span class="math">(a)</span><br>
|
||
Ширина <span class="math">(b)</span><br>
|
||
Неоклеиваемая поверхность <span class="math">(НП)</span><br>
|
||
Площадь стен <span class="math">(S<sub>ком</sub>)</span></td><td>Исходные данные<br>
|
||
Исходные данные<br>
|
||
Исходные данные<br>
|
||
Рекомендуется 15%<br>
|
||
Расчетные данные</td></tr></table><p>Дополним информационную модель в табличной форме математической моделью.</p><p>При расчете фактической площади рулона, которая пойдет на оклейку помещения, надо отбросить обрезки. Формула имеет вид</p><p class="center"><span class="math">S<sub>р</sub> = (1 - Обр) × l × d.</span></p><p>В прямоугольной комнате две стены площадью <span class="math">ah</span>, и две стены площадью <span class="math">bh</span>. При расчете фактической площади стен учитывается неоклеиваемая площадь окон и дверей </p><p class="center"><span class="math">S<sub>ком</sub> = 2 × (a + b) × h * (1 - НП)</span></p><p>Количество рулонов, необходимых для оклейки комнаты, вычисляется по формуле</p><p class="center"><span class="math">N = S<sub>ком</sub> / S<sub>р</sub> + 1</span></p><p>Необходимо также учесть, что количество рулонов должно быть целым числом, но не меньшим, чем значение <span class="math">N</span>.</p><h4>КОМПЬЮТЕРНАЯ МОДЕЛЬ</h4><p>Для моделирования будем использовать язык моделирования Python.</p><p>Для начала введём переменные. </p><pre class="element-animation"><code>h = float(input("h: "))
|
||
a = float(input("a: "))
|
||
b = float(input("b: "))
|
||
nonGluedArea = 0.15 # Неоклеиваемая поверхность 15%
|
||
cuttings = 0.1 # Обрезки 10%
|
||
|
||
l = float(input("l: "))
|
||
d = float(input("d: "))</code></pre><p>Следующим шагом будет запись формул</p><pre class="element-animation"><code>Sroom = 2 * (a + b) * h * (1 - nonGluedArea) # Площадь комнаты
|
||
Sroll = (1 - cuttings) * l * d # Площадь обрезков</code></pre><p>Частное в формуле количества рулонов нужно будет округлить вверх. Для этого мы будем использовать функцию из модуля <i>math</i>. Добавим в начало файла строчку</p><code class="element-animation">from math import ceil</code><p>К формулам допишем N</p><code class="element-animation">N = ceil(Sroom / Sroll) + 1</code><p>Выведем результат</p><pre class="element-animation"><code>print(f'Площадь рулона: {"%.3f" % Sroll}, Количество рулонов: {N}')</code></pre><details><summary>Вывод программы</summary><pre>h: 2.6
|
||
a: 5
|
||
b: 3
|
||
l: 10.5
|
||
d: 0.5
|
||
Площадь рулона: 4.725, Количество рулонов: 9</pre></details><p>Можно рассчитывать одновременно большее количество образцов рулона, заддадим из как массив массивов.</p><pre class="element-animation"><code># Заменим
|
||
l = float(input("l: "))
|
||
d = float(input("d: "))
|
||
# на
|
||
rolls = [[10.5, 0.5], [10.5, 0.6]]
|
||
|
||
# Будем обрабатывать данные через цикл for
|
||
for i in rolls: # В переменную i записывается
|
||
один из массивов рулонов
|
||
Sroom = 2 * (a + b) * h * (1 - nonGluedArea)
|
||
Sroll = (1 - cuttings) * i[0] * i[1] # Обращаемся к длине и ширине
|
||
|
||
N = ceil(Sroom / Sroll) + 1
|
||
print(f'l: {i[0]}, d: {i[1]}, N: {N}')</code></pre><details><summary>Вывод программы</summary><pre>h: 2.6
|
||
a: 5
|
||
b: 3
|
||
l: 10.5, d: 0.5, N: 9
|
||
l: 10.5, d: 0.6, N: 8</pre></details><p>С помощью этого кода можно будет пройти дальнейшие тесты.</p><div class="btnWrapper"><a class="btn" href="wallpapersTest.html">Тест </a></div></main></body><script src="js/animation.js"></script></html> |