Symbolics.jl
Symbolics.jl — это быстрая и современная система компьютерной алгебры (CAS) для быстрого и современного языка программирования (Julia). Цель заключается в создании высокопроизводительной и распараллеленной системы символьной алгебры, которая может напрямую расширяться на том же языке, с которым работает пользователь.
Цитирование
Если вы используете Symbolics.jl, приводите цитаты из этой статьи.
@article{gowda2021high, title={High-performance symbolic-numerics via multiple dispatch}, author={Gowda, Shashi and Ma, Yingbo and Cheli, Alessandro and Gwozdz, Maja and Shah, Viral B and Edelman, Alan and Rackauckas, Christopher}, journal={arXiv preprint arXiv:2105.03949}, year={2021} }
Сводка по функциям
Поскольку Symbolics.jl встроен в язык Julia и работает с его диспетчеризацией, универсальные функции в Base Julia будут работать с символьными выражениями. Создайте матрицы символьных выражений и перемножьте их — и это будет работать. Используйте LU-разложение. И т. д. Большой список функциональных возможностей, доступных в Symbolics.jl, см. в документации по Julia.
Далее приводится общий список функций:
-
Символьная арифметика с информацией о типе и множественной диспетчеризацией
-
Символьные многочлены и тригонометрические функции
-
Сопоставление шаблонов, упрощение и подстановка
-
Дифференцирование
-
Символьная линейная алгебра (разложения, инверсия, детерминанты, вычисление собственных значений и т. д.)
-
Дискретная математика (представление суммирований, произведений, биномиальных коэффициентов и т. д.)
-
Логические выражения
-
Решение символьных уравнений и преобразование к произвольной точности
-
Поддержка нестандартных алгебр (некоммутативные символы и настраиваемые наборы правил)
-
Специальные функции (список приводится в SpecialFunctions.jl)
-
Автоматическое преобразование кода Julia в символьный код
-
Генерирование (высокопроизводительных и параллельных) функций из символьных выражений
-
Быстрое автоматическое определение разреженности и генерирование разреженных якобианов и гессианов
и многое другое.
Пакеты расширений
Ниже приводится список известных пакетов расширений. Если вы хотите, чтобы ваш пакет появился в этом списке, откройте запрос на вытягивание.
-
ModelingToolkit.jl: Символьные представления распространенных числовых систем
-
Обыкновенные дифференциальные уравнения
-
Стохастические дифференциальные уравнения
-
Частные дифференциальные уравнения
-
Нелинейные системы
-
Задачи оптимизации
-
Оптимальное управление
-
Причинное и непричинное моделирование (Simulink/Modelica)
-
Автоматизированное преобразование, упрощение и композиция моделей
-
-
Catalyst.jl: Символьные представления химических реакций
-
Символьное построение и представление больших систем химических реакций
-
Генерация кода для ODE, SDE, непрерывных цепей Маркова и т. д.
-
Имитация моделей с помощью экосистемы SciML с использованием методов Гиллеспи O(1)
-
-
DataDrivenDiffEq.jl: Автоматическое определение уравнений на основе данных
-
Автоматизированное построение ODE и DAE на основе данных
-
Представления операторов Купмана и динамическая декомпозиция режима (DMD)
-
-
SymbolicRegression.jl: Распределенная высокопроизводительная символьная регрессия
-
Распараллеленные универсальные алгоритмы для нахождения уравнений на основе данных
-
Категоризация на основе границ Парето
-
-
ReversePropagation.jl: Автоматическое дифференцирование обратного режима преобразования исходного текста в исходный код
-
Автоматизированное отслеживание кода и построение уравнений обратного распространения
-
Построения с функциональностью символьных преобразований и упрощений
-