Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| ff16b1ba60 |
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
package-lock.json
|
||||
node_modules
|
||||
dist
|
||||
fonts
|
||||
88
box.html
@ -1,88 +0,0 @@
|
||||
<!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>
|
||||
@ -1,93 +0,0 @@
|
||||
Copyright 2011 The Lora Project Authors (https://github.com/cyrealtype/Lora-Cyrillic), with Reserved Font Name "Lora".
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
@ -1,71 +0,0 @@
|
||||
Lora Variable Font
|
||||
==================
|
||||
|
||||
This download contains Lora as both variable fonts and static fonts.
|
||||
|
||||
Lora is a variable font with this axis:
|
||||
wght
|
||||
|
||||
This means all the styles are contained in these files:
|
||||
Lora-VariableFont_wght.ttf
|
||||
Lora-Italic-VariableFont_wght.ttf
|
||||
|
||||
If your app fully supports variable fonts, you can now pick intermediate styles
|
||||
that aren’t available as static fonts. Not all apps support variable fonts, and
|
||||
in those cases you can use the static font files for Lora:
|
||||
static/Lora-Regular.ttf
|
||||
static/Lora-Medium.ttf
|
||||
static/Lora-SemiBold.ttf
|
||||
static/Lora-Bold.ttf
|
||||
static/Lora-Italic.ttf
|
||||
static/Lora-MediumItalic.ttf
|
||||
static/Lora-SemiBoldItalic.ttf
|
||||
static/Lora-BoldItalic.ttf
|
||||
|
||||
Get started
|
||||
-----------
|
||||
|
||||
1. Install the font files you want to use
|
||||
|
||||
2. Use your app's font picker to view the font family and all the
|
||||
available styles
|
||||
|
||||
Learn more about variable fonts
|
||||
-------------------------------
|
||||
|
||||
https://developers.google.com/web/fundamentals/design-and-ux/typography/variable-fonts
|
||||
https://variablefonts.typenetwork.com
|
||||
https://medium.com/variable-fonts
|
||||
|
||||
In desktop apps
|
||||
|
||||
https://theblog.adobe.com/can-variable-fonts-illustrator-cc
|
||||
https://helpx.adobe.com/nz/photoshop/using/fonts.html#variable_fonts
|
||||
|
||||
Online
|
||||
|
||||
https://developers.google.com/fonts/docs/getting_started
|
||||
https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Fonts/Variable_Fonts_Guide
|
||||
https://developer.microsoft.com/en-us/microsoft-edge/testdrive/demos/variable-fonts
|
||||
|
||||
Installing fonts
|
||||
|
||||
MacOS: https://support.apple.com/en-us/HT201749
|
||||
Linux: https://www.google.com/search?q=how+to+install+a+font+on+gnu%2Blinux
|
||||
Windows: https://support.microsoft.com/en-us/help/314960/how-to-install-or-remove-a-font-in-windows
|
||||
|
||||
Android Apps
|
||||
|
||||
https://developers.google.com/fonts/docs/android
|
||||
https://developer.android.com/guide/topics/ui/look-and-feel/downloadable-fonts
|
||||
|
||||
License
|
||||
-------
|
||||
Please read the full license text (OFL.txt) to understand the permissions,
|
||||
restrictions and requirements for usage, redistribution, and modification.
|
||||
|
||||
You can use them freely in your products & projects - print or digital,
|
||||
commercial or otherwise.
|
||||
|
||||
This isn't legal advice, please consider consulting a lawyer and see the full
|
||||
license for all details.
|
||||
@ -1,93 +0,0 @@
|
||||
Copyright 2011 The Montserrat Project Authors (https://github.com/JulietaUla/Montserrat)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
http://scripts.sil.org/OFL
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
96
gulpfile.js
Normal file
@ -0,0 +1,96 @@
|
||||
const gulp = require('gulp');
|
||||
const pug = require('gulp-pug');
|
||||
const sass = require('gulp-sass')(require('sass'));
|
||||
const sourcemaps = require('gulp-sourcemaps');
|
||||
const browserSync = require('browser-sync').create();
|
||||
const autoprefixer = require('gulp-autoprefixer');
|
||||
// const concat = require('gulp-concat');
|
||||
// const gulpCopy = require('gulp-copy');
|
||||
const babel = require('gulp-babel');
|
||||
const uglify = require('gulp-uglify');
|
||||
const imagemin = require('gulp-imagemin')
|
||||
const del = require('del');
|
||||
|
||||
const html = (e) => {
|
||||
return gulp.src('./src/*.pug')
|
||||
.pipe(pug({}))
|
||||
.pipe(gulp.dest('./dist'));
|
||||
e();
|
||||
}
|
||||
exports.html = html;
|
||||
|
||||
|
||||
const css = () => {
|
||||
return gulp.src('./src/scss/**/*.scss')
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(sass({outputStyle: 'compressed'}).on('error', sass.logError))
|
||||
.pipe(autoprefixer())
|
||||
.pipe(sourcemaps.write('.'))
|
||||
.pipe(gulp.dest('./dist/css'))
|
||||
.pipe(browserSync.stream());
|
||||
}
|
||||
exports.css = css;
|
||||
|
||||
|
||||
const browser_sync = () => {
|
||||
browserSync.init({
|
||||
server: {
|
||||
baseDir: "./dist/"
|
||||
}
|
||||
});
|
||||
gulp.watch("dist/*.html").on('change', browserSync.reload);
|
||||
gulp.watch("dist/**/*.js").on('change', browserSync.reload);
|
||||
}
|
||||
exports.browser_sync = browser_sync;
|
||||
|
||||
|
||||
const js = () => {
|
||||
return gulp.src('src/**/*.js')
|
||||
.pipe(sourcemaps.init())
|
||||
.pipe(babel({
|
||||
presets: ['@babel/env']
|
||||
}))
|
||||
.pipe(uglify())
|
||||
.pipe(sourcemaps.write('.', {sourceRoot: '.src/'}))
|
||||
.pipe(gulp.dest('dist/'));
|
||||
}
|
||||
exports.js = js;
|
||||
|
||||
|
||||
const image = () => {
|
||||
return gulp.src('src/images/**/*.{svg, png, jpg}')
|
||||
.pipe(imagemin())
|
||||
.pipe(gulp.dest('dist/images'))
|
||||
}
|
||||
exports.image = image;
|
||||
|
||||
|
||||
const clean = (e) => {
|
||||
del.sync('dist');
|
||||
e();
|
||||
}
|
||||
exports.clean = clean;
|
||||
|
||||
|
||||
const fonts = () => {
|
||||
return gulp.src('./src/fonts/**/*.*').pipe(gulp.dest('dist/fonts/'));
|
||||
}
|
||||
exports.fonts = fonts;
|
||||
|
||||
const favicons = () => {
|
||||
return gulp.src('src/favicon/*.*')
|
||||
.pipe(gulp.dest('dist/'));
|
||||
}
|
||||
exports.favicons = favicons;
|
||||
|
||||
const watchFiles = () => {
|
||||
gulp.watch('./src/**/*.pug', gulp.series(html));
|
||||
gulp.watch('./src/scss/**/*.scss', gulp.series(css));
|
||||
gulp.watch('./src/**/*.js', gulp.series(js));
|
||||
gulp.watch('./src/images/**/*.{svg, png, jpg}', gulp.series(image));
|
||||
}
|
||||
|
||||
exports.watch = watchFiles;
|
||||
|
||||
exports.build = gulp.series(clean, fonts, html, css, js, image, favicons);
|
||||
exports.server = gulp.parallel(browser_sync, watchFiles);
|
||||
@ -1,6 +0,0 @@
|
||||
<!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"><nav><span>Вид работы: <button class="group-btn active" id="lessonsBtn">Урок</button><button class="group-btn" id="worksBtn">Самостоятельная работа</button></span></nav><div class="items row row-cols-1 row-cols sm-1 row-cols md-2 row-cols-lg-3" id="lessonsList"><div class="wrapper"><div class="item"><h2 class="header">Коробка</h2><p class="description">Найдите, при каком размере выреза коробка будет иметь максимальный объём.</p><a class="btn" href="box.html">Урок</a><a class="btn" href="boxTest.html">Тест</a></div></div><div class="wrapper"><div class="item"><h2 class="header">Обои</h2><p class="description">Помогите покупателям быстро определить необходимое количество обоев.</p><a class="btn" href="wallpapers.html">Урок</a><a class="btn" href="wallpapersTest.html">Тест</a></div></div><div class="wrapper"><div class="item"><h2 class="header">Стихотворение</h2><p class="description">Предлагается исследовать ситуацию и предложить реальные способы ускорения процесса заучивания стихотворения.</p><a class="btn" href="poem.html">Урок</a><a class="btn" href="poemTest.html">Тест</a></div></div></div><div class="items row row-cols-1 row-cols sm-1 row-cols md-2 row-cols-lg-3 hidden" id="worksList"><div class="wrapper"><div class="item"><h2 class="header">Продукты для похода</h2><p class="description">Рассчитать необходимое количество продуктов на весь поход для 1 человека и для всей группы.</p><a class="btn work" href="w_products.html">Приступить</a></div></div></div></main><script src="js/index.js"></script></body></html>
|
||||
@ -1,2 +0,0 @@
|
||||
"use strict";function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,e=function(){};return{s:e,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:e}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,i=!1;return{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){i=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(i)throw o}}}}function _unsupportedIterableToArray(r,e){if(r){if("string"==typeof r)return _arrayLikeToArray(r,e);var t=Object.prototype.toString.call(r).slice(8,-1);return"Map"===(t="Object"===t&&r.constructor?r.constructor.name:t)||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,e):void 0}}function _arrayLikeToArray(r,e){(null==e||e>r.length)&&(e=r.length);for(var t=0,n=new Array(e);t<e;t++)n[t]=r[t];return n}function onEntry(r){r.forEach(function(r){r.isIntersecting&&r.target.classList.add("element-show")})}var _step,options={threshold:[.3]},observer=new IntersectionObserver(onEntry,options),elements=document.querySelectorAll(".element-animation"),_iterator=_createForOfIteratorHelper(elements);try{for(_iterator.s();!(_step=_iterator.n()).done;){var elm=_step.value;observer.observe(elm)}}catch(r){_iterator.e(r)}finally{_iterator.f()}
|
||||
//# sourceMappingURL=animation.js.map
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["js/animation.js"],"names":["onEntry","entry","forEach","change","isIntersecting","target","classList","add","options","threshold","IntersectionObserver","elements","_iterator","s","_step","n","done","elm","value","observer","observe"],"mappings":"mpCAAA,SAASA,QAAQC,GACbA,EAAMC,QAAQ,SAAAC,GACNA,EAAOC,gBACXD,EAAOE,OAAOC,UAAUC,IAAI,kBAHpC,I,MAAAC,QAASR,CAATS,UAAwB,CAAA,KACpBR,SAAA,IAAcS,qBAAUV,QAAAQ,SACpBG,SAAWP,SAAAA,iBAAgB,sB,qCAE1BO,U,IAAA,IAAAC,UAAAC,MAAAC,MAAAF,UAAAG,KAAAC,MAAA,CAAA,IAAAC,IAAAH,MAAAI,MAHLC,SAAAC,QAAAH","file":"animation.js","sourcesContent":["function onEntry(entry) {\r\n entry.forEach(change => {\r\n if (change.isIntersecting) {\r\n change.target.classList.add('element-show');\r\n }\r\n });\r\n}\r\n\r\nlet options = { threshold: [0.3] };\r\nlet observer = new IntersectionObserver(onEntry, options);\r\nlet elements = document.querySelectorAll('.element-animation');\r\n\r\nfor (let elm of elements) {\r\n observer.observe(elm);\r\n}"],"sourceRoot":"../.src/"}
|
||||
@ -1,2 +0,0 @@
|
||||
"use strict";var colors={green:"#54A48B",yellow:"#c0a761"},lessonsBtn=document.querySelector("#lessonsBtn"),worksBtn=document.querySelector("#worksBtn"),lessonsList=document.querySelector("#lessonsList"),worksList=document.querySelector("#worksList"),header=document.querySelector("header");lessonsBtn.addEventListener("click",function(s){lessonsBtn.classList.add("active"),worksBtn.classList.remove("active"),lessonsList.classList.remove("hidden"),worksList.classList.add("hidden"),header.classList.remove("work")}),worksBtn.addEventListener("click",function(s){lessonsBtn.classList.remove("active"),worksBtn.classList.add("active"),lessonsList.classList.add("hidden"),worksList.classList.remove("hidden"),header.classList.add("work")});
|
||||
//# sourceMappingURL=index.js.map
|
||||
@ -1 +0,0 @@
|
||||
{"version":3,"sources":["js/index.js"],"names":["colors","green","yellow","worksBtn","document","querySelector","lessonsList","header","lessonsBtn","addEventListener","classList","remove","e","worksList","add"],"mappings":"aAEA,IAAIA,OAAS,CACTC,MAAO,UACPC,OAAQ,WAIRC,WAAWC,SAASC,cAAc,eAElCC,SAAWF,SAAGA,cAASC,aAEvBE,YAASH,SAASC,cAAc,gBAEpCG,UAAWC,SAAAA,cAA0B,cACjCD,OAAWE,SAAXL,cAAA,UAGAC,WAAAA,iBAAsBK,QAAO,SAAAC,GAC7BC,WAAUH,UAAVI,IAAwB,UACxBP,SAAOG,UAAUC,OAAO,UAG5BR,YAASM,UAAiBE,OAA1B,UACIH,UAAWE,UAAUC,IAAAA,UACrBR,OAASO,UAAUI,OAAI,UAIvBP,SAAOG,iBAAc,QAArB,SAAAE,GANJJ,WAAAE,UAAAC,OAAA,UAEIR,SAASO,UAAUI,IAAI,UAEvBR,YAAYI,UAAUI,IAAI,UAC1BD,UAAUH,UAAUC,OAAO,UAC3BJ,OAAOG,UAAUI,IAAI","file":"index.js","sourcesContent":["\"use strict\";\r\n\r\nlet colors = {\r\n green: \"#54A48B\",\r\n yellow: \"#c0a761\"\r\n};\r\n\r\nlet lessonsBtn = document.querySelector(\"#lessonsBtn\");\r\nlet worksBtn = document.querySelector(\"#worksBtn\");\r\n\r\nlet lessonsList = document.querySelector(\"#lessonsList\");\r\nlet worksList = document.querySelector(\"#worksList\");\r\nlet header = document.querySelector(\"header\");\r\n\r\nlessonsBtn.addEventListener(\"click\", (e) => {\r\n lessonsBtn.classList.add(\"active\");\r\n worksBtn.classList.remove(\"active\");\r\n\r\n lessonsList.classList.remove(\"hidden\");\r\n worksList.classList.add(\"hidden\");\r\n header.classList.remove(\"work\");\r\n})\r\n\r\nworksBtn.addEventListener(\"click\", (e) => {\r\n lessonsBtn.classList.remove(\"active\");\r\n worksBtn.classList.add(\"active\");\r\n\r\n lessonsList.classList.add(\"hidden\");\r\n worksList.classList.remove(\"hidden\");\r\n header.classList.add(\"work\");\r\n})"],"sourceRoot":"../.src/"}
|
||||
@ -1,2 +0,0 @@
|
||||
"use strict";function SHA256(r){function S(r,n){var t=(65535&r)+(65535&n);return(r>>16)+(n>>16)+(t>>16)<<16|65535&t}function m(r,n){return r>>>n|r<<32-n}return function(r){for(var n="0123456789abcdef",t="",e=0;e<4*r.length;e++)t+=n.charAt(r[e>>2]>>8*(3-e%4)+4&15)+n.charAt(r[e>>2]>>8*(3-e%4)&15);return t}(function(r,n){var t=new Array(1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298),e=new Array(1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225),o=new Array(64);r[n>>5]|=128<<24-n%32,r[15+(n+64>>9<<4)]=n;for(var a,f,u=0;u<r.length;u+=16){for(var c=e[0],h=e[1],i=e[2],C=e[3],g=e[4],A=e[5],d=e[6],v=e[7],l=0;l<64;l++)o[l]=l<16?r[l+u]:S(S(S(m(f=o[l-2],17)^m(f,19)^f>>>10,o[l-7]),m(a=o[l-15],7)^m(a,18)^a>>>3),o[l-16]),f=S(S(S(S(v,m(g,6)^m(g,11)^m(g,25)),g&A^~g&d),t[l]),o[l]),a=S(m(c,2)^m(c,13)^m(c,22),c&h^c&i^h&i),v=d,d=A,A=g,g=S(C,f),C=i,i=h,h=c,c=S(f,a);e[0]=S(c,e[0]),e[1]=S(h,e[1]),e[2]=S(i,e[2]),e[3]=S(C,e[3]),e[4]=S(g,e[4]),e[5]=S(A,e[5]),e[6]=S(d,e[6]),e[7]=S(v,e[7])}return e}(function(r){for(var n=Array(),t=0;t<8*r.length;t+=8)n[t>>5]|=(255&r.charCodeAt(t/8))<<24-t%32;return n}(r=function(r){r=r.replace(/\r\n/g,"\n");for(var n="",t=0;t<r.length;t++){var e=r.charCodeAt(t);e<128?n+=String.fromCharCode(e):(127<e&&e<2048?n+=String.fromCharCode(e>>6|192):(n+=String.fromCharCode(e>>12|224),n+=String.fromCharCode(e>>6&63|128)),n+=String.fromCharCode(63&e|128))}return n}(r)),8*r.length))}
|
||||
//# sourceMappingURL=sha256.js.map
|
||||
@ -1,2 +0,0 @@
|
||||
"use strict";function reciveGrade(e,t){t=e/t*100;return t<50?2:90<=(t=2*t-100)?5:t<90&&45<=t?4:3}var btn=document.querySelector("#checkAnswers"),elems=document.querySelectorAll(".questionInput"),checkAnswers=function(e){var s,l;1!=e.which&&"Enter"!=e.code&&"NumpadEnter"!=e.code||(s=0,l=elems.length,elems.forEach(function(e,t,n){if(null==e.dataset.type)SHA256(e.value)==e.dataset.answer?(s++,e.classList.remove("wrong")):e.classList.add("wrong");else switch(e.dataset.type){case"box":e.classList.contains("b")?(a=Number(n[t-1].value),c=Number(e.value),r=a*a*c-4*a*c*c+4*c*c*c,Number(e.dataset.volume)-5<=r&&r<=Number(e.dataset.volume)+5?(s++,e.parentElement.parentElement.classList.remove("wrong")):e.parentElement.parentElement.classList.add("wrong")):l--;break;case"wallpapers":var r;"N"!=e.id?l--:(a=Number(document.querySelector("#a").value),c=Number(document.querySelector("#b").value),r=Number(document.querySelector("#h").value),Math.ceil(68/189*r*(a+c))+1==Number(e.value)?(s++,e.parentElement.parentElement.classList.remove("wrong")):e.parentElement.parentElement.classList.add("wrong"))}var a,c}),alert("Правильно ".concat(s," из ").concat(l,"\nОценка: ").concat(reciveGrade(s,l))))};btn.addEventListener("click",checkAnswers),document.addEventListener("keydown",checkAnswers);
|
||||
//# sourceMappingURL=test.js.map
|
||||
39
package.json
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"name": "code",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/zinchenko291/math-modeling.git"
|
||||
},
|
||||
"author": "zinchenko291",
|
||||
"license": "ISC",
|
||||
"bugs": {
|
||||
"url": "https://github.com/zinchenko291/math-modeling/issues"
|
||||
},
|
||||
"homepage": "https://github.com/zinchenko291/math-modeling#readme",
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.16.5",
|
||||
"@babel/preset-env": "^7.16.5",
|
||||
"browser-sync": "^2.27.7",
|
||||
"del": "^6.0.0",
|
||||
"gulp": "^4.0.2",
|
||||
"gulp-autoprefixer": "^8.0.0",
|
||||
"gulp-babel": "^8.0.0",
|
||||
"gulp-concat": "^2.6.1",
|
||||
"gulp-copy": "^4.0.1",
|
||||
"gulp-imagemin": "^7.1.0",
|
||||
"gulp-pug": "^5.0.0",
|
||||
"gulp-sass": "^5.0.0",
|
||||
"gulp-sourcemaps": "^3.0.0",
|
||||
"gulp-uglify": "^3.0.2",
|
||||
"sass": "^1.45.1"
|
||||
},
|
||||
"dependencies": {
|
||||
"bootstrap": "^5.1.3"
|
||||
}
|
||||
}
|
||||
64
poem.html
@ -1,64 +0,0 @@
|
||||
<!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>Мальчик учит стихотворение из 40 строк. Чтобы запомнить первую строчку ему понадобилась всего 1 мин. На каждую следующую он тратит на 10% времени больше. Стихотворение держится в памяти нерадивого ученика не дольше трех часов, а до школы бежать 15 минут. Как организовать заучивание стихотворения?</p><h4>Цель моделирования</h4><p>Предлагается исследовать ситуацию и предложить реальные способы ускорения процесса заучивания стихотворения.</p><h3>II этап. Разработка модели</h3><h4>ИНФОРМАЦИОННАЯ МОДЕЛЬ</h4><p>Анализ объекта моделирования показывает, что эта система состоит из двух объектов: мальчика и стихотворения. Стихотворение, в свою очередь, может быть разбито на простые элементы — строки. Каждый из объектов, входящих в систему, имеет свои параметры. Связь между объектами этой системы заключается во времени заучивания стиха нерадивым учеником. Представим информационную модель в табличном виде.</p><table class="element-animation"><tr><td rowspan="2">Объект</td><td colspan="2">Параметры</td></tr><tr><td><i>название</i></td><td><i>значение</i></td></tr><tr><td>Мальчик</td><td>Процент снижения прилежания с каждой строкой <span class="math">D (%)</span><br>
|
||||
Время удерживания в памяти любой информации <span class="math">DT</span></td><td>Исходные данные<br>
|
||||
Исходные данные (константа)</td></tr><tr><td>Стихотворение</td><td>Количество строк<br>
|
||||
Суммарное время, затраченное на заучивание всего стихотворения</td><td>Исходные данные<br>Результат</td></tr><tr><td>Строка (элемент стиха)</td><td>Время на заучивание первой строки <span class="math">Т<sub>i</sub></span>
|
||||
Время заучивания <span class="math">i</span>-й строки <span class="math">Т<sub>i</sub></span>
|
||||
Суммарное время, затраченное на <span class="math">i</span> строк <span class="math">S<sub>i</sub></span></td><td>Исходные данные<br>
|
||||
Расчетные данные<br>
|
||||
Расчетные данные</td></tr><tr><td>Среда</td><td>Время бега до школы</td><td>В задаче константа</td></tr></table><p>Математическая модель связывает между собой параметры элементов системы.</p><p>Время на заучивание <span class="math">i</span>-й строки:</p><p class="center"><span class="math">T<sub>i</sub> = T<sub>i-1</sub> × (1 + ∆ (%)).</span></p><p>Суммарное время на запоминание отрывка из <span class="math">i</span> строк:</p><p class="center"><span class="math">S<sub>i</sub> = S<sub>i-1</sub> + T<sub>i</sub>. </span></p><h4>КОМПЬЮТЕРНАЯ МОДЕЛЬ</h4><p>Для моделирования будем использовать язык моделирования Python.</p><p>Для начала введём переменные.</p><pre class="element-animation"><code>learningTime = 60 # Время заучивания в секундах
|
||||
deltaTime = 1.1 # Увеличение времени в процентах
|
||||
amountOfStrings = 40 # Всего строк</code></pre><p>Пройдёмся в цикле по всем строчкам стихотворения</p><pre class="element-animation"><code>print('№ строки\tВремя заучивания(сек)\t Суммарное время') # Заголовок таблицы
|
||||
for i in range(amountOfStrings):
|
||||
Ti = learningTime * deltaTime**i # Используем формулы геометрической прогрессии
|
||||
Si = (Ti * deltaTime - learningTime) / (deltaTime - 1)
|
||||
print(f'{ i + 1 }\t{ "%.2f" % Ti }\t{ "%.2f" % Si }')</code></pre><p>Сделаем вывод времени в минутах и секундах при помощи модуля Datetime</p><pre class="element-animation"><code># В начало кода вставим
|
||||
import datetime
|
||||
# В цикле добавим
|
||||
TiTime_format = str(datetime.timedelta(seconds = int(Ti)))
|
||||
SiTime_format = str(datetime.timedelta(seconds = int(Si)))
|
||||
print(f'{ i + 1 }\t{ TiTime_format }\t{ SiTime_format }')</code></pre><details><summary>Вывод программы</summary><pre>№ строки Время заучивания(сек) Суммарное время
|
||||
1 0:01:00 0:00:59
|
||||
2 0:01:06 0:02:05
|
||||
3 0:01:12 0:03:18
|
||||
4 0:01:19 0:04:38
|
||||
5 0:01:27 0:06:06
|
||||
6 0:01:36 0:07:42
|
||||
7 0:01:46 0:09:29
|
||||
8 0:01:56 0:11:26
|
||||
9 0:02:08 0:13:34
|
||||
10 0:02:21 0:15:56
|
||||
11 0:02:35 0:18:31
|
||||
12 0:02:51 0:21:23
|
||||
13 0:03:08 0:24:31
|
||||
14 0:03:27 0:27:58
|
||||
15 0:03:47 0:31:46
|
||||
16 0:04:10 0:35:56
|
||||
17 0:04:35 0:40:32
|
||||
18 0:05:03 0:45:35
|
||||
19 0:05:33 0:51:09
|
||||
20 0:06:06 0:57:16
|
||||
21 0:06:43 1:04:00
|
||||
22 0:07:24 1:11:24
|
||||
23 0:08:08 1:19:32
|
||||
24 0:08:57 1:28:29
|
||||
25 0:09:50 1:38:20
|
||||
26 0:10:50 1:49:10
|
||||
27 0:11:55 2:01:05
|
||||
28 0:13:06 2:14:12
|
||||
29 0:14:25 2:28:37
|
||||
30 0:15:51 2:44:29
|
||||
31 0:17:26 3:01:56
|
||||
32 0:19:11 3:21:08
|
||||
33 0:21:06 3:42:15
|
||||
34 0:23:13 4:05:28
|
||||
35 0:25:32 4:31:01
|
||||
36 0:28:06 4:59:07
|
||||
37 0:30:54 5:30:02
|
||||
38 0:34:00 6:04:02
|
||||
39 0:37:24 6:41:26
|
||||
40 0:41:08 7:22:35</pre></details><div class="btnWrapper"><a class="btn" href="poemTest.html">Тест</a></div></main></body><script src="js/animation.js"></script></html>
|
||||
@ -1,6 +0,0 @@
|
||||
<!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"><ol><li class="question"><p>Сколько времени понадобилось бы мальчику, чтобы выучить все стихотворение?</p><p>Ответ: <input class="questionInput" data-answer="cbd082c798423a4870c866e8f0b82abfa633da424260c3c641bccad0d124e055"></p><span class="help">Записать в виде H:MM:SS</span></li><li class="question"><p>Из скольких строк (максимум) должно состоять стихотворение, если учительница мальчика утверждает, что его знаний хватает не более чем на 3 часа, а до школы бежать 15 мин.?</p><p>Ответ: <input class="questionInput" data-answer="624b60c58c9d8bfb6ff1886c2fd605d2adeb6ea4da576068201b6c6958ce93f4"></p></li><li class="question"><p>Сколько строк можно успеть выучить до начала «мультика», если до него осталось 45 мин.?</p><p>Ответ: <input class="questionInput" data-answer="4523540f1504cd17100c4835e85b7eefd49911580f8efff0599a8f283be6b9e3"></p></li><li class="question"><p>Как влияет время заучивания 1-й строки на общее время запоминания стихотворения? Как меняется суммарное время при увеличении времени на заучивание 1-й строки?</p><p>Ответ: <select class="questionInput" data-answer="1468f9a380bdb08fea9553a0bb53285522514d189ca99790217c512ba2544e21"><option>---</option><option>увеличивается</option><option>уменьшается</option></select></p></li><li class="question"><p>Как влияет концентрация внимания (уменьшение D%) на общее время запоминания стихотворения?</p><p>Ответ: <select class="questionInput" data-answer="c09d854f4fbd684f26386d51cb76620cebdd83e97c6c4f04fb2b5267662cd694"><option>---</option><option>увеличивается</option><option>уменьшается</option></select></p></li></ol><button class="big" id="checkAnswers">Проверить</button></main></body><script src="js/sha256.js"> </script><script src="js/test.js"> </script></html>
|
||||
159
src/box.pug
Normal file
@ -0,0 +1,159 @@
|
||||
doctype html
|
||||
html(lang="ru")
|
||||
head
|
||||
include ./includes/head.pug
|
||||
title Коробка
|
||||
body
|
||||
include includes/header.pug
|
||||
main.container.lesson
|
||||
h2 Коробка
|
||||
h3 I этап. Постановка задачи
|
||||
h4 Описание задачи
|
||||
p Имеется квадратный лист картона. Из листа по углам вырезают четыре квадрата и склеивают коробку по сторонам вырезов. Какова должна быть сторона вырезаемого квадрата, чтобы коробка имела наибольшую вместимость? Какого размера надо взять лист, чтобы получить из него коробку с заданным максимальным объемом?
|
||||
h4 ЦЕЛЬ МОДЕЛИРОВАНИЯ
|
||||
p Определить максимальный объём коробки.
|
||||
|
||||
h3 II этап. Разработка модели
|
||||
h4 ИНФОРМАЦИОННАЯ МОДЕЛЬ
|
||||
table.element-animation
|
||||
tr
|
||||
td(rowspan=2) <b>Объект</b>
|
||||
td(colspan=2) <b>Параметры</b>
|
||||
tr
|
||||
td <b>название</b>
|
||||
td <b>значение</b>
|
||||
tr
|
||||
td Картонный лист
|
||||
td Длина стороны #[span.math a]
|
||||
td Исходные данные
|
||||
tr
|
||||
td Вырез
|
||||
td Шаг изменения #[span.math ∆b]<br>Размер #[span.math b]
|
||||
td Исходные данные<br>Расчетные данные
|
||||
tr
|
||||
td Коробка
|
||||
td.
|
||||
Длина стороны дна #[span.math c]<br>
|
||||
Площадь дна #[span.math S]<br>
|
||||
Объём #[span.math V]
|
||||
td Расчетные данные<br>Расчетные данные<br>Результаты
|
||||
|
||||
p Для вывода формул математической модели составим геометрическую модель в виде чертежа с указанием исследуемых характеристик объекта.
|
||||
p Расчетные параметры объекта определяются по формулам:
|
||||
p
|
||||
|#[span.math c = a - 2b] — длина стороны дна;<br>
|
||||
|#[span.math S = c#[sup 2]] — площадь дна;<br>
|
||||
|#[span.math V = Sb] — объём.
|
||||
p Здесь, #[span.math a] — длина стороны картонного листа, #[span.math b] — размер выреза. Первоначальный размер выреза #[span.math b#[sub 0] = 0]. Последующие размеры выреза определяются по формуле #[span.math b#[sub i+1] = b#[sub i] + ∆b]
|
||||
|
||||
h4 КОМПЬЮТЕРНАЯ МОДЕЛЬ
|
||||
p Для моделирования будем использовать язык моделирования Python.
|
||||
p Для начала введём переменные. Их названия будут совпадать с информационной моделью.
|
||||
code a = int(input()) # Получаем и преобразуем данные в числовые значения<br>deltaB = int(input())
|
||||
p Попробуем проследить, как будет изменятся объём с увеличением размера выреза
|
||||
pre.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
|
||||
p Начальные данные: a = 40, deltaB = 1
|
||||
details
|
||||
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
|
||||
p Можно заметить, что со объём сначала возрастает, а затем убывает. Значит можно отследить точку максимума.
|
||||
pre.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
|
||||
p В теории программа должна вывести "Объём = 4732, при b = 7"
|
||||
pre.element-animation
|
||||
code
|
||||
|<i class=grey>console</i>
|
||||
|40
|
||||
|1
|
||||
|Объём = 4732, при b = 7
|
||||
p Наша программа показала правильный вариант.<br>Предлагаю сделать её более наглядной, выводя в консоль размер выреза, длину стороны дна, площадь дна и объём.<br>Вернёмся к первому варианту кода.
|
||||
pre.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",
|
||||
|# зачем захламлять консоль
|
||||
details
|
||||
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
|
||||
p С помощью этого кода можно будет пройти дальнейшие тесты.
|
||||
div.btnWrapper
|
||||
a.btn(href="boxTest.html") Тест
|
||||
script(src="js/animation.js")
|
||||
128
src/boxTest.pug
Normal file
@ -0,0 +1,128 @@
|
||||
mixin list
|
||||
option ---
|
||||
option увеличивается
|
||||
option уменьшается
|
||||
option сначала увеличивается, затем уменьшается
|
||||
option сначала уменьшается, затем увеличивается
|
||||
|
||||
doctype html
|
||||
html(lang="en")
|
||||
head
|
||||
include ./includes/head.pug
|
||||
title Коробка - тест
|
||||
body
|
||||
include ./includes/header.pug
|
||||
main.container
|
||||
ol
|
||||
li.question
|
||||
p Проследите, как изменяется с увеличением выреза:
|
||||
ul
|
||||
li длина стороны дна
|
||||
select.questionInput(data-answer="c09d854f4fbd684f26386d51cb76620cebdd83e97c6c4f04fb2b5267662cd694") #[+list]<br>
|
||||
li площадь дна
|
||||
select.questionInput(data-answer="c09d854f4fbd684f26386d51cb76620cebdd83e97c6c4f04fb2b5267662cd694") #[+list]<br>
|
||||
li объём коробки
|
||||
select.questionInput(data-answer="45e438e5fe6f76a12a8ba308332cb7e84f384c2adb6263a9e01e04d1e8afb43d") #[+list]
|
||||
li.question
|
||||
p Найдите наибольший объём коробки и соответствующий вырез, при:
|
||||
table
|
||||
tr
|
||||
td(colspan=3) Шаг изменения выреза = 1
|
||||
tr
|
||||
td Длина стороны листа
|
||||
td Вырез
|
||||
td Объём
|
||||
tr
|
||||
td 40
|
||||
td
|
||||
input.questionInput(type="text" data-answer="7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="c1f713b07141998057941915d7beacaa0efe62e1e3e0e0ded7f03b981759ec95")
|
||||
span.help Введите целое число без дробной части
|
||||
li.question
|
||||
p Найдите наибольший объём коробки и соответствующий вырез, при:
|
||||
table
|
||||
tr
|
||||
td(colspan=3) Шаг изменения выреза = 1
|
||||
tr
|
||||
td Длина стороны листа
|
||||
td Вырез
|
||||
td Объём
|
||||
tr
|
||||
td 40
|
||||
td
|
||||
input.questionInput(type="text" data-answer="7902699be42c8a8e46fbbb4501726517e86b22c56a189f7625a6da49081b2451")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="c1f713b07141998057941915d7beacaa0efe62e1e3e0e0ded7f03b981759ec95")
|
||||
tr
|
||||
td 60
|
||||
td
|
||||
input.questionInput(type="text" data-answer="4a44dc15364204a80fe80e9039455cc1608281820fe2b24f1e5233ade6af1dd5")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="2570901c76653e578fecf066b5fc3fa1619f1a051e928e39797bab1b1342bf40")
|
||||
tr
|
||||
td 80
|
||||
td
|
||||
input.questionInput(type="text" data-answer="3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="b5ee7fadca909a41e9d7cfd30bec010979f938f1930aceb48fc3101a7709c8e6")
|
||||
span.help Введите целое число без дробной части
|
||||
li.question
|
||||
p Найдите наибольший объём коробки и соответствующий вырез, при:
|
||||
table
|
||||
tr
|
||||
td(colspan=3) Шаг изменения выреза = 0.3
|
||||
tr
|
||||
td Длина стороны листа
|
||||
td Вырез
|
||||
td Объём
|
||||
tr
|
||||
td 40
|
||||
td
|
||||
input.questionInput(type="text" data-answer="63d1a279ef708611d2d7b3f2f1759471d5c29badb6238012e97265028aa09444")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="a99bc772aa92390a11d9e4b8fc870cdbfc8566946eb437dd8212801e601a33cd")
|
||||
tr
|
||||
td 60
|
||||
td
|
||||
input.questionInput(type="text" data-answer="b41b81976c2f1f8b7aec5281ddb04656360f46c7ffd232dde0d91ed73af96bba")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="18ccef5ab9f07595b3141f79571d5776aa87ef7e14795cd75e8f86a56f368912")
|
||||
tr
|
||||
td 80
|
||||
td
|
||||
input.questionInput(type="text" data-answer="c89e092e57afbc04cd0fe199afcf04d9e79e330773cda6632adb908699f1ec14")
|
||||
td
|
||||
input.questionInput(type="text" data-answer="13f76bb0b140b089ab021808324d248de32c9072b7f03854306732be5883b64b")
|
||||
span.help Введите число из консоли
|
||||
li.question
|
||||
p Подберите размер исходного картонного листа, если дан максимальный объём коробки:
|
||||
table
|
||||
tr
|
||||
td Длина стороны листа
|
||||
td Вырез
|
||||
td Объём
|
||||
tr
|
||||
td
|
||||
input.questionInput(type="text" data-type="box")
|
||||
td
|
||||
input.questionInput.b(type="text" data-type="box" data-volume="3500")
|
||||
td 3500
|
||||
tr
|
||||
td
|
||||
input.questionInput(type="text" data-type="box")
|
||||
td
|
||||
input.questionInput.b(type="text" data-type="box" data-volume="5000")
|
||||
td 5000
|
||||
tr
|
||||
td
|
||||
input.questionInput(type="text" data-type="box")
|
||||
td
|
||||
input.questionInput.b(type="text" data-type="box" data-volume="12000")
|
||||
td 12000
|
||||
details
|
||||
summary.help Подсказка
|
||||
span.help В этом задании можно использовать метод половинного деления.
|
||||
button.big#checkAnswers Проверить
|
||||
script(src="js/sha256.js")
|
||||
script(src="js/test.js")
|
||||
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 461 B After Width: | Height: | Size: 461 B |
|
Before Width: | Height: | Size: 693 B After Width: | Height: | Size: 693 B |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 764 B After Width: | Height: | Size: 764 B |
|
Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 2.5 KiB |
10
src/includes/head.pug
Normal file
@ -0,0 +1,10 @@
|
||||
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")
|
||||