Публикации сообщества

Андрей Корягин • 30 апреля 2022

Книга "Погружение в математику с Minecraft и Python"

    Здравствуйте, дорогие читатели моего блога. Сегодня я хочу вас познакомить с новой моей книгой, которая предназначена для обучения математике и программированию детей от 10 -11 лет.

Книга носит название "Погружение в математику с Minecraft и Python" и является продолжением к книге "Python. Великое программирование в Minecraft".
 
     На данный момент она готовиться в печать и прошла вёрстку и корректуру. 
Ниже представлено содержание книги. В ней мы попытались собрать наиболее часто используемые термины, понятия и разделы школьной математики и частично затронули разделы высшей математики, но только те, что будут понятны ребёнку, и о которых он так или иначе слышал.
 
    В данной книге мы хотим помочь ребёнку понять многие разделы (темы) математики с применением наглядных демонстраций и оттачивания навыков в программировании. Тем самым показывая важность математики как в программировании, так и в нашем физическом мире, например архитектуре.
 
Почти каждый раздел сотоит из теории, практики, заданий для закрепления темы и контрольных вопросов.

 

Авторы: Корягин Андрей Владимирович

Корягина Алиса Витальевна

 

Для краткого ознакомления с книгой предоставлю небольшую главу. 
Будем очень рады узнать ваше мнение в каких бы классах вы применили такой подход, для какого возраста?

 

Элементарные математические функции


Основы математики были описаны в первой книге «Python. Великое программирование в Minecraft». К данным основам относятся знания в области математических операторов, операторов сравнения, основ теории чисел (целые и дробные). На этом познания в математике не заканчиваются, и дальше, согласно школь-
ной программе, идут решения уравнений и неравенств и различных систем из них, которые перерастают в изучение функций и построение графиков. Затем идёт усложнение уравнений и функций. Все эти моменты мы постараемся рассмотреть в данной книге.

 

Для упрощения написания программ,связанных с математикой, для разных языков программирования разрабатывались математические библиотеки. Для языка Python — это библиотека math.


Математические приключения в игре Minecraft с Python


2.1. Библиотека math

 

Модуль math в Python предоставляет набор функций для выполнения математических, тригонометрических и логарифмических операций. Некоторые из основных функций модуля:


ƒ pow(num, power): возведение числа num в степень power
ƒ sqrt(num): квадратный корень числа num
ƒ ceil(num): округление числа до ближайшего наибольшего
целого
ƒ floor(num): округление числа до ближайшего наименьшего
целого
ƒ factorial(num): факториал числа
ƒ degrees(rad): перевод из радиан в градусы
ƒ radians(grad): перевод из градусов в радианы
ƒ cos(rad): косинус угла в радианах
ƒ sin(rad): синус угла в радианах
ƒ tan(rad): тангенс угла в радианах
ƒ acos(rad): арккосинус угла в радианах
ƒ asin(rad): арксинус угла в радианах
ƒ atan(rad): арктангенс угла в радианах
ƒ log(n, base): логарифм числа n по основанию base
ƒ log10(n): десятичный логарифм числа n
ƒ math.hypot(X, Y): вычисляет гипотенузу треугольника с кате-
тами X и Y (math.sqrt(x * x + y * y))
ƒ math.pi: константа pi = 3,1415926…
ƒ math.e: константа e = 2,718281…


Данная библиотека содержит стандартный набор функций,которые непосредственно применяют школьники с 1 по 11 класс, с затрагиванием и вузовского материала. Со всеми функциями math мы не будем знакомиться, для этого есть документации к библиотекам и книги о детальном их разборе. В первую очередь рассмотрим функции, которые встречаются в школьной программе, и постараемся связать математическую запись с решением  практических задач. Начнём с изучения линейных функций общего вида

 

y = k * x + b.


2.2. Линейные функции и их графики


Линейными функциями называют функции вида y = k * x, где k —это угловой коэффициент или коэффициент пропорциональности. В учебниках по математике существует такая запись: y = k * x + b, где k — это угловой коэффициент или коэффициент пропорциональности, b — число из множества рациональных или иррациональных чисел.

Данную функцию принято называть в профессиональном кругу математиков «аффинной», но в школьных учебниках её называют «линейной». Значение k влияет на то, как будет строиться график, — под каким
углом относительно оси X и Y он будет проходить.

Элемент b указывает на то, где график пересечётся с осью, если x = 0.

 

Есть два вида задач для этих функций:
ƒ нахождение k и b, если известны точки, принадлежащие графику;
ƒ проверить на принадлежность к графику точек с определёнными координатами.


Звучит вроде страшно и непонятно. Выйдем из абстракции к реальному миру. Возьмите длинную прямую палку, можно заменить на линейку. Палка также описывается данной функцией, в зависимости от того, как мы её расположим относительно начала координат. Что такое начало координат в физическом мире?


Началом координат в реальности может выступить всё что угодно, в основном что-то неподвижное: дерево, стул, стакан, дом, камень… Всё будет зависеть от того, какого размера вы возьмёте палку и какую точность измерения хотите получить. В седьмом классе очень много задач в геометрии и физике на нахождение
размеров объекта и определение расстояния между предметами, и подход с использованием функций также применим к ним.


«Зачем это нужно?» — спросите вы. На это есть множество обоснований, начнём с простого. Вы играете в футбол или стреляетев тире. В обоих случаях ваша задача — попасть в цель. Вы стараетесь бить по прямой, так чтобы мяч или пуля перемещалась вдоль представленного графика линейной функции. Этот график прохо-
дит через ворота или цель в мишени, т. е. координаты этих объектов принадлежат графику линейной функции или, иными словами, траектории движения.

 

Конечно, в данном случае никто из нас в юном возрасте не начнёт выписывать в этот же момент функцию
и вычислять правильную позицию, всё делается «на глаз», как нам кажется, но мозг всё это просчитывал за доли секунды, и воображаемая траектория полёта мяча — это тоже работа вашего мозга, который соединил две точки и провёл неосознанные вычисления.


Вроде как не убедительный пример применения данных знаний, но опытные игроки так и поступают — создают план действий и набрасывают траекторию движений. Рассмотрим более современный вариант, когда вы непосредственно не видите конечной цели. Например, это запуск спутников и ракет, симулятор стрельбы в компьютерных играх, разработка программного обеспечения для беспилотного транспорта… Во всех этих примерах во время их реальной работы ваше участие сводится к минимуму.

 

Вычислением и построением графиков функций траектории движения транспорта занимаются исключительно компьютеры.


И от того, как правильно вы определили функцию и подобрали коэффициенты, будет зависеть результат процесса. Во всех этих случаях машина должна просчитать координаты двух точек в определённый момент времени, построить график, проходящий через них, запустить процесс (запуск ракеты, полёт пули, движение в определённом направлении согласно условию) и отслеживать координаты полёта или движения с течением времени, чтобы создать отчёт о проценте успеха реализации задачи.


Теперь немного становится ясно, что математика нужна для получения точного и красивого результата, а не «на глаз». Для решения многих современных задач требуется большая точность, и здесь без математики не обойтись. Но вернёмся к линейным функциям. Сейчас мы попробуем построить графики функций
в Minecraft с разными значениями k и b, чтобы увидеть наглядно, как они влияют на построение.


line function

 

 

 

 

 

 

 

 

 

 

 



Для визуализации графиков нам понадобится среда Minecraft, знания в области Minecraft API и Python. Строить графики будем по точкам, т. е. по блокам. Поэтому нам необходима функция setBlock() (смотри приложение).

 

Рассмотрим первый столбец таблицы и построим для каждой функции графики в Minecraft. Чтобы
различать графики, будем использовать блок «шерсть» с разным цветом (смотри приложение).


Создадим файл lin1.py и запишем стандартные строки кода для импортирования библиотеки Minecraft и настройки связи между кодом и игрой. Импортируем библиотеку по работе с блоками Minecraft и вызовем функцию получения координат игрока (более подробно рассматривается в книге «Python. Великое программи-
рование в Minecraft»).


Для того чтобы запись координат была приведена к общеизвестному виду, создадим переменные x, y, z и присвоим им значения координат игрока.


Рассмотрим первую функцию: y = 0.

Графиком этой функции является прямая, параллельная оси X, т. е. все точки графика будут
находиться на одном расстоянии от оси X. Точнее, прямая будет совпадать с осью X, потому что при любом значении x переменная y принимает значение, равное нулю.

line function py

 

 

 

 

 

 

 

     Как это можно реализовать программно? Для этого воспользуемся конечным циклом.

Хоть и прямая бесконечная, но она в любой точке будет неизменной, поэтому достаточно взять отрезок. Возьмём участок графика в промежутке x ∈ [0, 20), т. е. размер прямой будет 20 блоков от позиции игрока.

 

Для этого графика возьмём белую шерсть.


Выражение: y1 = 0 * x + 0 равносильно функции y = 0, где k = 0 и b = 0.

С каждым шагом мы строим блок, сдвигаясь по оси X на один блок, при этом значение y не меняется, согласно математической записи функции.

Программу необходимо сохранитьв Minecraft Python  Minecraft Tools  MinecraftPythonAPI 
py3minepi-master.

line1

 

 

 

Результат программы представлен на рис. 28.

line y

 

 

 

 

 

 

 

 

 

Теперь, по аналогии, построим остальные графики.


Начнём с y = 0.2 * x.


Для неё запишем аналогичный код и покрасим шерсть в оранжевый цвет:

line y1

 

 


Запустим программу и получим результат, как на рис. 29.
line y2

 

 

 

 

 

 

 

 

Как видно, вместо ожидаемой прямой линии представлена ломаная. Это связано с масштабом построения и погрешностью. Так как мы взяли малый промежуток отрезка, а точка графика равна 1/20 размера от целого блока, и блоки в среде строятся по целым значениям, т. е. половина блока строиться не будет, то получаем
соответствующий график. Если увеличить промежуток до 100, то с расстоянием эта кривая «выпрямляется».


Напишем для всех остальных функций коды, где k ≥ 0:

line y3

 

 

 

 

 

 

 

 

Результат работы программы изображён на рис. 30.


line y11
Как видно, угол наклона графиков к оси X различен и напрямую связан с коэффициентом k, который также называют коэффициентом пропорциональности. Чем выше k, тем больше угол. Здесь нужно заметить, что существует предел угла, и он равен 90°. График никакой подобной функции не сможет быть строго перпенди-
кулярен оси X, так как угол в 90° недостижим.