🛠
Julia, MATLAB и Python в одной инженерной среде
В инженерных командах редко бывает так, что все работают на одном языке. Где-то исторически остался MATLAB, новые алгоритмы пишутся на Julia, а для анализа данных и сторонних библиотек используется Python.
Но какой язык лучше выбрать для вычислений? Хорошая новость в том, что в Engee ничего из этого выбирать не нужно.
Все три языка могут работать вместе.Недавно мы подготовили три материала, посвящённых этой теме.
➡️ Сравнение синтаксиса Julia, MATLAB и PythonЕсли приходится регулярно переключаться между языками, постоянно ловишь себя на мысли: "А как это пишется в MATLAB? А как в Python?"
Мы собрали для вас наиболее часто используемые конструкции в одном месте: работа с массивами и матрицами, линейная алгебра, функции, словари, исключения, ввод-вывод и многое другое. Пользуйтесь!
Например:
Поэлементное умножение
Julia: A .* B
MATLAB: A .* B
Python: A * B
Матричное умножение
Julia: A * B
MATLAB: A * B
Python: A @ B
Логическая индексация
Julia: A[A .> 0]
MATLAB: A(A>0)
Python: A[A>0]
➡️ Интеграция Julia, MATLAB и PythonСамое интересное — языки можно использовать совместно.
Например, передать массив из Julia в MATLAB:
x = rand(1000)
@mput x
mat"""
y = fft(x);
"""
@mget y
Или сразу обратиться к библиотеке NumPy:
np = pyimport("numpy")
np.mean(y)
В опубликованном проекте показана полноценная цепочка вычислений: Julia формирует исходные данные, MATLAB выполняет быстрое преобразование Фурье, Python анализирует результат через NumPy, после чего данные возвращаются обратно в Julia. Всё это происходит внутри одного проекта без экспорта файлов и ручной конвертации данных.
➡️ А что по производительности?Заодно решили сравнить Julia, MATLAB и Python на нескольких типовых инженерных задачах.
В тест вошли:
• векторные вычисления на массивах из
10⁷ элементов;
• умножение матриц
5000×5000;• решение СЛАУ размерностью
8000×8000;
• быстрое преобразование Фурье для
10⁷ отсчётов;
• численное интегрирование;
• метод Монте-Карло;
• решение уравнения теплопроводности.
Картина получилась вполне ожидаемой:🔹На линейной алгебре Julia и MATLAB работают практически одинаково — обе используют высокооптимизированные BLAS/LAPACK.
🔹А вот там, где начинается большое количество последовательных вычислений — циклы, Монте-Карло, численные схемы, — Julia начинает заметно уходить вперёд. В некоторых задачах преимущество над MATLAB достигает порядка, а над Python — нескольких порядков.
Если вам интересны Julia, MATLAB или Python в инженерных расчётах — рекомендуем посмотреть все три материала. Они хорошо дополняют друг друга: сначала можно быстро найти нужную конструкцию, затем разобраться с интеграцией языков, а после посмотреть, как они ведут себя на реальных вычислительных задачах.
📎
Все материалы уже доступны в каталоге проектов сообщества Engee:
•
Cравнение синтаксиса Julia, MATLAB и Python
•
Интеграция Julia, MATLAB и Python
•
Тестирование производительности: Julia, MATLAB, Python