УДК 372.853
МАТЕМАТИЧЕСКИЕ И ГРАФИЧЕСКИЕ БИБЛИОТЕКИ PYTHON КАК ИНСТРУМЕНТ МОДЕЛИРОВАНИЯ ФИЗИЧЕСКИХ ПРОЦЕССОВ
© 2023 С. Н. Стрельников1, А. Ю. Верисокин2, Д. В. Вервейко3
1 студент 5 курса факультета физики, математики e-mail: sstrelnikov899@ gmail. com 2кандидат физико-математических наук, доцент кафедры физики и нанотехнологий
e-mail: ffalconn @ mail. ru, 3кандидат физико-математических наук, доцент кафедры физики и нанотехнологий
e-mail: allegroform @ mail. ru,
Курский государственный университет
В данной работе исследуются методические возможности применения математических и графических библиотек языка программирования Python для моделирования и визуализации различных задач механики и электричества, требующих автоматизированного математического моделирования в научно-исследовательских и учебно-методических целях в связанных сферах деятельности. Описаны возможности библиотек, сконструированных средствами версии языка Python 3.
Ключевые слова: математическое моделирование, Python, математические библиотека, библиотеки визуального моделирования, ИКТ, интегрированный урок.
PYTHON MATH AND GRAPHICS LIBRARIES
AS A TOOL FOR MODELING PHYSICAL PROCESSES
© 2023 S. N. Strelnikov1, A. Yu. Verisokin2, D. V. Verveiko3
1Student of the 5 th year of the Faculty of Physics, Mathematics e-mail: sstrelnikov899@ gmail. com
2 Candidate of Physical and Mathematical Sciences, Associate Professor
of the Department of Physics and Nanotechnology e-mail: ffalconn @ mail. ru,
3 Candidate of Physical and Mathematical Sciences, Associate Professor
of the Department of Physics and Nanotechnology e-mail: allegroform@mail.ru,
Kursk State University
This paper explores the methodological possibilities of using mathematical and graphical libraries of the Python programming language for modeling and visualization of various problems of mechanics and electricity that require automated mathematical modeling for research and educational purposes in related fields of activity. The possibilities of libraries constructed by means of the Python 3 version of the language are described.
Keywords: mathematical modeling, Python, mathematical library, visual modeling libraries, ICT, integrated lesson.
Важным аспектом обучения в школе является актуальность полученных знаний, их соответствие требованиям работодателей и запросам общества, поэтому одним
из ключевых вопросов становится выбор подходящих методов и инструментов обучения. Математические средства моделирования различных языков программирования -удобный методический инструмент в решении множества прикладных задач в различных сферах научной и образовательной деятельности. Средствами языков программирования могут быть проведены сложные вычисления любого рода и реализованы приложения, моделирующие физические процессы, в том числе и графические представления.
Современные школьники хотят видеть результат своей работы, получать на выходе цветные графики и диаграммы вместо сухих цифр. Компилируемый код программы и вывод чисел в консоль могут вызывать затруднения и снижение мотивации. В этом контексте Python - мощный, многогранный, но одновременно доступный даже для новичков инструмент для создания программ самого разнообразного назначения, включая реальные практико-ориентированные проекты. На тему обучения программированию на языке Python сегодня можно найти большое количество учебно-методической литературы. Он становится всё более распространённым в дополнительном и общем образовании [1].
Возможности языка Python удобны для использования в образовательном процессе в качестве инструмента для решения различных прикладных задач в контексте междисциплинарного подхода благодаря уникальному набору преимуществ [2]: 1) простой синтаксис, в отличие от языков семейств C и Delphi; 2) объектно-ориентированный язык, в отличие от Pascal; 3) интерпретируемый язык, что упрощает отладку программ; 4) поддержка модульности, что подразумевает огромное количество как готовых модулей, так и сторонних, в том числе пользовательских; 5) кроссплатформенность; 6) мощный рабочий инструмент, который позволяет выполнять реальные практико-ориентированные проекты; 7) один из самых популярных языков в промышленном программировании на сегодня; 8) наличие Python в списке разрешённых языков программирования в КИМах по информатике на ОГЭ и ЕГЭ.
Есть, конечно, и недостатки. С точки зрения методики, обучающиеся, которые начали изучать языки программирования с Python, испытывают сложности с переходом на низкоуровневые языки и с трудом понимают их синтаксис вследствие чрезмерной высокоуровневости Python, включающей нестрогую типизацию, списки вместо простых массивов, большое количество алгоритмов, реализованных в стандартных методах языка. Эта проблема решается правильной методикой преподавания программирования, при которой задача учителя должна состоять в том, чтобы объяснить, как работает какой-либо метод или алгоритм, прежде чем его использовать. Ещё одним недостатком Python, является то, что программы, написанные на нём, работают медленнее, чем созданные на компилируемых языках (например, семейства С), что является последствием его интерпретируемости. Но часто важна именно скорость разработки, а не быстродействие программы.
Приведенные достоинства позволяют использовать стандартный математический модуль Python Math как полноценный инструмент математического моделирования. Модуль является компонентом стандартной библиотеки языка и включает в себя теоретико-числовые функции, функции представления чисел в различных видах, степенные, логарифмические и тригонометрические функции. Набор этих инструментов способствует простоте моделирования физических процессов посредством использования математических функций для имитации действия физических законов. Длинная арифметика, позволяющая вычислять значения в практически неограниченных размерах, делает стандартный модуль Math более удобным для моделирования в сравнении с математическими библиотеками большинства языков [3].
Стрельников С. НВерисокин А. ЮВервейко Д. В. Математические и графические библиотеки Python как инструмент моделирования физических процессов
Основой большинства математических библиотек Python является NymPy -библиотека с открытым исходным кодом, изначально разработанная как замена Mathcad и поддерживающая работу с массивами математических данных. Основной тип данных библиотеки - многомерный массив ndarray (n-dimensional array), над объектами которого можно быстро и эффективно выполнять множество математических, статистических, логических и других операций. поддерживающий огромное количество математических операций. В чистом виде библиотека может использоваться для статистических вычислений, решений задач линейной алгебры, работы с полиномами, решений задач дифференциального и интегрального исчисления [4].
В контексте математического моделирования эта библиотека интересна как встраиваемая часть более крупных математических библиотек. Так, библиотека SciPy, инструменты которой основаны в NumPy, является набором модулей для решения дифференциальных и интегральных уравнений, задач линейной алгебры, оптимизации, численного решения уравнений. Данная библиотека является математической библиотекой общего назначения и используется в том числе для решения ряда инженерных и технологических задач [5].
Ещё одна библиотека, обладающая высокой функциональностью для решения физических проблем, - библиотека SymPy, которая поддерживает работу с полиномами, дифференциальное и интегральное исчисление, решение разных видов уравнений, а также имеет геометрический и физический модуль [6]. В SymPy присутствует также физический модуль sympy.physics, содержащий в себе избранные физические функции -вычисления в механике, оптике, квантовой механике и электродинамике, физике высоких энергий и сплошных сред. Он позволяет упрощать рутинные расчёты в соответствующих физических задачах и предоставляет удобные шаблоны классов для реализации физических объектов, а также функции для работы с создаваемыми экземплярами классов.
Класс Particle в модуле sympy.physics.mechanics позволяет создавать объекты, системно хранящие положение, скорость, ускорение и массу отдельной частицы. Класс RigidBody, моделирующий свойства твёрдых тел, позволяет моделировать объекты со следующими атрибутами: масса, координаты центра масс, система отсчёта и инерционные значения. С созданными экземплярами классов можно работать с помощью встроенных функций модуля: находить по заданным значениям атрибутов линейный и угловой момент импульса, кинетическую и потенциальную энергию объектов. Другой удобный инструмент - класс sympy.physics.vector, в котором можно задать систему отсчёта, векторы в системе координат и производить над ними любые операции. Модуль также содержит кинематические функции для нахождения линейной и угловой скоростей точек или твердых тел, а также их линейного и углового ускорения.
Модуль оптики sympy.physics.optics предоставляет классы для реализации геометрической, волновой и гауссовой оптики. В нём реализованы методы, позволяющие задавать свойства физических тел для вычисления их оптических характеристик, рассчитывать параметры оптических сред и электромагнитных волн, распространяющихся в них; функции, связанные с расчётами свойств электромагнитных волн, вынесены в отдельный модуль sympy.physics.optics.waves в составе модуля оптики и позволяют хранить данные о волнах в виде экземпляров соответствующего класса с атрибутами амплитуды, частоты, фазового угла волны и показателя преломления среды.
Модуль физики сплошных сред содержит избранные функции для решения соответствующих задач и моделирования взаимодействия в сплошных средах. Класс Beam содержит физические объекты типа «балки» - элемента инженерной конструкции, выдерживающего нагрузку за счет сопротивления изгибу и хранящегося
в коде в виде объекта с длиной, упругостью и типом материала; методы класса позволяют вычислять нагрузки на разные части балки, наклоны, изгибы и отклонения в результате воздействия соответствующих нагрузок. Другой основной класс Truss позволяет использовать объекты вида «фермы» - стержневые системы из балок, соединенных жесткими или шарнирными узлами. Методы соответствующих экземпляров класса могут хранить позиции таких соединений, внутренние силы балок-стержней, нагрузки на стержни и соединения и значения сил реакции опоры в любой точке системы.
Модули квантовой физики содержат инструменты для избранных вычислений в квантовой механике - например, есть функции для работы со свойствами квантовых гармонических осцилляторов, вычисления энергии состояния частицы, инструменты тензорных вычислений для решения задач в физике высоких энергий и многое другое.
Вышеописанные вычислительные библиотеки применяются для расчётов любого уровня сложности в самых разных сферах научно-исследовательской и производственной деятельности и являются компонентами других библиотек и инструментов, доступных в среде Python. В реальных проектах эти библиотеки часто взаимодействуют с инструментами визуального моделирования, использующими отдельные вычислительные функции. Наиболее интересен в прикладном моделировании Matplotlib - универсальное средство визуального моделирования, позволяющее строить графики любого типа и моделировать физические процессы с их помощью. В Matplotlib доступны самые разные виды графиков и диаграмм, а также средства рисования, позволяющие создавать собственные визуализации любой сложности [7].
Рис. 1. Зависимости координаты и скорости от времени - график Matplotlib
Приведём пример решения физической задачи средствами Matplotlib. Пусть задан закон движения y = 3x; требуется найти скорость движения и координату через 3 с. Организуем три кортежа, в которые занесём моменты времени и соответствующие им значения координаты и скорости. Загрузив в методы классов Matplotlib эти списки, получим графики зависимости координаты и скорости от времени (рисунок 1). Из графика скорости мы можем видеть, что скорость движения постоянна, а из графика координаты мы найдем значение координаты через 3 секунды. Данный пример демонстрирует методическую ценность использования математических и графических библиотек Python в образовательном процессе. Благодаря такому интегрированному подходу обучающиеся могут применить свои навыки программирования для решения конкретной практической задачи из области физики.
Matplotlib может быть использован как для простой визуализации процессов, так и для решения задач или создания проектов, требующих автоматизированной
Стрельников С. Н., Верисокин А. Ю., Вервейко Д. В. Математические и графические библиотеки Python как инструмент моделирования физических процессов
визуализации. Рисунок 2 демонстрирует возможность визуализации силовых линий электрического поля.
Рис. 2. Моделирование силовых линий электрического поля в Matplotlib
Математические библиотеки Python являются важным встроенным инструментом других библиотек визуального моделирования. Некоторые не математические средства графической визуализации также могут быть удобным средством моделирования физических процессов. Например, библиотеки Pygame и Pymunk, являясь средствами игровой симуляции, могут быть использованы для визуального изображения физических процессов. Методы соответствующих классов библиотек позволяют создавать графические абстракции с реалистичными физическими свойствами. На рисунке 3 приведён пример симуляции гравитации. Средствами Pygame создано графическое пространство, заданы правила отрисовки объектов, а также настроена логика событий, создающих экземпляры объектов. Pymunk здесь используется как средство рисования графических объектов, и его средствами задаются правила физических взаимодействий объектов: соответствующие методы классов задают координатную систему, правила гравитации, ускорение объектов при падении, правила их столкновений [8].
Математические и графические библиотеки Python могут быть использованы в качестве высокофункционального средства моделирования физических процессов для решения проблем любой специфики: как в научно-исследовательской деятельности для решения задач, требующих сложных вычислений или анализа больших объёмов данных, автоматизации моделирования в случае постоянного изменения физических величин, относящихся к конкретному моделируемому процессу, так и в сфере преподавания физических дисциплин на любом уровне образования. Удобство использования Python, простота его освоения и уникальное сочетание его преимуществ делают Python одним из лучших и наиболее часто используемых инструментов в решении разноплановых проблем в сферах, связанных с физико-математическими и инженерными дисциплинами - в том числе и одним из наиболее удобных инструментов моделирования физических процессов.
*
t
Рис. 3. Визуальное моделирование средствами Pygame и Pymunk
Удобство создания и работы с библиотеками Python предоставляет пользователю возможность самостоятельной разработки новых инструментов. Благодаря этому инструментальная «экосистема» Python постоянно развивается и обладает широчайшими возможностями для решения любых научных задач.
Библиографический список
1. Карташова, Н. А. Python как основной язык программирования в средней школе / Н. А. Карташова. - Текст : электронный // Молодой ученый. - 2019. - № 5 (243). - С. 15-16. - URL: https://moluch.ru/archive/243/56193/ (дата обращения: 24.12.2022).
2. Python: преимущества и недостатки // Советы экспертов. - URL: https://www.goldenpages.ua/expert/?p= 10627 (дата обращения: 27.01.2019)
3. Документация Python : [сайт]. - 2001. - URL: https://docs.python.org (дата обращения: 19.12.22). - Текст : электронный.
4. Документация NymPy : [сайт]. - 2008. - URL: https://numpy.org/doc/stable (дата обращения: 19.12.22). - Текст : электронный.
5. Документация SciPy : [сайт]. - 2008. - URL: https://docs.scipy.org/doc/scipy/ (дата обращения: 19.12.22). - Текст : электронный.
6. Документация Physics SymPy : [сайт]. - 2021. - URL: https://docs.sympy.org/latest/reference/public/physics/index.html (дата обращения: 21.12.22). - Текст : электронный.
7. Документация Matplotlib : [сайт]. - 2002. - URL: https://matplotlib.org/stable/users/index.html (дата обращения: 20.12.22). - Текст : электронный.
8. Библиотека примеров Pymunk : [сайт]. - 2013. - URL: https://www.pymunk.org/en/latest/examples.html (дата обращения: 22.12.22). - Текст : электронный.