Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Десять лучших пакетов с открытым исходным кодом для математиков

Оригинал: Top Ten Open Source Tools for Mathematicians
Автор: Deepu Benson
Дата публикации: 25 марта 2018 года
Перевод: А. Кривошей
Дата перевода: декабрь 2019 г.

За прошедшие много лет мы видели большое количество всяческих списков. Некоторые из них довольно интересны, а другие скучные до умопомрачения. Например, «десять лучших дистрибутивов Linux всех времен» определенно интереснен, тогда как «десять лучших вещей, которые можно сделать со стаканом воды» совершенно бесполезен, если и не скучен. Да, в интернете полно интересных, скучных и глупых списков, но мы никогда не встречали список, в котором перечислены инструменты с открытым исходным кодом, используемые математиками - как профессионалами, так и любителями. Итак, мы перечисляем десятку лучших инструментов с открытым исходным кодом, которые широко используются математиками.

bc

Утилита bc (basic calculator) - это язык для расчетов произвольной точности. Эту утилиту часто называют bench calculator, и ее можно вызвать с помощью команды bc в терминале. В настоящее время используются две важные версии bc: POSIX bc и GNU bc. GNU bc доступен как бесплатное программное обеспечение с открытым исходным кодом, распространяемое под лицензией GNU General Public License. Решение о включении в список такого инструмента, как bc, разработка которого началась в 1975 году, может быть несколько спорным. Конечно, есть гораздо более мощные инструменты. Тем не менее, мы выбрали его, потому что, во-первых, это калькулятор произвольной точности, ограниченный только доступной памятью хост-системы и не ограниченный 8, 16, 32 или 64 битами точности. Это, действительно, важная вещь, и если у вас есть какие-либо сомнения, спросите программистов, работающих в области научных вычислений, которые страдают от неправильного представления чисел с плавающей запятой и от того, насколько трудно их приручить.

Другая причина в том, что, хотя он выглядит очень просто, bc является полным языком Тьюринга, что делает его таким же мощным, как такие языки программирования, как C и Java - по крайней мере, в теории. Последняя причина выбора bc для этого списка в том, что вам не нужен пистолет, чтобы убить муху. Во многих случаях бывает слишком сложно использовать мощные инструменты, такие как Scilab или SageMath, для простых числовых вычислений. На рисунке 1 показан результат операции деления с использованием bc с различными уровнями точности.

bc в действии

Рисунок 1: bc в действии

Scilab

Scilab - это кроссплатформенный инструмент для численных вычислений с открытым исходным кодом и язык числового программирования, лицензированный по лицензии GNU. Его можно использовать для обработки сигналов, статистического анализа, обработки изображений, моделирования динамики жидкости, численной оптимизации и т. д., часто с помощью дополнительных тулбоксов, таких как Image Processing Toolbox, Wavelet Toolbox и т. д. Scilab - это альтернатива с открытым исходным кодом для MATLAB, еще одной очень популярной, но проприетарной вычислительной среды. Эти два инструмента в некоторой степени похожи друг на друга, поэтому специалисту в одном из них часто будет легко перейти на другой. Сравнение Scilab и MATLAB явно выходит за рамки этой статьи, но есть, по крайней мере, одна область, в которой Scilab явно превосходит MATLAB, и это цена! Вам абсолютно не нужно ничего платить за использование Scilab, тогда как MATLAB является достаточно дорогим научным инструментом. Scilab может использоваться как среда программирования и интерактивная математическая оболочка. На рисунке 2 показано, как Scilab работает в качестве интерактивной математической оболочки.

простое вычисление в Scilab

Рисунок 2: простое вычисление в Scilab

GNU Octave

GNU Octave - еще один важный математический инструмент, используемый в основном для численных расчетов. Он является частью проекта GNU и предлагается в качестве бесплатного программного обеспечения с открытым исходным кодом, лицензируемого в рамках лицензии GNU General Public License. GNU Octave - это одна из двух очень мощных альтернатив MATLAB с открытым исходным кодом, вторая - Scilab. Но GNU Octave придает гораздо большее значение синтаксической совместимости с MATLAB, чем Scilab. Чтобы доказать нашу точку зрения, мы скопировали и выполнили код MATLAB из статьи Wikipedia о MATLAB, как на Scilab, так и на GNU Octave.

[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);
f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
surf(X,Y,f);
axis([-10 10 -10 10 -0.3 1])
xlabel(‘{\bfx}’)
ylabel(‘{\bfy}’)
zlabel(‘{\bfsinc} ({\bfR})’)

Scilab не смог произвести вывод, тогда как GNU Octave успешно выполнил программу. Выходные данные, полученные GNU Octave, такие же, как выходные данные, полученные MATLAB. Вывод показан на рисунке 3, и вы можете сравнить его с рисунком, приведенным в статье в Википедии о MATLAB, чтобы полностью понять синтаксическое сходство GNU Octave и MATLAB. GNU Octave также может использоваться как среда программирования и интерактивная оболочка.

Вывод GNU Octave

Рисунок 3: Вывод GNU Octave

Maxima

Maxima - это система компьютерной алгебры, которая широко используется в различных областях математики. Maxima разрабатывается с использованием Lisp и является кроссплатформенным инструментом, работающим в UNIX, Linux, Windows, Android, MacOS и т. д. Это бесплатное программное обеспечение с открытым исходным кодом, распространяемое по лицензии GNU General Public License. Из-за сложности разработки систем компьютерной алгебры существует всего несколько мощных инструментов этого класса, таких как Maxima и SageMath. Очень популярный графический интерфейс пользователя для Maxima называется wxMaxima, и его можно использовать в качестве среды программирования и интерактивной оболочки. На рисунке 4 показано, как Maxima можно использовать для интегрирования.

интегрирование в Maxima

Рисунок 4: интегрирование в Maxima

SageMath

SageMath - это система компьютерной алгебры, которая широко используется в различных областях математики, таких как алгебра, комбинаторика, теория графов, численный анализ, теория чисел, статистика и т. д. Системы компьютерной алгебры в основном используются для символьных, а не числовых вычислений. Большое количество пакетов, необходимых для мощной системы компьютерной алгебры, делает их очень редкими, и по этой причине SageMath является очень важным инструментом. Это бесплатный инструмент с открытым исходным кодом, распространяемый по лицензии GNU General Public License и являющийся конкурентом многих других математических инструментов, таких как Maple, Mathematicia, MATLAB и т. д., которые являются проприетарным программным обеспечением. SageMath не только способен заменить любой из этих инструментов, но и абсолютно бесплатен. Он может использоваться в двух режимах, как интерактивная оболочка и среда программирования. Интерактивная оболочка на основе браузера под названием Notebook имеет возможность запоминать предыдущие входные и выходные данные для просмотра и повторного использования. SageMath - это относительно новый инструмент, большая часть которого написана на Python; первый релиз вышел в 2005 году. На рисунке 5 показан логотип SageMath.

логотип SageMath

Рисунок 5: логотип SageMath

R

R - математический инструмент, используемый в основном для статистических вычислений. Он используется математиками в целом и статистиками в частности для обработки данных и разработки статистического программного обеспечения. Разработка R контролируется фондом "R Foundation for Statistical Computing". R - это кроссплатформенный инструмент, который можно использовать в различных операционных системах, таких как Linux, Microsoft Windows и т. д. R - это бесплатное программное обеспечение с открытым исходным кодом, распространяемое по лицензии GNU General Public License. Он часто используется в качестве альтернативы с открытым исходным кодом для проприетарных статистических пакетов, таких как SAS, SPSS и т. д. Но наличие R в свободном доступе не является основной причиной его широкого использования статистическим сообществом; скорее его популярность основана на его силе. R может использоваться как утилита командной строки, а также с графическим интерфейсом пользователя. Очень популярный графический интерфейс для R называется RStudio. R также способен выполнять визуализацию данных. На рисунке 6 показан вывод простых команд R «var1 = c(1, 3, 5, 4, 8)’ and ‘plot(var1, type=”o”, col=”red”)' при выполнении их в консоли.

создание графика в R

Рисунок 6: создание графика в R

Isabelle

Выбирая десять полезных математических инструментов для этой статьи, мы пытались выбрать программы, которые используются в различных областях математики, а не популярные программы одного направления, например, для численных расчетов. Таким образом, этот инструмент может быть не таким популярным, как многие другие математические инструменты, которые не вошли в этот список. Давайте уточним: широкая публика знакома с пакетами численных вычислений, такими как MATLAB, Scilab и т. д., но может не знать о SageMath или Maxima, поскольку последние два в основном используются в более абстрактных областях математики, таких как комбинаторика, теория графов, теория чисел и т. д. Математика сама по себе считается абстрактным предметом. Харди однажды сказал: «Мы пришли к выводу, что тривиальная математика в целом полезна, а настоящая математика в целом - нет». В математике есть определенные области, которые считаются абстрактными даже по стандартам профессиональной математики. Одним из таких разделов является логика и автоматическое доказательство теорем. Не многие люди заинтересованы в автоматическом доказательстве теорем, но для избранных, которые работают в этой области, инструмент, помогающий в их поисках, будет как дар с небес. Итак, с этим обоснованием мы представляем Isabelle, интерактивную программу для доказательства теорем. Она бесплатная, с открытым исходным кодом и доступна для использования под лицензией BSD. Isabelle была разработана с использованием двух языков программирования, ML и Scala. Ее можно использовать для кодирования логики первого порядка, логики высшего порядка и т. д. для дальнейшей обработки. На рисунке 7 показан логотип Isabelle.

Логотип Isabelle

Рисунок 7: Логотип Isabelle

SciPy

SciPy - это библиотека Python с открытым исходным кодом, используемая для научных вычислений. Она содержит модули для оптимизации, линейной алгебры, численных расчетов, интерполяции, быстрых преобразований Фурье, обработки сигналов, обработки изображений и т. д. SciPy является частью стека NumPy, который также включает в себя такие инструменты, как Matplotlib, SymPy и т. д. Matplotlib - это библиотека для построения графиков, а SymPy - это библиотека для символьных вычислений в Python. Библиотека SciPy доступна под лицензией BSD. На рисунке 8 показано, как SciPy используется для нахождения факториала 100. Даже в скромной компьютерной системе мы смогли найти факториал 100 000. Но мы не сможем показать вывод в этой статье, потому что результирующее число содержит 456574 цифры. В выпуске OSFY за декабрь 2017 года было 108 страниц, включая обложки. Страница, которую мы случайно выбрали в этом выпуске, содержала 54 строки текста, а строка, которую мы произвольно выбрали, имела 123 символа, поэтому простой расчет покажет, что для печати этого числа потребуется не менее 68 страниц следующего выпуска OSFY. Это говорит нам о силе SciPy. А с мощным компьютером вы можете творить чудеса со SciPy.

Факториал с помощью SciPy

Рисунок 8: Факториал с помощью SciPy

gnuplot

Научные исследования включают представление данных в аккуратной и сжатой форме. Для этого часто используются графики. Именно для этой цели мы можем использовать gnuplot, программу командной строки, которая может строить двухмерные и трехмерные графики функций и данных. Она часто используется в векторной графике. gnuplot может создавать выходные данные в различных форматах изображений, таких как Portable Network Graphics (PNG), Encapsulated PostScript (EPS), Scalable Vector Graphics (SVG), Joint Photographic Experts Group (JPEG) и т. д. Это кроссплатформенная утилита, которая работает на различных операционных системах, таких как UNIX, Linux, Microsoft Windows, MacOS и т. д. Хотя название программного обеспечения начинается с «gnu», оно не является частью проекта GNU. Фактически, включение gnuplot в этот список может быть оспорено, потому что, в очень строгом смысле, это не бесплатное программное обеспечение с открытым исходным кодом, так как оно лицензируется под собственной лицензией gnuplot, которая дает пользователям право изменять исходный код, но не право на распространение модифицированных версий. Но чрезвычайная популярность gnuplot заставила нас выбрать его, а не свободную утилиту для построения графиков с открытым исходным кодом, такую ​​как xgraph. На рисунке 9 показан трехмерный график, построенный с использованием gnuplot.

График, построенный с помощью gnuplot

Рисунок 9: График, построенный с помощью gnuplot

LaTeX

Наконец, давайте подумаем о жизни блестящего математика, который провел много исследований, без использования некоторых математических инструментов, которые мы только что перечислили, чтобы придумать несколько превосходных теорем. Пришло время записать эти результаты, чтобы опубликовать хорошую научную статью. Помните, что математика полна символов, таких как π, √, ∞ и т. д., которые обычно не доступны на клавиатуре. Подготовка научных работ в необходимом формате для различных научных журналов является в связи с этим очень утомительной задачей. Таким образом, каждый математик в конечном итоге будет использовать систему подготовки документов, и лучшей из них является LaTeX. Он широко используется в научных кругах и в промышленности для подготовки научных документов в таких областях, как математика, статистика, компьютерные науки, инженерия и т. д. LaTeX - это кроссплатформенное бесплатное программное обеспечение с открытым исходным кодом, лицензированное в рамках общественной лицензии проекта LaTeX Project. Он также может быть использован для эффективного управления ссылками. На рисунке 10 показано нестационарное уравнение Шредингера, построенное с использованием LaTeX.

Уравнение Шредингера, написанное в LaTex

Рисунок 10: Уравнение Шредингера, написанное в LaTex