Наиболее известными и приспособленными для математических символьных вычислений считаются Maple, Mathematica, MatLab и Python.
Проведём обзор и краткий анализ этих программных продуктов.
MatLab
Продукт компании MathWorks, Inc., представляющий собой язык высокого уровня для научно-технических вычислений. Среди основных областей его применения — математические расчеты, разработка алгоритмов, моделирование, анализ данных и визуализация, научная и инженерная графика, разработка приложений, включая графический интерфейс пользователя. MatLab решает множество компьютерных задач — от сбора и анализа данных до разработки готовых приложений. Среда соединяет в себе математические вычисления, визуализацию и мощный технический язык. Встроенные универсальные интерфейсы позволяют легко работать с внешними информационными источниками, а также осуществлять интеграцию с процедурами, написанными на языках высокого уровня (C, C++, Java и др.). Мультиплатформенность MatLab сделала его одним из самых распространенных продуктов, также он имеет широкий спектр применений, в том числе цифровую обработку сигналов и изображений, проектирование систем управления, естественные науки, финансы, экономику, приборостроение и т.п.
Mathematica
Компании Wolfram Research, Inc. имеет чрезвычайно широкий набор средств, переводящих сложные математические алгоритмы в программы. По сути дела, все алгоритмы, содержащиеся в курсе высшей математики технического вуза, заложены в память компьютерной системы Mathematica. Огромное преимущество системы Mathematica состоит в том, что ее операторы и способы записи алгоритмов просты и естественны. Mathematica имеет мощный графический пакет, с помощью которого можно строить графики очень сложных функций одной и двух переменных. Главное преимущество Mathmatica, делающее ее бесспорным лидером среди других систем высокого уровня, состоит в том, что эта система получила сегодня очень широкое распространение во всем мире, охватив огромные области применения в научных и инженерных исследованиях, а также в сфере образования.
Maple
Продукт компании Waterloo Maple Software, Inc., который часто называют системой символьных вычислений или системой компьютерной алгебры. Maple позволяет выполнять как численные, так и аналитические расчеты с возможностью редактирования текста и формул на рабочем листе. Благодаря представлению формул в полиграфическом формате, великолепной двух- и трехмерной графике и анимации Maple является одновременно и мощным научным графическим редактором. Простой и эффективный язык-интерпретатор, открытая архитектура, возможность преобразования кодов в коды C делает его очень эффективным средством создания новых алгоритмов. Обладает интуитивно понятным интерфейсом, простыми правилами работы и широким функционалом.
Python
высокоуровневый язык программирования общего назначения, который поддерживает структурное, обобщенное, объектно-ориентированное, функциональное и аспектно-ориентированное программирование. Для выполнения научных исследований используются дополнительные пакеты: Numpy, Scipy, Matplotlib и др.
Сравнительный анализ систем компьютерной математики приведём в таблице ниже.
Критерий сравнения |
MatLab |
Mathematica |
Maple |
Python |
Интерфейс |
● содержит три окна: командное окно, все переменные и их типы и окно подсказок; ● есть строка приглашения, обозначается знаком ">>"; ● в отличие от Mathcad все функции приходится вводить с клавиатуры. |
● строка приглашения в отличие от MatLab разделена на две области: ввода и вывода, которые составляют вместе область всего выражения; ● область ввода можно редактировать; ● имеется палитра с греческими буквами, различными символами и панель мат анализа. |
● возможность работы в режиме интерпретатора; ● позволяет вводить электронные таблицы, содержащие как числа, так и символы; ● имеются опции разбиения на параграфы и разделы, а также добавления гиперссылок; ● рабочие листы можно организовать иерархически. |
● зависит от среды разработки. |
Работа с массивами и матрицами |
● аналогично Mathematica матрицы и вектора формируются при помощи списка элементов. ● функции вводятся с клавиатуры. |
● многомерный набор данных создается с помощью списка, который вводится с клавиатуры. ● также с клавиатуры вводятся и функции для работы с матрицами и векторами. |
● может находить собственные значения и собственные векторы операторов, ● вычислять криволинейные координаты, находить матричные нормы и вычислять множество различных типов разложения матриц. |
● Python не имеет встроенного типа данных для матриц. ● для линейной алгебры принято использовать numpy, вектора и матрицы которого типизированы, в отличии от встроенный в язык списков. |
Решение уравнений |
● решает уравнения и системы уравнений функций с различными параметрами. |
● содержит несколько функций для решения уравнений и систем уравнений. ● можно находить корни уравнений с параметром. ● имеется функция для особых решений. |
● предлагает различные способы представления, сокращения и преобразования выражений, например такие операции, как упрощение и разложение на множители алгебраических выражений и приведение их к различному виду |
● для использования символьных вычислений можно использовать библиотеку sympy. Однако, код, написанный с помощью sympy, уступает в красоте коду, написанному на Mathematica, которая специализирована на символьных вычислениях. |
Математические операторы |
● в отличие от Mathcad все операторы вводятся с клавиатуры в виде отдельных символов и функций. Дан относительно подробный список операторов. |
● как и в MatLab операторы приходится вводить с клавиатуры, но некоторые можно найти и на палитре инструментов. |
● способен выполнять арифметические действия в символьном виде. |
● для научных вычислений используется библиотека scipy. |
Встроенные функции |
● в основном используются только функции, которые вводятся с клавиатуры. |
● приведено множество функций различного назначения с различным числом параметров. |
● включены пакеты для решения задач линейной и тензорной алгебры, евклидовой и аналитической геометрии, теории чисел, теории вероятностей и мат.статистики, комбинаторики, теории групп, интегральных преобразований, численной аппроксимации и линейной оптимизации и др. |
● существует очень много арифметических, тригонометрических, гиперболических, логарифмических функций, которые становятся доступные после импортирования библиотеки null> |
Как видно из сравнительного анализа, все математические пакеты схожи между собой. Но среди них особенно выделяется Python, у которого можно выделить следующие основные преимущества:
1) свободно распространяемый и работает практически на всех известных платформах;
2) прост для изучения и обладает такими важными свойствами, как интерактивность и интерпретируемость;
3) имеет богатый набор функций стандартной библиотеки и широкий набор внешних библиотек, позволяющих решать практически любые задачи;
4) пространства имен: например, Matlab поддерживает пространства имен для функций, которые используются в программе, но ядро Matlab не имеет пространств имен (то есть каждая функция определена в глобальном пространстве имен). Python же работает с модулями, которые нужно импортировать, если они будут использоваться;
5) самоанализ. Поскольку программа имеет четкую структуру, самоанализ очень прост. Закрытые переменные существуют только по соглашению, поэтому можно получить доступ к любой части приложения, включая некоторые внутренние компоненты Python.
6) инструментарий GUI, который позволяет создавать внешний интерфейс.
Таким образом, Python — это, пожалуй, наиболее удачно сбалансированная система и бесспорный лидер по возможностям символьных вычислений для математики.
Полезные ссылки: