Mathics — система компьютерной алгебры (CAS) общего назначения, которая предлагает свободную альтернативу. В то же время эта легковесная система не претендует на полную функциональность Mathematica и её продвинутого языка программирования Wolfram Language (WL). Если посмотреть на примеры сниппетов WL, то вряд ли возможно создать эти поразительные программы в Mathics с такой же лёгкостью и лаконичностью. Например, такой однострочник из 100 символов генерирует карту солнечного освещения Земли на указанную дату и время путём наложения полупрозрачной формы ночного полушария на рельефную карту.
На Mathics такое не получится, как и многие другие примеры из этого списка тоже не сработают. Вообще, для Wolfram Language (WL) практически невозможно создать полноценный интерпретатор с открытым исходным кодом, потому что многие встроенные решатели являются проприетарной собственностью компании Вольфрама. Однако попытаться можно.
Mathics работает на различных питоновских библиотеках, на которых реализован Mathematica-совместимый синтаксис. Некоторые примеры синтаксиса показаны в этом маленьком скринкасте из консольного клиента mathicsscript:
Консольный клиент mathicsscript — один из модулей Mathics. Здесь реализована модульная система, из которой можно выбрать и установить только избранные модули. Только ядро нужно установить в любом случае, его репозиторий mathics-core на GitHub.
Список модулей:
- Mathics-Scanner (таблицы символов WL и сканер Mathics)
- mathicsscript (консольный интерфейс)
- mathics-pygments (подстветка синтаксиса WL)
- Mathics-Django (HTTP-сервер на Django), на КДПВ показан пример выдачи такого сервера с визуализацией графики через Three.js. Поддерживается язык математической разметки MathML. Подробная интерактивная документация на Ajax
- mathics-threejs-backend (рендеринг 3D-графики с помощью Three.js)
- pymathics-natlang (расширение для обработки естественного языка)
- pymathics-graph (расширение для графики на базе NetworkX)
- справочное руководство
Полный набор содержит множество различных компонентов, и каждый из них имеет свои собственные зависимости. Кроме того, растёт число сторонних дополнений к Mathics.
Проще всего установить Mathics из образа Docker:
docker pull mathicsorg/mathics
Чтобы установить всё локально без Docker, нужно поставить питоновский пакет Mathics-omnibus из репозитория PyPi. Указанный пакет включают все перечисленные выше модули.
Конечно, до функциональности и блеска Mathematica этой системе очень далеко, но как бесплатный вариант в некоторых ситуациях Mathics может выручить.