2025-07-15
Genre: reports
Университет дает возможность для образования и реализации, а не гарантирует их. Одним из способов эти возможности раскрыть - делать то, что полезно и интересно. Для меня такой вещью является, например, программирование, в котором я нахожу возможность сделать больше, понять глубже, а иногда и получить что-то элегантное и красивое.
Студенту-энергетику может быть полезна возможность проводить вычисления с ветвлением, графико-аналитическими элементами, которые будут наглядным, воспроизводимыми и производительными. Такие возможности предоставляет инфраструктура разных языков программирования, из которых мой выбор пал на Julia.
В качестве языка для выполнения вычислений julia подходит хорошо. Это компилируемый язык, созданный специально для научных вычислений, можно воспринимать его как современную замену matlab. Преимущества у него следующие:
phi_2-opt
. Читать и демонстрировать такой код гораздо проще! Характеристика системы регулирования, изображённая Makie.jl
Экосистема julia очень свободная - несмотря на то, что язык компилируемый, он не предназначен для распространения бинарников - как и готовые программы, так и пакеты (библиотеки) в нем распространяются как исходный код.
Существует две экосистемы для построения графиков - Makie.jl и Plots.jl.
Первый инструмент более совершенный в плане качества создаваемой картинки, её "красоты", но иногда бывает сложен в работе. Помимо прочего, этот пакет позволяет создавать анимации, показывая результат работы симуляций.
Второй инструмент представляет из себя классическую библиотеку для графиков, очень похож на matplotlib. Имеет несколько бэкендов, одним из которых matplotlib и является.
Используя DifferentialEquations.jl можно численно решать системы дифференциальных уравнений. Пример можно найти по ссылке на рисунке выше.
Существует множество пакетов, например, Ferrite.jl, предназначенный для поиска статических напряжений в твёрдых телах (и эластомеров).
Для симуляции жидкости и газа можно использовать WaterLily.jl и IncompressibleNavierStokes.jl.
Дорожка Кармана на логотипе Julia, симулируемая Waterlily.jl и визуализированная Makie.jl
На этом моменте я бы остановился подробно, поскольку это очень хороший и дружелюбный способ взаимодействовать с языком и организовать код. Прообразом этой среды является Jupyter, от которого, впрочем, Pluto отличается довольно сильно.
Pluto имеет интерфейс в браузере, но работает на компьютере локально - интернет ему не нужен.
Эта среда представляет из себя клетки, в которых следует писать код разделённый по функциям - то есть по смыслу. Клетки можно удалять, скрывать перемещать. Результат работы одной клетки видят другие, причем они знают, окуда он пришёл, и если обновится клетка от которой зависят другие, то они также обновятся. Разделение на клетки позволяет легко изменять и визуализировать код, получать промежуточные результаты, не путаться в структуре вычислений, заменять их части.
В Pluto легко ставить пакеты - их не нужно устанавливать, нужно лишь написать в первом блоке using ИМЯ
. После этого нужно подождать существенное время, когда пакет будет компилироваться. Таким способом происходит установка на каждую доску по отдельности, а не в систему в целом.
Pluto поддерживает также письмо юникодом - например, если хочется написать греческую букву альфа, нужно написать \alp
(\
и первые несколько букв, если написать одну - будет многовато вариантов) и нажать TAB, после чего выпадет список с подсказками, выбор варианта из которого свернет предыдущий escape-code до нужного символа. Для того чтобы написать подстрочный символ, нужно написать \_a
.
Для работы достаточно скачать компилятор языка здесь, в интерфейс которого можно попасть командой julia в терминале. Этот интерфейс - REPL - Read Evaluate Print Loop - читает команду, выполняет ее и возвращает результат. Его можно использовать для простых вычислений, например, как калькулятор, а также им управляется пакетный менеджер языка и настройки среды. Из него же можно запускать уже написанные программы. В целом, это не удобно ни для чего, кроме установки пакетов.
Интерфейс компилятора - Julia REPL
Для установки пакетов нужно так или иначе вызвать местный пакетный менеджер (например, нажать в интерфейсе компилятора ]
) и написать add ИМЯ
. В принципе, из пакетов можно поставить только Pluto, а всё остальное ставить уже на доски.