MyTetra Share
Делитесь знаниями!
Система компьютерной алгебры Sage - краткие впечатления
Время создания: 09.04.2016 02:08
Текстовые метки: linux, windows, opensource, sage, мудрец, компьютерная алгебра, математика
Раздел: Компьютер - Программное обеспечение - Компьютерная алгебра и математика
Запись: xintrea/mytetra_syncro/master/base/14601569388ccbgvlzs3/text.html на raw.github.com

SageMath (анг. 'Мудрец') — система компьютерной алгебры покрывающая много областей математики, включая алгебру, комбинаторику, вычислительную математику и матанализ. Первая версия SageMath была выпущена 24 февраля 2005 года в виде свободного программного обеспечения с лицензией GNU GPL. Первоначальной целью проекта было "создание открытого программного обеспечения альтернативного системам Magma, Maple, Mathematica, и MATLAB".


Sage тесно связан с языком Python, потому что большая его часть написана на данном языке. И синтаксис математических выражений сильно приближен к синтаксису Питона. Делать интерактивные расчеты в SAGE можно двумя путями:


  • Через консоль, запустив команду sage
  • Через браузер, запустив специальный веб-сервер и зайдя на страницу своего localhost (доступно больше интерактивных и графических возможностей по сравнению с консолью)


Я прошёл с Sage технический ВУЗ, делал модели для диплома. Сейчас в нём же моделирую для диссертации. Сравнивать могу только с поверхностными знаниями Matlab-а. Вот краткий список сравнительных впечатлений (что на ум пришло):

  • Python - самый весомый аргумент «за», как только модель становится более или менее сложной, или начинается какое-то программирование, то преимущество языка программирования над обёрткой к синтаксису матричного калькулятора становится весьма критичным. Особо следует отметить ООП и, например, невозможность в matlab объявить функцию в общем m-файле (надо либо делать отдельный файл с согласованным (sic!) именем, либо использовать static-класс-контейнер). И синтаксис, разумеется. Ну и нумерация массивов с 1.
  • Notebook (ранний jupiter) с подходом «много фрагментов ввод-вывод» удобнее matlab-овского подхода «один большой вход и один большой выход» (хотя в последних версиях они допили возможность выполнять фрагменты «одного большого входа», используя специальную разметку в коде, упакованную в (ха-ха) комментарии).
  • Связка matplotlib + python очень удобна при подготовке графиков. Код, который выдаёт изображение. Для сравнения в matlab так тоже можно делать, но из-за скудности языка boilerplate сплошной будет. Адепты matlab иногда парируют это тем, что мол, сохранение и доводка изображения выполняется вручную в matlab-овском просмотрщике изображений. Да, это удобно сделать один раз, но если потом надо изменить параметры моделирования, то начинается ручная работа.
  • Код Python, который относится непосредственно к программированию модели, можно вынести в модули и работать с ними в любой удобной IDE (у меня это, например, PyCharm). Разумеется, эта ide на порядок будет превосходить встроенный в matlab текстовый редактор.
  • Современный браузер для sage-овского notebook-а - неубиваемый. Python IDE - неубиваемая. Matlab - падучий и виснущий. Ресурсов требует больших, работает гораздо медленнее.
  • Если Matlab как система работает медленее, то вычисления в нём работают так же, или, на моей практике - быстрее (зависит от реализации библиотеки линейной алгебры, но у матлаба она искаропки очень быстрая).
  • Не очень удобно синхронизировать woksheet-ы между машинами.
  • Очень субъективно: matplotlib-овские графики приятнее и аккуратнее matlab-овских выглядят
  • Говорят в matlab-е много хороших библиотек. Наверное, это так, но мне пока в узкой области не доводилось встретить такого, чего не было бы в numpy/scipy
  • Ну и, разумеется, практическое преимущество - sage весит и где-то 1 Gb или 2.5 Gb с ВМ для работы под оффтопиком, а matlab не помню уже, ~ 9 Gb. И разворачиваются они, соответственно - один за считанные минуты, другой будет неспешно распаковываться, полыхая в юзера огнём для солидности. В догонку, matlab порой приходится, гм... «доставать», в отличие от open source.


 
MyTetra Share v.0.65
Яндекс индекс цитирования