Мировые новости

Mathics — бесплатная альтернатива Mathematica

Многие студенты, школьники, инженеры и учёные пользуются великолепными вычислительными инструментами Wolfram|Alpha (онлайн), и Wolfram Mathematica от Стивена Вольфрама. К сожалению, Wolfram Mathematica — очень дорогой пакет даже для личного и любительского использования. Однако мало кто знает, что существует совершенно бесплатная альтернатива под названием Mathics (на КДПВ). 

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 может выручить.