Mathematica — проприетарная, коммерчески распространяемая система компьютерной алгебры, которая широко используется для решения широкого спектра научных, инженерных, математических и экономических задач. Разработана в 1988 году Стивеном Вольфрамом, дальнейшим развитием системы занята основанная им совместно с Теодором Греем компания Wolfram Research.
Оснащена как аналитическими возможностями, так и обеспечивает численные расчёты; результаты выводятся как в алфавитно-цифровом виде, так и в форме графиков. Вычислительные и аналитические функции обеспечиваются бэкендом, к которому могут подключаться различные пользовательские интерфейсы. Традиционный интерфейс, поставляющийся с системой — вычислительная записная книжка, но имеется возможность работать с бэкендом из интегрированных сред разработки, таких как Eclipse и IntelliJ IDEA; с 2002 года существует свободный инструмент JMath, обеспечивающий интерфейс командной строки к Mathematica посредством интерфейса MathLink.
Основные аналитические возможности:
- решение систем полиномиальных и тригонометрических уравнений и неравенств, а также трансцендентных уравнений, сводящихся к ним;
- решение рекуррентных уравнений;
- упрощение выражений;
- нахождение пределов;
- интегрирование и дифференцирование функций;
- нахождение конечных и бесконечных сумм и произведений;
- решение дифференциальных уравнений и уравнений в частных производных;
- преобразования Фурье и Лапласа, а также Z-преобразование;
- преобразование функции в ряд Тейлора, операции с рядами Тейлора: сложение, умножение, композиция, получение обратной функции;
- вейвлет-анализ.
Система также осуществляет численные расчёты: определяет значения функций (в том числе специальных) с произвольной точностью, осуществляет полиномиальную интерполяцию функции от произвольного числа аргументов по набору известных значений, рассчитывает вероятности.
Теоретико-числовые возможности — определение простого числа по его порядковому номеру, определение количества простых чисел, не превосходящих данное; дискретное преобразование Фурье; разложение числа на простые множители, нахождение НОД и НОК.
Также в систему заложены линейно-алгебраические возможности — работа с матрицами (сложение, умножение, нахождение обратной матрицы, умножение на вектор, вычисление экспоненты, взятие определителя), поиск собственных значений и собственных векторов.
Система результаты представляет как в алфавитно-цифровой форме, так и в виде графиков. В частности, реализовано построение графиков функций, в том числе параметрических кривых и поверхностей; построение геометрических фигур (ломаных, кругов, прямоугольников и других); построение и манипулирование графами. Кроме того, реализовано воспроизведение звука, график которого задаётся аналитической функцией или набором точек.
Система обеспечивает автоматическую генерацию программного кода на языке Си и его компоновку; при этом сгенерированные программы могут быть использованы автономно. Для создания, обработки и оптимизации си-кода поддерживается использование SymbolicC. Программы могут использовать внешние динамические библиотеки, в том числе поддерживается интеграция с CUDA и OpenCL.
Для системы существуют многочисленные расширения, решающие специализированные классы задач. Например, расширение AceFEM предназначено для решения физических и математических задач методом конечных элементов, расширение Analog Insydes — для моделирования, анализа и создания электрических схем, Derivatives Expert — для анализа ценных бумаг и деривативов, Fuzzy Logic — для создания, модификации и визуализации нечётких множеств. Для решения геометрических задач существуют расширения Geometrica (геометрическая энциклопедия с возможностями точного построения геометрических объектов и проверки утверждений) и Geometry Expressions (символьная геометрия). Также как расширения реализованы кодогенераторы для C++ и Fortran 90 и интеграционные пакеты для взаимодействия с Excel и LabView. Также существуют клиентские библиотеки Wolfram, которые позволяет легко интегрировать большую коллекцию алгоритмов языка Wolfram Language, а также базу знаний Wolfram непосредственно в любой уже существующий код Python, Java и Lisp, что значительно экономит время и силы разработчиков при создании нового программного кода. Wolfram Mathematica поддерживает более 250 форматов данных и содержит более 6000 встроенных функций, в том числе поддерживающих нейронные сети и машинное обучение, а также взаимодействие с web-сайтами.