Итак, вопрос: есть ли для Linux (*nix) аналоги известных коммерческих математических пакетов? Ответ: есть, более чем.
Небольшая табличка аналогов:
Коммерческий пакет для Windows | Аналог для Linux | Лицензия | Homepage | Комментарии |
---|---|---|---|---|
MathCAD | Symaxx/2 | GPL | symaxx.sf.net | К сожалению, не очень интуитивный интерфейс. Является графическим front-end-ом к Maxima. Написан на Perl/Tk. |
— | MuPAD | Коммерческий | www.mupad.de | Не видел ;) |
Mathematica, Maple | maxima | GPL | maxima.sf.net | Прародитель Mathematica и Maple. |
— | axiom | GPL | axiom-developer.or | g До 2001г. - самая дорогая система компьютерной алгебры (по слухам, порядка $200k). |
— | Mathematica Linux | Коммерческая | wolfram.com | Практически полный аналог своей сестры для Windows, только бывают проблемы со шрифтами |
— | Maple Linux | Коммерческая | maplesoft.com | |
MatLAB | SciLAB | Своя, типа GPL | scilab.com | Почти совместим с MatLAB 5/6 на уровне исходников. |
— | Octave | GPL | octave.org | Нет своего аналога Simulink. Почти совместима с MatLAB. |
— | MatLAB Linux | Коммерческая | mathworks.com | Дороже своей Windows-версии |
Statistica | R | GPL | r-project.org | Мощный язык для статистических вычислений + куча модулей. |
— | OpenDX | GPL | opendx.org | Одна из мощнейших в мире систем визуализации данных. |
И здесь еще не все перечислено… Математического софта под *nix просто море.
Причем интересна его история.
В 50-60-х годах в США на волне интереса к компьютерам начали создавать системы компьютерной алгебры. (в смысле, программы, способные сообразить, что (a+b)2 = a2+2ab+b^2, не зная, что такое a и b). И, конечно, такая софтина нужна была одному мирному американскому ведомству. И это ведомство объявило конкурс на лучшую CAS (Computer Algebra System) для своих нужд, пообещав всяческую поддержку. Конкурс этот выиграл мало кому известный тогда проект Macsyma (CAS, написанная на Lisp). И, получив поддержку, очень неплохо развивался как коммерческий проект года так до 1984. А в 1984 году небезызвестный Richard Stollman объявил о создании FSF и опубликовал первую версию GPL. Услыхав про это, один из отцов-основателей проекта Macsyma заявил руководству (и Пентагону) ультиматум: "либо а) мне передают все наработки проекта, и я паралельно развиваю GPL-версию Macsyma, либо б) я ухожу из проекта". Так как второй вариант означал быстрый распад проекта, Пентагон вынужден был согласиться на первый. Так появилась свободная CAS под названием Maxima. Она развивалась паралельно с Macsyma до начала 1990-х. А в 1991 СССР распался, холодная война кончилась, и Пентагон прекратил финансирование проекта. В 1994 Macsyma прекратила свое развитие. Исходники были частично распроданы, и на их основе вскоре появились Mathematica и Maple. А Maxima продолжает развиваться до сих пор.
С axiom вышла тоже интересная история. Этот проект развивался самостоятельно, и развился в очень мощную и очень дорогую CAS. Однако, организаций, способных заплатить несколько сот тысяч баксов за копию программы, не так уж много. Так что к началу XXI века продажи резко упали (рынок был насыщен), и проект стал коммерчески нерентабельным. Тогда авторы axiom выпустили ее под лицензией GPL.
Maxima и Axiom замечательны уровнем абстракции, который они предоставляют пользователю. Они поддерживают так называемые Rule-based преобразования. Например, можно задать, что "f(A and B)" переходит в "f(A) or f(B)", и CAS сделает преобразование, не задумываясь ни о том, что такое A и B, ни о смысле операций and или or. Это позволяет производить преобразования не только над математическими выражениями, но над чем угодно, что может быть записано в виде формулы.
Изюминка Maxima состоит в большой гибкости синтаксиса. Например, объявив "f(x,y):= x2-y2", можно объявть f инфиксным оператором и писать далее вместо "f(x,y)" - "x f y".
У Axiom тоже есть свои изюминки. Во-первых, это язык с очень мощной и простой системой типов. Например, можно объявить "A: List Matrix Rational Polynomial Complex" - "пусть А - это список матриц из дробей, числителями и знаменателями которых являются многочлены над комплексными числами". Во-вторых, поддерживаются весьма абстрактные операции из области абстрактной алгебры и теории чисел. "Приведение многочленов над полем Галуа" - слышали про такое? Криптоаналитики слышат каждый день. А в Axiom для этого есть встроенная функция. В-третьих, Axiom имеет очень интересный алгоритм вычисления интегралов. Большинство CAS, встретив слишком сложный для них интеграл, просто оставляют его как есть. Это у них означает "Либо интеграл не берется в элементарных функциях вообще, либо я просто не знаю, как его брать". Axiom выдаст интеграл как был только в том случае, когда может математически доказать, что взять его в элементарных функциях невозможно.
Из CAS под Linux можно упомянуть еще yacas, yorick и GAP. Все это свободный софт.
GAP - совершенно замечательная система. Ее название - аббревиатура, расшифровывается как "Groups, Alghorithms and Programming". Это изначально свободный (GPL) проект создания модульной системы для абстрактной алгебры. На сегодняшний день это мощнейшая из систем такого рода (в том числе и коммерческих). Здесь "поле", "кольцо", "группа" - это типы данных, а "вычисление идеала банаховой алгебры" - стандартная функция.
Ну ладно, CAS обсудили, поехали к "числодробилкам" (системам численных вычислений). Из коммерческих продуктов здесь на ум сразу приходит MatLAB. Это очень дорогая система. В том составе, в котором мы привыкли видеть ее на пиратских дисках, она стоит что-то от $40k "студенческая лицензия" (т.е. с правом установки на один компьютер один раз, без тех.поддержки) до $60k Enterprise Edition.
Проект SciLAB появился как коммерческий, но более дешевый конкурент MatLAB-a. Коммерчески проект себя не оправдал, и исходники открыли. Лицензия - "почти GPL", но с изменениями, направленными на то, чтобы затруднить появление многочисленных мало совместимых версий. Эта программа почти полностью совмекстима с MatLAB на уровне исходных текстов (m-файлов). Здесь есть даже аналог Simulink - средства визуального проектирования математических моделей.
Octave появился как "чисто GNU GPL" конкурент SciLAB-a. На сегодняшний день во многом совместима с MatLAB-ом, но нет аналога Simulink.
Из этой же серии можно отметить Tela - "interactive tensor language". Замечателен pascal-подобным синтаксисом.
Остались только программы для статистиков.
В качестве функциональной замены системы Statistica можно посоветовать язык статистических вычислений R. Это очень мощный язык, плюс к нему написаны десятки модулей для конкретных задач (кластерный анализ, финансовый инженеринг, распределенные вычисления…).
Для визуализации численных данных ученые всего мира используют OpenDX. Изначально это недешевый продукт IBM (dx - data explorer), однако исходники открыли, сейчас это GPL-проект. Считается мощнейшей системой в своем классе.
Материалы собраны по всему Интернету, плюс личный опыт общения с CAS и числодробилками.
Last updated 02-May-2006 21:51:13 YEKST
Огромное спасибо за статью! Просто блеск!
ОтветитьУдалитьМои 5 копеек: http://oal.livejournal.com/437775.html
ОтветитьУдалитьСпасибо за дополнение.
ОтветитьУдалитьВау и мне понравилась статья. Советую Вам ее на http://habrahabr.ru опубликовать!!!
ОтветитьУдалитьСпасибо за статью
ОтветитьУдалить+1. Огромное спасибо!
ОтветитьУдалить+1, было ползено прочитать!
ОтветитьУдалитьСпасибо! Крайне полезная статья! Особенно для новичков в линукс=)
ОтветитьУдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалитьОчень интересно! Спасибо!
ОтветитьУдалитьДля эконометрики есть также консольная версия Ox (www.doornik.com). Академическое использование бесплатно.
ОтветитьУдалитьЭтот комментарий был удален администратором блога.
ОтветитьУдалитьСпасибо за статью: я сразу получил прямые ответы на свои вопросы.
ОтветитьУдалить+1
ОтветитьУдалитьСпасибо. Кстати, на этом хоть и молодом сайте оказывают реальную помощь в решении задач и примеров, а также подготовке к ЕГЭ.
ОтветитьУдалитьhttp://5matem.ru/