Документация Engee

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: Автоматическое дифференцирование обратного режима преобразования исходного текста в исходный код

    • Автоматизированное отслеживание кода и построение уравнений обратного распространения

    • Построения с функциональностью символьных преобразований и упрощений