Журнал LinuxFormat - перейти на главную

LXF109:Сравнение

Материал из Linuxformat
Версия от 13:50, 4 декабря 2009; Crazy Rebel (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск
Каждый месяц мы сравниваем тысячи программ – а вы можете отдыхать!

Содержание

Сравнение Числодробилки

Когда ни бумага с карандашом, ни калькулятор не справляются с расчетами, Уилл Трибби обращается к одной из математических программ.

В старые времена (1980-е) студентам ВУЗов разрешалось производить вычисления, расчеты линейной алгебры и т.п. с помощью калькуляторов – но не для всего, поскольку в основном полагались достаточными бумага и карандаш, а калькуляторы допускались лишь в особо сложных случаях. Аспиранты переходили уже к написанию собственных программ для численных расчетов, просиживая долгие часы перед терминалом за отладкой кода. Но был способ и получше.

То, что начиналось как библиотеки функций для решения численных задач, развилось в мощные, интерактивные и программируемые инструменты, «перемалывающие» сложные математические и инженерные проблемы за несколько минут. Эти платформы численных расчетов сегодня являются рабочими лошадками ученых и инженеров. Они используются практически в любой области современной науки и техники для управления данными, анализа и визуализации.

Золотой стандарт

Среди рассматриваемых здесь платформ, Matlab является золотым стандартом, с которым сравниваются все остальные инструменты. Это сравнение кажется неизбежным для любой платформы численных расчетов, свободной или нет. Однако, по сравнению с ними, Matlab имеет огромный недостаток – дороговизну. Выбор в пользу Matlab зависит от того, много ли дополнений вам нужно и готовы ли вы платить за них. Тем из нас, кто ограничен бюджетом, без мощной и свободной замены не обойтись.

При поиске альтернатив Matlab, две были уже наготове: Scilab и Octave. Обнаружение еще двух потребовало просеивания web-сайтов существующих проектов. Программы с последним обновлением старше года не рассматривались. В обзор попали наиболее обещающие и интересные решения, чьи сайты проявляют активность.

Про наш тест...

У платформ численных расчетов, включенных в это Сравнение, много общих функций. Значение имеет и производительность алгоритмов, что важно при работе с большими объемами данных.

Оценка выводилась по следующим факторам: простота установки, интерфейс пользователя, документация, поддержка сообщества и доступные инструменты. Производительность алгоритмов проверялась путем вычисления разложения по особым значениям (SVD) и по 100-кратному вычислению быстрого преобразования Фурье (FFT, БПФ) для матрицы действительных чисел размера 500х500, и вычисления среднего и стандартного отклонения этих ста попыток.

Тестирование проводилось на ноутбуке HP Pavilion dv5040us с процессором AMD 2,2 ГГц и ОЗУ 2ГБ, работающем под управлением Kubuntu 8.04. Все программы, кроме Matlab и Euler Math Toolbox, перед тестированием компилировались на ноутбуке.

Matlab

Когда вы заслужиаете (и можете позволить) самого лучшего.

Matlab в завидном положении: все прочие лишь догоняют его, поскольку это основная вычислительная платформа, используемая большинством ученых мира и технических сообществ. Matlab включен в технические и математические курсы многих университетов, разносящих его репутацию также и за свои пределы. Немного поработав в среде Matlab, вы понимаете, почему Matlab устанавливает планку, до которой другим прыгать и прыгать.

Прежде всего, Matlab предоставляет современную IDE для выполнения вашей работы. В ней есть окно команд, окно истории команд и менеджер файлов. Команды помечаются временем и датой, и вы можете выбрать команду или группу команд в окне истории, чтобы выполнить их вновь. Вероятно, тем, кто собирается создавать лишь мелкие приложения в несколько файлов, IDE не так уж и важна. В противном случае –это большой плюс. Matlab часто используют для создания больших и сложных приложений, требующих управления кодом. Ни одна из рассматриваемых в обзоре платформ и близко не подошла к IDE вроде той, что есть в Matlab.

Матричный язык Matlab легок в изучении, и, освоившись с векторами и матрицами, вы сочтете его очень естественным. Несложные матричные операции, требующие нескольких операторов, или запутанные перемножения, подразумевающие целую программу, могут выполняться совместно в одной строке кода. Базовая версия Matlab поставляется с умопомрачительным набором математических функций, с которым остальные продукты стараются идти в ногу. Не так давно в Matlab было добавлено объектно-ориентированное программирование, и это также возвышает его над большинством других платформ обзора. Данный функционал может облегчить создание больших и сложных приложений для тех, кто предпочитает объектно-ориентированный подход. Matlab также может сразу оснастить ваши приложения графическим интерфейсом, что делает разработку более последовательной, чем при добавлении его позднее.

Да он еще и быстр

Производительность – та область, где Matlab трудно удержать лидерство. В SVD-тесте – разложении матриц, важном для многих статистических и численных алгоритмов – производительность Matlab лишь на 20% больше, чем в Scilab или Octave. Удивительно то, что алгоритм Numpy, используемый в Sage, был в среднем быстрее Matlab на 250%. Он не включен в настоящее сравнение, но такое разительное отличие показывает, что в библиотеке Numpy для Python производительности уделено больше внимания. Зато Matlab победил в быстром преобразовании Фурье.

Следует отметить, что измерение производительности зависит от целого ряда факторов и для достоверности требует многокраных повторений. Наши измерения проведены лишь в целях относительного сравнения. Даже отличие в долях секунды может стать убийственным, когда объем вычислений становится больше или требуются тысячи повторений. Однако для небольших приложений или задач эти отличия производительности могут никогда и не возникнуть.

Еще один плюс Matlab – множество пакетов расширений (Toolbox), доступных в виде дополнительных надстроек для базового продукта Matlab. Они покрывают специфические области применения, вроде обработки изображений, вычислительной биологии и экономического моделирования и анализа, и сберегают кучу времени, когда нужен немедленный результат без изобретения велосипеда. MathWorks, изготовитель Matlab, поддерживает в сети сообщество пользователей, где они обмениваются кодом и помогают друг другу. Хотя некоторые другие платформы предоставляют пакеты расширений в стиле Matlab, доступные варианты в Matlab отлажены лучше, чем имеющиеся для свободных платформ.

Дорогое удовольствие

Matlab – потрясающий продукт, и после его тестирования для обзора мы очень расстроились, обнаружив, что он поставляется по заоблачной цене и с ежегодным взносом после первых 12 месяцев. Использование Matlab вне работы или университета, вероятно, чересчур дорого для большинства людей. Многие малые компании сочтут стоимость Matlab, при наличии свободных альтернатив, неоправданной – конечно, если только они не разрабатывают дополнения или сервисы для Matlab. Matlab – очевидный выбор для платформы численных расчетов, если вы можете его себе позволить и вам не нужна открытая лицензия. Иначе уж лучше обойтись чем-то свободным.

Книги

Для любителей пачек бумаги, испещренных черными закорючками, налицо огромный выбор. Если, зайдя в своей любимый магазин в сети, вы поищете книги, описывающие Matlab, вас ими просто завалят. Некоторые учебники по Matlab заодно описывают Scilab и Octave, но есть книги и исключительно о них. Часть книг просто дублирует документацию или учебники из сети, и иногда это удобно – особенно если вы хотите почитать в местах, где ваш ноутбук может быть в опасности. Единственная описываемая платформа, для которой мы не нашли книг – Euler Math Toolbox.

Octave

Естественно, есть GNU-альтернатива…

Начавшись как побочная идея работы инженеров-химиков в 1988 году, Octave вырос в сильную и недорогую копию Matlab, одну из наиболее известных свободных альтернатив Matlab с открытым кодом, и ныне старается добиться возможно лучшей совместимости с Matlab. Сайт Octave содержит подсказки по совместному использованию файлов пользователями Octave и Matlab.

На нашем тестовом ноутбуке Octave собрался и установился без сучка, без задоринки. Он запускается в окне оболочки, создающем ощущение некоторой пустоты. Однако, покопавшись, мы обнаружили на http://sourceforge.net проект Octclipse. Описание на сайте скудное, но, судя по названию и краткой справке, он основан на открытой IDE Eclipse. QtOctave – другая оболочка для Octave. Таким образом, вы можете заполучить IDE для вашего Octave, но это потребует дополнительных поисков и сборки. Однако, если одна IDE вам не понравилась, всегда можно попробовать другую.

Между базовым языком матриц Octave и языком Matlab имеются некоторые отличия. Для многих файлов программ совместимость – не проблема, но может стать таковой с добавлением объектно-ориентированного программирования в Matlab, если большинство пользователей возжелают эту функцию. В Wiki Octave имеется список функций последней версии Matlab (R2008a), отсутствующих в Octave; часть перечня, касающаяся объектов, содержит 50 пунктов. Если многие пользователи обзаведутся объектно-ориентированным Matlab – прощай, совместимость.

Теперь о хорошем: сайт проекта приводит список уникальных функций Octave. Одна из них – определение функций прямо в строке [inline]. При работе в командном окне данная функция облегчает паковку повторяющихся шагов более выгодным способом, чем написание и сохранение файла программы. В Matlab этого сделать нельзя. Другая приятная функция – использование одиночных или двойных кавычек для определения строк, как делается в Python. Еще одно действие, выполнимое в Octave, но не в Matlab – использование символа # для комментариев. То есть, размещение #! ./usr/bin/Octave -q в начале файла программы приведет к тому, что оболочка выберет Octave для ее запуска; тут просматриваются интересные варианты использования при развертывании приложений. Эти небольшие отличия могут показаться незначительными, но, вероятно, они были добавлены по велению сообщества Octave. Проекты вроде Octave более отзывчивы к запросам пользователей, чем корпоративный элемент вроде The MathWorks.

Приличная скорость

Было бы весьма печально, если бы выбор между свободной и проприетарной платформами означал провал в скорости ваших вычислений. Но Octave – не тот случай: он показал 80% производительности Matlab в тесте SVD и около половины скорости в тесте FFT. При вычислении FFT разница измеряется сотыми долями секунды. Неясно, что внутри Matlab отличает его от Octave (а также Scilab) и позволяет выжать эти сотые. Обнаружение мелких отличий и их ликвидация не проще поиска иголки в стоге сена, так как они обуславливаются множеством факторов, вроде использования памяти, загрузки процессора в момент тестирования, структуры данных и т.д. Главное, что производительность Octave более чем адекватна для любой задачи разумного объема.

На сайте http://octave.sourceforge.net вы найдете дополнительные пакеты для использования в Octave, являющиеся Octave-эквивалентами пакетов расширений (Toolbox) Matlab. Список весьма обширен, а охватываемые предметные области столь же многочисленны, что и для пакетов расширений Matlab. Широкий выбор специализированного кода, который можно получить и использовать без оплаты, в значительной степени обуславливает мощь свободного и открытого ПО. Для пользователей, ценящих свободу и выбор, Octave – образцовый проект.

Статистика

Если ваши интересы – в сфере статистических расчетов, возможно, вам стоит обратить внимание на проект GNU R, задуманный как свободное воплощение языка S, который разработан в бывшей Bell Laboratories (ныне Lucent Technologies). R для S – то же, что Octave для Matlab, но сосредоточен на статистике. R предоставляет удобные программы статистической обработки данных и построение статистических диаграмм и графиков, способных потребовать значительного кодирования даже на языке матриц вроде Octave. R можно найти по адресу http://www.r-project.org, а учебник по R можно найти на страницах LXF

Sage

Когда нужна серьезная математика.

Sage – это больше, нежели платформа численных расчетов. Да, она оперирует числами, но также и алгебраическими символами, и это весьма подходящая система для выполнения расчетов и аналитических вычислений, а также для исследований в области криптографии, теории чисел, графов и еще кое-чего.

Sage несколько отличается от других платформ нашего обзора – тем, что использует Python, а не собственный язык программирования. Для некоторых пользователей это будет весьма привлекательным, поскольку если вы уже знаете и любите Python, то вам не нужно учить другой язык. В тестах производительности SVD и FFT, Sage (с использованием библиотеки Python Numpy) не уступает Scilab и Octave, причем в первом случае скорость была просто поразительной – с приличным отрывом от Matlab.

Sage – относительный новичок в данной группе, но использует приложения, родившиеся много лет назад. Например, Maxima. Maxima в виде своего предка системы компьютерной алгебры Macsyma изначально была разработана в Массачусетском Технологическом Институте в конце 1960-х. Maxima и другие компоненты Sage – это эклектичная смесь математического ПО.

Делиться надо

Одна из похвальных целей проекта Sage – организовать удобный обмен математическими идеями, а одним из способов достичь ее является использование текстового редактора с web-интерфейсом. Вы можете вводить команды в консоли, предоставляемой web-приложением Sage, а затем выполнять их. Это очень похоже на записи в математическом сетевом блокноте. Ваши блокноты могут быть сохранены или выложены для общественности, что дает множество позитивных последствий в обучении и совместных исследованиях. Sage можно попробовать без необходимости его сборки и установки, перейдя по адресу http://www.sagenb.org, зарегистрировавшись под свободной учетной записью и создав свой блокнот.

Euler Math Toolbox

Если вы хотите сохранить что-то для себя.

Euler Math Toolbox (EMT) заявляет о схожести с Matlab, но не желает быть его клоном. Он создан как математическая лаборатория, но после его использования у нас сложилось мнение, что это скорее персональный инструмент. Понятно, файлы блокнота EMT можно сохранять и публиковать, как любые другие, но мы бы не стали строить на них приложение.

Кардинальное отличие EMT – то, что это не приложение Linux. Да, есть Linux-версия кода, из которой можно собрать весьма ограниченную редакцию EMT. Для желающих воспользоваться всеми возможностями EMT, на web-сайте рассказано, как запустить его под Wine. Интересное предложение – именно так мы и поступили. В версии Wine Kubuntu 8.04 EMT устанавливается без проблем. Вопрос в том, как его запустить.

Как вы могли предвидеть, производительность EMT при запуске в Wine не столь велика. Расчет SVD был вчетверо дольше, чем в Scilab и Octave. Тест FFT был выполнен не на матрице 500х500, а для вектора из 262 144 действительных чисел. Отметим, что это степень двойки; это говорит о том, что алгоритм БПФ не предназначен для размерностей более единицы, и что о создании массива данных с длиной, равной степени двойки, обязан позаботиться пользователь.

Светлая сторона

EMT заполняет определенную нишу, которую, вероятно, игнорируют Matlab, Scilab и Octave. Хотя Sage в какой-то мере может быть тем, чего ищут жаждущие простого инструмента для изучения принципов математики или для выполнения домашних работ, EMT особенно подходит для таких личных численных вычислений. Для символьных вычислений он использует те же функции Maxima, что и Sage. EMT – прекрасный выбор, когда вам необходимо что-то не столь всеобъемлющее, но все еще действенное.

Scilab

Scilab на одной прямой с Matlab.

Многие платформы численных расчетов в нашем обзоре были созданы и поддерживаются или отдельными лицами, или небольшой группой с мечтой о свободной альтернативе Matlab с открытым кодом. Scilab – пример платформы, уже несколько лет развиваемой усилиями большого управляющего комитета – Консорциума Scilab. Он включает в себя 25 корпораций и образовательных учреждений и управляется комитетом и научным советом. Вы можете думать об эффективности подобных структур что хотите, но данная команда великолепно поработала над Scilab. Территориально Консорциум Scilab находится в INRIA (Французском Национальном Институте Исследований в Компьютерных Науках и Управлении).

Среди всех рассмотренных не-Matlab приложений, Scilab подошел ближе всех к замене Matlab. Во-первых, хотя в Scilab нет того, что можно точно назвать IDE, окно команд связано с редактором, где можно разрабатывать и отлаживать функции. Многие действия, доступные в IDE Matlab, имеются или в окне команд, или в редакторе Scilab.

Он – не клон

Следует также отметить, что Scilab не разрабатывался как клон Matlab. На страницах wiki Scilab есть раздел о процессе переноса файлов из Matlab, а в справке Scilab – раздел с советами по преобразованию Matlab–Scilab. Одна из страниц wiki Scilab заверяет, что портирование пакетов расширений Matlab в Scilab не потребует больших трудов.

Заглянув в справку на web-сайте Scilab, вы обнаружите не только впечатляющий список встроенных функций, но также несколько встроенных пакетов расширений (Toolbox). Они охватывают часть предметных областей, содержащихся в пакетах расширений Matlab, и описываются в справке отдельно от пользовательских, что дает повод считать их включенными в поддерживаемую кодовую базу, как и в Matlab.

Одно из расширений Scilab не имеет аналога в Matlab: это пакет Metanet для графов и сетей. Демо этого инструмента описывает планирование маршрута в парижском метро. Вы выбираете исходную и конечную станции, а инструмент отобразит линии метро, кратчайший маршрут вашего путешествия, а также список пересадок и общее время. Тем, кто изучает теории графов и сетей, этот инструмент может сберечь много времени.


У Scilab есть неожиданный козырь, отсутствующий у других соперников: Scicos, инструмент визуального моделирования. Scicos позволяет пользователю визуально создать систему, которую затем можно динамически имитировать. Это очень мощный инструмент, и его наличие в Scilab поднимает данный продукт над остальными платформами. Для среднего пользователя Scicos очень труден в изучении, но освоившись с ним, приобретаешь увеличение производительности и глубокое понимание разработки и моделирования систем. Scicos – свободный аналог продукта Simulink компании MathWorks, приобретаемого отдельно от Matalab. Scilab и Scicos, быть может, не столь блестящи, как Matlab и Simulink, но это серьезные конкуренты, которых стоит принять во внимание.

Великолепная пятерка

В этом обзоре использовалась версия Scilab 4.1.2. На момент написания, Scilab близок к выпуску долгожданной версии 5.0 – она объединит несколько важных архитектурных изменений, нацеленных на улучшение интерфейса пользователя. Мы загрузили ранний релиз-кандидат и обнаружили новый редактор переменных в меню окна команд. Он позволяет видеть определяемые переменные графически и легко изменять их значения. Похоже, эта возможность будет востребована. В архитектуру новой версии входит и Java: она используется в интерфейсе и взаимодействии с OpenGL.

Вердикт

Scilab 9/10

Scilab содержит массу доводов в свою пользу: пакеты расширений, визуальное моделирование систем и имитацию, а также количество встроенных функций, которым легко найти соответствие в Matlab (мы имеем в виду число функций, а не их совместимость). Scilab подобрался к Matlab ближе, чем все остальные. Отчасти это может быть обусловлено тем преимуществом платформы Scilab, что она получает финансирование, которого нет у других проектов (а если есть, то гораздо скуднее). Благодаря глубине и широте своей функциональности, платформа Scilab достигает финишной ленты на несколько корпусов впереди ближайшего преследователя.

Отсутствие хорошей IDE в Scilab можно рассматривать как черный шар, но нас более заботит его не совсем свободная лицензия. Не похоже, что в версии 5 будет какая-то IDE, но в разделе для разработчиков сайта Scilab есть заявление, что версия 5 будет выпущена под известной свободной лицензией – может, все-таки GPL? Помимо улучшения архитектуры, смена лицензии будет большим шагом вперед.

Octave получает «серебро». Если вы закоренелый пользователь GNU или хотите быть частью проекта, в который легко сделать свой вклад, то не ошибетесь, выбрав прочную основу функциональности Octave, дополненную пакетами пользователей. Хотя для Octave имеется несколько IDE, проекту имеет смысл выбрать одну или создать свою, пусть даже и простую. Отсталая IDE всегда лучше, чем окно команд и текстовый редактор, но даже у этого мнения всегда будут противники.

Приятный сюрприз

Sage и Euler Math Toolbox были включены лишь с точки зрения разнообразия и выбора, поскольку то, что одному – численная нирвана, другому – шестой круг ада. И тем не менее мы были приятно удивлены, обнаружив, что Sage – достойный конкурент не только в численных, но и в символьных вычислениях. Он выделяется как единственная платформа, использующая напрямую один из современных языков программирования, Python. Поскольку с помощью Sage вы можете создавать математические документы прямо в web, то будет уже неудивительно, если математические блоги станут темой следующего интернет-бума. И не забудьте: впервые вы прочли это здесь... LXF

Таблица свойств

Название Лицензия IDE Язык Доступность расширений (Toolbox) Совместимость с Matlab* Система визуального моделирования** FFT** Компьютерная алгебра Блокноты
EMT GPL x Matrix x x 17.28+-0.490 0.411+-0.001 v v
Matlab Проприетарная+ v Matrix v v 3.438+-0.182 0.017+-0.003 v v$
Octave GPL v Matrix v x 4.180+-0.182 0.018+-0.003 x x
Sage GPL x Python x x 1.288+-0.338 0.093+-0.014 v v
Scilab Полусвободная++ v Matrix v v 4.242+-0.221 0.272+-0.004 x x

* Поддержка какого-либо способа преобразования на/с языка Matlab.

** Значения после +- означают стандартное отклонение для 100 вычислений.

+ Этот пакет идет с дополнительными лицензионными взносами.

++ Бесплатно для некоммерческого использования – в других случаях внимательно читайте лицензию.

$ Только для MS Windows. Обеспечивает интеграцию с MS Office.

Персональные инструменты
купить
подписаться
Яндекс.Метрика