math-modeling/wallpapers.html

52 lines
7.3 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="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>