Mathematica

Материал из Википедии — свободной энциклопедии
Это старая версия этой страницы, сохранённая Mihaild (обсуждение | вклад) в 21:25, 25 декабря 2015 (оформление). Она может серьёзно отличаться от текущей версии.
Перейти к навигации Перейти к поиску

Wolfram Mathematicaсистема компьютерной алгебры, используемая во многих научных, инженерных, математических и компьютерных областях. Изначально система была придумана Стивеном Вольфрамом, в настоящее время разрабатывается компанией Wolfram Research.

Mathematica
Логотип программы Mathematica
Скриншот программы Mathematica
Тип Система компьютерной алгебры
Разработчик Wolfram Research
Написана на Си, C++[102], Java[102] и Wolfram
Интерфейс Qt
Операционные системы Microsoft Windows, Mac OS X, Linux
Первый выпуск 23 июня 1988
Последняя версия 10.3 (15 октября 2015)
Лицензия Проприетарное программное обеспечение, коммерческая
Сайт wolfram.com/mathematica/
Логотип Викисклада Медиафайлы на Викискладе

Возможности

Аналитические преобразования

Численные расчёты

Графика и звук

Разработка программного обеспечения

  • Автоматическое генерирование С-кода и его компоновка.
  • Автоматическое преобразование компилируемых программ системы Mathematica в C-код для автономного или интегрированного использования.
  • Использование SymbolicC для создания, обработки и оптимизации С-кода.
  • Интеграция внешних динамических библиотек
  • Поддержка CUDA и OpenCL.

Сферы применения

  • Программирование, основанное на алгоритмах.
  •  Вычисления с использованием данных из реального мира.
  •  Сверхвысокоуровневый скриптинг.
  •  Высокопроизводительное программирование.
  •  Высокоуровневое метапрограммирование.
  •  Самодокументирующаяся крупномасштабная разработка.
  •  Быстрая разработка концептов.
  •  Программирование с акцентом на аналитику и визуализации.
  •  Работа с интернетом вещей.
  •  Программирование в обучении.
  •  Исследования и разработка в программировании.
  •  Разработка сразу под несколько платформ.

Wolfram Engine

Центральным элементом Mathematica является Wolfram Engine – программная система, которая позволяет реализовывать язык программирования Wolfram Language, использующийся в системе, в различных вычислительных средах, а так же интерфейсы и средства сообщения языка. Система Wolfram Engine является сложной конструкцией из программных компонент, которые могут исполняться как локально, так и в распределённом режиме.

Основные компоненты

  • Ядро языка Wolfram Language – программная компонента, которая реализует интерпретатор основной части языка Wolfram Language.
  •  Конечные точки Wstp подключения – основное соединение между программными компонентами системы Wolfram Engine, а также между тесно связанными внешними системами.
  •  Инфраструктура импорт/экспорт – инфраструктура для обработки внешних форматов в системе Wolfram Engine.
  •  Инфраструктура внешних сервисов – инфраструктура для подключения к независимым API и сопутствующим сервисам.
  •  Блокнотный пользовательский интерфейс – программная компонента для поддержки интерактивных CDF документов, независимо реализованная для каждой настольной или мобильной операционной системы, или для использования в вебе.
  •  Конечные точки универсального развёртывания – множество компонент для поддержки системы Wolfram Universal Deployment System.
  •  Инфраструктура подключённых к сети приборов – инфраструктура для локального или распределённого подключения к внешним приборам.

Сопутствующие компоненты

  • Wolfram Knowledgebase – распределённая программная компонента, выполняемая в Wolfram Cloud, к которой система Wolfram Engine обращается за информацией.
  •  Wolfram Launch Manager – программная компонента, открывающая сервис для запуска копий системы Wolfram Engine.
  •  Wolfram License Manager – система для администрирования использования Wolfram Engine в децентрализованной локальной сети.
  •  Wolfram Linguistics System – программная компонента, работающая облачно, используемая для распознавания ввода на естественном языке.
  •  Wolfram Grid Manager – система для администрирования копий системы Wolfram Engine в гетерогенной системе распределённых вычислений.
  •  WolframID Manager – глобальная система удостоверения подлинности для распределённых сервисов Wolfram.

Интерфейсы

  • Блокнотный пользовательский интерфейс.
  • Интерактивный CDF интерфейс Wolfram Language.
  • Обращения к модулям Wolfram Engine через API.
  •  Wolfram Symbolic Transfer Protocol (WSTP).
  •  Интерфейс командной строки.
  •  Интерфейс функциональных обращений.
  • Доступ к Wolfram Engine посредством обращения к встроенным функциям из различных языков программирования.
  •  Library Link.
  • Загрузка библиотек в систему Wolfram Engine.

Язык программирования Wolfram Language

Wolfram Language – сверхвысокоуровневый мультипарадигменный язык программирования, реализованный в системе Mathematica и других программных продуктах компании Wolfram Research.

Основные особенности

  • Основанный на знаниях (Knowledge Based – англ.) – Wolfram Language содержит большое количество встроенных алгоритмов и знаний о мире, и это является одной из ключевых его особенностей.
  • Интерактивный – код на Wolfram Language может работать в интерактивном режиме в виде REPL диалога между пользователем и системой.
  • Высокоуровневый – с учётом следования прицнипу максимальной автоматизации во всём, возможно, Wolfram Language является самым высокоуровневым языком из всех ныне существующих.
  • Ориентированный на использование шаблонов – сопоставление шаблонов символьных выражений является одной из ключевых особенностей языка Wolfram Language.
  • Ёмкий – большое количество встроенных функций часто позволяет писать более содержательный и, следовательно, более краткий код.
  • Рефлексивный – символьный характер Wolfram Language предоставляет ему возможности интроспекции в полной мере.
  • Динамически типизированный – в Wolfram Language всё является символьным выражением, и каждое символьное выражение содержит заголовок, автоматически определяющий его поведение.
  • Конкатенативный – поскольку Wolfram Language является символьным,  программы могут создаваться посредством конкатенации отдельных значащих частей.
  • Позволящий создавать предметно-ориентированные языки, и содержит уже встроенные (regex, graphics, interfaces, deployment и пр.).
  • Семантический – язык содержит большое количество представлений реальных сущностей и конструктов.
  • Произвольной точности – Wolfram Language не имеет ограничений на точность и длину чисел.
  • Поддерживающий работу с запросами – так как все данные представлены в символьном виде, то с ними можно работать посредством единообразных запросов с использованием высокоуровневых функциональных конструкций.
  • Реактивный – Wolfram Language позволяет использовать возможности реактивного программирования, обеспечивая возможность построения сложных динамических пользовательских интерфейсов декларативно.
  • Документоориентированный – код на Wolfram Language не ограничен текстом в кодировке ASCII, а может использовать все элементы, реализуемые в документах формата CDF.
  • Скриптовый – код на Wolfram Language может быть использован для сценарного задания внешних по отношению к системе операций в различных средах и на разных языках.
  • JIT-компилируемый – код на Wolfram Language часто компилируется на ходу во встроенной виртуальной машине, позволяя оптимизировать производительность и использовать лучшие качества интерпретирования и компилирования.
  • Платформонезависимый – код на Wolfram Language не зависит от платформ – как локальных, так и облачных.
  • Поддерживающий FFI – в Wolfram Language реализована поддержка сторонних интерфейсов на разных уровнях.
  • Безопасный – в коде на Wolfram Language не используются низкоуровневые конструкции, такие как указатели и выделения памяти, что позволяет избежать целого класса ошибок.
  •  Стабильный – на протяжении более чем 25 лет Wolfram Language практически полностью сохраняет обратную совместимость.
  • Символьный – в языке Wolfram Language всё (код, данные, изображения, документы, интерфейсы, программ и прочее) является символьным выражением.
  • Функциональный – Wolfram Language поддерживает расширенную версию функционального программирования на основе обобщённых преобразований.
  • Декларативный – Wolfram Language представляет собой экстремальную форму декларативной концепции, что обеспечивается использованием автоматических суперфункций, которые реализуют указанные цели высокого уровня.
  • Гомоиконный – с учётом символьного характера, равнозначность кода и данных является фундаментальной особенностью кода на Wolfram Language.
  • Метапрограммный – символьный характер позволяет манипулировать кодом не только посредством макросов, но и с помощью множества других встроенных в язык возможностей.
  • Основанный на выражениях – в Wolfram Language всё (код, данные и так далее) представлены в виде символьных выражений с древовидной структурой, где каждый элемент имеет своё значение.
  • Полиморфный – определение функций посредством сопоставления с образцом позволяет достичь выраженного полиморфного поведения.
  • Аппликативный – в Wolfram Language программы могут рассматриваться как применение последовательности символьных преобразований к неизменным символьным выражениям.
  • Соответствующий концепции DRY – гибкость разработки в функциональной и символьной парадигме на языке Wolfram Language позволяет писать код без повторяющихся фрагментов.
  • Математический – Wolfram Language охватывает самое большое количество сфер математических вычислений среди всех языков программирования.
  • Символьный и численный – в языке представлена поддержка как символьных, так и численных вычислений, а многие встроенные алгоритмы комбинируют оба подхода.
  • Мультиметодный – в Wolfram Language символьное сопоставление с образцом позволяет моментально обращаться к любому аргументу функции или части выражения.
  • Естественноязыковой – используя ту же технологию, что и Wolfram Alpha, Wolfram Language поддерживает ввод кода на естественном языке.
  • Параллелизуемый – в Wolfram Language имеется встроенная поддержка параллельных вычислений – как на отдельной машине, так и в разнородной вычислительной сети.
  • Клиент-сервер ориентированный – интерактивный интерфейс Wolfram Language может сообщаться посредством символьного протокола WolframLink с одним или несколькими вычислительными ядрами.
  • Поддерживающий горячую замену – поскольку Wolfram Language интерпретируется и развёртывается в символьной форме, код может быть дополнен, отлажен и изменён на любом этапе его выполнения.
  • Интероперабельный – в Wolfram Language встроена поддержка работы с другими языками и сотнями различных форматов.
  • Перманентный – так как всё (код, данные, графика, интерфейсы и прочее) в Wolfram Language представляется символьным выражением, то это позволяет незамедлительно их сериализовать для перманентного хранения.
  • Иммутабельный – в Wolfram Language всё есть символьное выражение, представляющее своё значение, и лишь отдельные конкретные функции имеют локализованные побочные эффекты.

Ключевые идеи

  • Максимальное количество встроенных знаний. В отличие от других языков программирования, философия Wolfram Language подразумевает встроить в язык максимальное количество знаний – алгоритмы и фактическую информацию о мире. В язык встроена самая большая база алгоритмов и пригодных для вычислений знаний. Это данные из тысяч различных сфер, которые курируются компанией Wolfram Researh.
  • Максимальная автоматизация. У программиста должна быть возможность сосредоточиться на том, что он хочет получить, а язык должен автоматически объяснять, как этого достичь. Язык содержит тысячи уникальных метаалгоритмов для автоматического выбора исполняемых алгоритмов, автоматизации процессов программирования, презентаций, работы с интерфейсами.
  • Максимальная единообразность дизайна. Элегантная и единообразная структура языка должна обеспечивать совместимость между различными областями языка, предоставлять максимальную гибкость программных конструкций и повышать читабельность, понятность и предсказуемость кода.
  • Представление чего бы то ни было в виде символьных выражений. Представление данных, формул, кода, графики, документов, интерфейсов и прочего в символьном виде, что даёт большую гибкость в написании кода, а инкрементный подход подразумевает, что любой фрагмент кода может быть запущен. Подобный подход подразумевает возможность включить в код любой из перечисленных выше объектов.
  • Содержание встроенной обширной модели мира. Единицы измерения, даты, локации, данные из различных областей   представляются с помощью расширемого символьного фреймворка.
  • Использование естественного языка для программирования. Использование технологий, отработанных в Wolfram\|Alpha, позволяют переводить обычную речь на естественном языке в вычисляемый код, что даёт возможность программировать без знания языка.
  • Развёртывание языка где угодно. На локальном компьютере, в облаке, на мобильных устройствах, возможность быть встроенным; язык позволяет создать web API в любой программе, а также встроить язык в программную или аппаратную систему.
  • Вычисляемые документы как часть языка. Использование документов-ноутбуков в CDF формате позволяют сочетать в одном документе исполняемый код, примеры, документации, интерактивные элементы и медиа контент; в базе Wolfram Demonstrations Project можно найти более 10 тысяч примеров.
  • Удобные интерфейсы. Символьные выражения позволяют стандартизировать взаимодействия с внешними данными и программами; также язык поддерживает работу с устройствами реального времени и создание связей через собственное облако Wolfram Cloud.
  • Интегрированный процесс написания и исполнения кода позволяет сразу же тестировать написанные участки кода, визуализировать результаты и проводить аналитику, что позволяет реализовать инкрементное и исследовательское программирование.
  • Создание программ любого размера. Программы на Wolfram Language могут содержать как всего несколько строк, так и несколько миллионов, и их могут разрабатывать как один человек, так и большой коллектив, что обеспечивается заточенной под масштабное программирование средой. К примеру, Mathematica, почти полностью написана на Wolfram Language (лишь небольшая часть кода написана на Си).
  • Максимальная выразительность языка обеспечивается его символьным характером, что позволяет использовать как  привычные парадигмы, так и недавно появившиеся.
  • Максимально долгая обратная совместимость. Программы, написанные 25 лет назад, могут быть запущены и в современных версиях системы.
  • Кроме того, Mathematica — это интерпретируемый язык функционального программирования. Можно сказать, что система Mathematica написана на языке Mathematica, хотя некоторые функции, особенно относящиеся к линейной алгебре, в целях оптимизации были написаны на языке C. Mathematica поддерживает и процедурное программирование с применением стандартных операторов управления выполнением программы (циклы и условные переходы), и объектно-ориентированный подход. Mathematica допускает отложенные вычисления. Также в системе Mathematica можно задавать правила работы с теми или иными выражениями.

Основные элементы синтаксиса Wolfram Language

Wolfram Language допускает множество различных стилей и парадигм программирования.

Одной из главных особенностей Wolfram Language с точки зрения синтаксиса является возможность представления любой конструкции или элемента в виде композиции функций.   Чтобы представить некоторую конструкцию в подобном виде, можно использовать функцию FullForm[]

Вот несколько примеров:

  • Конструкция a+b может быть представлена как функция Plus[a,b].
  • Равенство a x^2 + b x + c/2 == 0 в полной форме представляется как Equal[Plus[Times[Rational[1,2],c],Times[b,x],Times[a,Power[x,2]]],0].
  • Изображение представляется в виде функции Image с определёнными параметрами и списками байтов в качестве аргументов.
  • Сам рабочий документ (ноутбук) также представляет из себя функцию.
  • Ячейки ноутбука являются вложенными в ноутбук функциями.
  • Список {1,2,3}  представляется в виде функции List[1,2,3].

Некоторые функции в Wolfram Language могут быть представлены в виде специальных символов.

В Wolfram Language содержится 4 типа скобок:

  • Круглые (x) для группировки.
  • Квадратные скобки для аргументов функции [x].
  • Фигурные скобки {a,b,c} для списков.
  • Двойные квадратные скобки [[x]] для индексирования (для списка {a,b,c} запись {a,b,c}[[1]] выдаст первый элемент списка, то есть a).

Синтаксические единицы

Для интерпретации ввода и формирования из него выражений Wolfram Language использует различные синтаксические правила. Ввод разбивается интерпретатором на отдельные синтаксические единицы:

Синтаксические единицы Примеры
Символы a, xyz, αβγ
Строки "some text",  "α+β"
Числа 123.456,  3.*10^45
Операторы +, ->, !=
Игнорируемые участки (*comment*)

К примеру, ввод xx+yy-zzzz будет разбит на последовательность xx, +, yy, - и zzzz, где xx, yy, и zzzz соответствуют символам, а + и - соответствуют операторам. В Wolfram Language представлено несколько классов операторов, различающихся порядком записи:

Порядок записи Короткая запись Полная запись
Префиксный !x Not[x]
Постфиксный x! Factorial[x]
Инфиксный x+y+z Plus[x,y,z]
Мачфиксный {x,y,z} List[x,y,z]
Смешанный x/:y=z TagSet[x,y,z]
Надфиксный OverHat[x]

Соответственно, задать произвольную функцию можно в том числе в одной из следующих форм:

Форма записи Вид
Базовая форма f[x]
Стандартная префиксная форма f@x
Стандартная постфиксная форма x//f
Стандартная инфиксная форма x~f~y

Порядок применения операторов зависит как от их последовательности, так и от соответствующих им приоритетов. К примеру, у оператора умножения * приоритет выше, чем у оператора сложения +, потому a*b+c в полной форме будет выглядеть так: Plus[a,Times[b,c]], то есть в начале будет вычислен результат умножения. Оператор постфиксной формы применения функции // имеет низкий приоритет, потому запись a*b + c // f будет интерпретирована как f[a b + c]. Оператор префиксной формы применения функции @ имеет высокий приоритет, потому f@a*b + c будет интепретирована как c + b f[a]. Вот список приоритетов операторов:

Группа операторов Примеры
Расширения символьных имён x_, #2 , e::s
Различные формы применения функций F[x], F@@{a,b,c}, x\\F, x~F~y, F@x
Операторы, связанные с возведением в степень x^y,
Операторы, связанные с умножением
Операторы, связанные со сложением
Операторы отношения
Стрелки и векторные операторы
Логические операторы
Операторы, связанные с шаблонами и правилами x.., x|y, x->y, x/.y
Оператор чистой функции x&
Соединитель выражений x;y

Лексемы

Wolfram Language поддерживает около 63 тысяч, в том числе  модифицирующих и зарезервированных компанией Wolfram Research символов Unicode. Вот их список:

Номера символов Описание группы
0–127 символы ASCII
1–31 управляющие символы ASCII
32–126 печатные символы ASCII
97–122 английский прописной алфавит
129–255 латинские ISO символы
192–255 буквы европейских алфавитов
0–59391 стандартные публичные символы Unicode
913–1009 греческие буквы
12288–35839 китайский, корейский и японский алфавиты
8450–8504 модифицирующие символы в математической нотации
8592–8677 стрелки
8704–8945 математические символы и операторы
61440–63487 частные символы Unicode, определённые специально для Wolfram Language

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

В коде допускается написание элементов в различных индексах: верхний, нижний, надстрочный, подстрочный, задний левый, задний правый.

В коде допускается использование тех сложных в сравнении с обычным текстом структур, которые приняты в математической нотации. То есть имеется возможность записать встроенными в код корни, интегралы с пределами, матрицы, многоуровневые дроби и прочее. 

Непосредственно в коде на Wolfram Language могут присутствовать изображения, документы, файлы различного формата, элементы интерфейса, графики, векторная графика, аудиофайлы и прочее.

Всё является выражением

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

Самым простейшим примером выражения в Mathematica является f[x,y]. Можно использовать f[x,y] для представления математической функции f(x,y). Функция имеет название f, и она содержит два аргумента:  x и y. 

Вам не всегда потребуется формулировать выражение в виде f[x,y]. Например, x+y также является выражением. Если вводить x+y, то Mathematica автоматически конвертирует введенное выражение в стандартную форму Plus[x,y]. Затем, когда наступает время вывести это выражение, оно вновь выводится в виде x+y

То же самое верно и для других "операторов", таких как степень ^ (Power) и частное / (Divide). 

Собственно, все, что вы вводите в Mathematica рассматривается как выражение.  

Сокращенная форма Полная форма
x+y+z Plus[x,y,z]
x y z Times[x,y,z]
x^n Power[x,n]
{a,b,c} List[a,b,c]
a->b Rule[a,b]
a=b Set[a,b]

Объект f в выражении f[x,y] известен как заголовок выражения. Его можно извлечь его при помощи команды Head[выражение]. В частности, если писать программный код в Mathematica, то часто будет возникать необходимость проверить заголовок выражения, чтобы узнать, что данное выражение из себя представляет.

In[5]:= Head[f[x, y]]  (* Функция Head возвращает "имя функции" f. *)
Out[5]=  f

In[6]:= Head[a + b + c] (*В данном случае Head возвращает название "оператора". *)
Out[6]=  Plus

In[7]:= Head[{a, b, c}] (*Все в Mathematica имеет заголовок.*)
Out[7]=  List

In[8]:= Head[23432] (*Числа также имеют заголовки. *)
Out[8]=  Integer

In[9]:= Head[345.6] (*Вы можете отличать различные виды чисел по их заголовкам.*)
Out[9]=  Real

Правила

Оператор замены /. (читается как "slash-dot") применяет правила к выражениям.

Синтаксис Значение
expr/.lhs->rhs Применить правило преобразования к выражению
expr/.{lhs1->rhs1,lhs2->rhs2, ...} Применить совокупность правил к различным частям выражения
expr/.rules Единожды применить правила к этой части выражения
expr//.rules Применять правило до тех пор, пока выражение не перестанет изменяться
lhs->rhs Вычислить rhs при задании правила
lhs:>rhs Вычислить rhs при использовании правила

В Wolfram Language мемоизация осуществляется следующим образом: f[x_]:=f[x]=rhs.

Формы записи чисел

Числа могут быть записаны в базе от 2 до 36. По умолчанию база числа принимается за 10. Для баз, больших 10, в качестве цифр применяются буквы a-z.

Форма записи Пример Пояснение
цифры 12 Целые числа
цифры.цифры 12.3 Действительные числа
база^^цифры 16^^1A2E Целые числа в n-ричной системе счисления
база^^цифры.цифры 2^^1001.1001001 Действительные числа в n-ричной системе счисления
мантисса*10^n 2.3*10^8 Формат с плавающей точкой
база^^мантисса*10^n 2^^10011101*2^6 Формат с плавающей точкой в n-ричной системе счисления
число` 173/32`=5.40625 Действительное число с машинной точностью
число`s 173/32`3=5.41 Число произвольной точности с округлением до цифры s
число``s 173/32``3=5.406 Число произвольной точности, в котором первые s знаков получены точно

Итераторы

Итераторы используются в таких функциях как Sum, Table, Do и Range.

Параметры итерации imin, imax и di не обязательно должны быть целыми числами. Переменная i задается последовательностью значений, начиная с imin, и увеличивающихся с шагом di, останавливаясь, когда следующее значение i должно превысить imax. Параметры итерации могут быть произвольными символьными выражениями во всех случаях, пока (imax – imin)/di является числом.

При использовании сразу нескольких итеративных переменных, предельные значения более удаленных переменных могут зависеть от значений предыдущих.

Переменной i не обязательно быть одиночным символом; она может быть любым символьным выражением. Значение i автоматически объявляется локальным в пределах итеративной функции. Практически это реализуется с помощью конструкции Block, содержащей i , путем ее "оборачивания" вокруг итеративной функции.


Итератор Описание
{imax} повторение imax раз
{i, imax} i принимает значения от 1 до imax с шагом 1
{i, imin, imax} i принимает значения от imin до imax с шагом 1
{i, imin, imax, di} i принимает значения от imin до imax с шагом di
{i, list} i последовательно принимает значения из списка list
{i, imin, imax}, {j, jmin, jmax},... i принимает значения от imin до imax, а для каждого значения i,

j принимает значения от jmin до jmax, и т. д.

Математические функции

Встроенные в Mathematica математические функции, такие как Log[x] и BesselJ[n,x], имеют ряд общих черт.

Они содержат атрибут Listable, что обеспечивает их применение ко всем элементам списков, являющихся их аргументами.

Они содержат атрибут NumericFunction, что предполагает возвращение ими численных значений если их аргументы также являются численными

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

За исключением тех функций, чьи аргументы всегда являются целыми числами, математические функции в Mathematica могут быть вычислены с любой численной точностью, с любыми комплексными числами в качестве аргументов. В случае, если для определенного набора аргументов функция не определена, результат вычислений  возвращается в символьной форме.

Численные вычисления возвращают результат с точностью не выше той, что обусловлена точностью аргументов. Так, например,  N[Gamma[27/10],100] возвращает результат с высокой точностью, а N[Gamma[2.7],100] не может такого обеспечить.

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

Математические константы

Встроенные в Mathematica математические константы, такие как E и Pi, обладают следующими свойствами: 

  • Они не имеют значений самих по себе. 
  • Они имеют числовые значения, которые могут быть выражены с любой точностью. 
  • Они рассматриваются как численные величины функцией NumericQ и во всех других местах и ситуациях.
  • Они содержат атрибут Constant и, таким образом, рассматриваются как константы в производных.

Регулярные выражения и строковые шаблоны

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

Пример функции Описание функции
StringMatchQ["s",patt] Проверяет, содержит ли s шаблон patt
StringCases["s",patt] Выдаёт фрагменты, в которых s содержит шаблоны patt
StringCases["s",lhs->rhs] Заменяет все фрагменты, удовлетворяющие lhs, на rhs
StringPosition["s",patt] Выдаёт позиции, в которых встречается шаблон patt
StringCount["s",patt] Выдаёт количество фрагментов, удовлетворяющих габлону patt
StringReplaceList["s",lhs->rhs] Выдаёт все способы замены lhs
StringSplit["s",patt] Разбивает s на фрагменты в каждом случае нахождения шаблона
StringSplit["s",lhs->rhs] Разбивает строку s по lhs и производит замену на lhs

Сравнение синтаксиса строковых шаблонов и регулярных выражений

Регулярное выражение Строковый шаблон Объяснение
"abc" "abc" строка "abc"
"." Except["\n"] любой символ, исключая начало строки
"(?s)." _ любой символ
"(?s).+" __ один и более символов (жадное)
"(?s).+?" Shortest[__] один и более символов (не жадное)
"(?s).*" ___ нуль и более символов
".*" Except["\n"]... нуль и более символов, исключая начало строки
"a?b" ""~~"b" нуль или одна "a", за которой следует "b" (то есть "b" или "ab")
"[abef]" Characters["abef"] любые из символов "a", "b", "e" или "f"
"[abef]+" Characters["abef"].. один и более символов "a", "b", "e" или "f"
"[a-f]" CharacterRange["a","f"] любой символ из диапозона "a"-"f"
"[^abef]" Except[Characters["abef"]] any character except the characters "a", "b", "e", or "f"
efg" "efg" последовательность "ab" или "efg"
ef)gh"or "(?:ab|ef)gh" "ef")~~"gh" "ab" или "ef", за которыми следует "gh" (то есть "abgh" или "efgh")
"\\s" WhitespaceCharacter любой пробельный символ
"\\s+" Whitespace один и более пробельных символов
b)\\1" "b"~~x_ либо "aa", либо "bb"
"\\d" DigitCharacter любая цифра
"\\D" Except[DigitCharacter] любой символ, не являющийся цифрой
"\\d+" DigitCharacter.. одна и более цифр
"\\w" "_" любая буква, цифра или символ "_"
"[[:alpha:]]" LetterCharacter любая буква
"[^[:alpha:]]" Except[LetterCharacter] любой символ, не являющийся буквой
"^abf"or "\\Aabc" StartOfString~~"abf" "abf" в начале последовательности символов
"(?m)^abf" StartOfLine~~"abf" "abf" с новой строки
"wxz$"or "wxz\\z" "wxz"~~EndOfString "wxz" в конце последовательности символов
"wxz\\Z" ""~~EndOfString "wxz" в конце последовательности или перед началом новой строки
Код программы Результат работы
1 Пример использования строковых шаблонов и регулярных выражений
Manipulate[
 TextCell[Row[List@@
     StringReplace[text,
       {RegularExpression["\\b\\w{" <> ToString[u] <> "}\\b"] :> 
       Style["$0", 18, Bold]}]], "TR"], 
{u, 1, 10, 1},  SaveDefinitions -> True]

Функциональное программирование

Примеры кода

Код программы Результат работы
1 Каррирование функций
In[1]:= plusFC = Function[{x},Function[{y},Plus[x,y]]];
In[2]:= curry = Function[{x}, Function[{y}, Function[{z}, x[y, z]]]];
In[3]:= Plus[2,3]
In[4]:= plusFC[2][3]
In[5]:= curry[Plus][2][3]
Out[1]
Out[2]
Out[3]:=  5	
Out[4]:=  5	
Out[5]:=  5
2 Решение дифференциального уравнения с выводом регулируемой диаграммы
Manipulate[
 Module[{plt, sol}, 
  sol = NDSolve[{ 
     D[T[x, y, t], {t, 1}] == alpha (D[T[x, y, t], {x, 2}] + D[T[x, y, t], {y, 2}]), 
     T[x, y, 0] == 400 - 400 Exp[-100000 x^2 y^2 (x - 1)^2 (y - 1)^2] 
                 + 350 Exp[-100000 x^2  (x - 1)^2],
     T[x, 0, t] == 350 Exp[-100000 x^2  (x - 1)^2], 
     T[x, 1, t] == 350 Exp[-100000 x^2  (x - 1)^2], T[0, y, t] == 350,
     T[1, y, t] == 350},
     {T[x, y, t]}, {x, 0, 1}, {y, 0, 1}, {t, 0, 100}, PrecisionGoal -> 2]; 
  plt = ContourPlot[ 
    T[x, y, t] /. sol /. t -> time, {x, 0, 1}, {y, 0, 1}, 
    ColorFunction -> "TemperatureMap", Contours -> 8, 
    PlotLabel     -> "temperature profile" ]], 
    {{time, 5, "time"}, 5, 100, 0.05, Appearance -> "Labeled"},
    {{alpha, 0.002, "thermal diffusivity"}, 0.001, 0.005, 0.001, Appearance -> "Labeled"},
 TrackedSymbols :> {alpha, time}]
3 Решатель судоку
solve[sudoku_] := NestWhile[Join @@ Table[ Table[ReplacePart[s, #1 -> n], {n, #2}] & @@ 
      First@ SortBy[
          {#, Complement[Range@9, s[[First@#]], s[[;; , Last@#]], 
            Catenate@ Extract[Partition[s, {3, 3}], Quotient[#, 3, -2]]]} & /@ 
          Position[s, 0, {2}], Length@Last@# &], {s, #}] &, {sudoku}, !FreeQ[#, 0] &]
4 Реализация алгоритма быстрой сортировки
QuickSort[x_List] := 
 Module[{pivot},
  If[Length@x <= 1, Return[x]];
  pivot = RandomChoice@x;
  Flatten@{QuickSort[Cases[x, j_ /; j < pivot]],
           Cases[x, j_ /; j == pivot], 
           QuickSort[Cases[x, j_ /; j > pivot]]}]
qsort[{}] = {};
qsort[{x_, xs___}] := Join[qsort@Select[{xs}, # <= x &], {x}, qsort@Select[{xs}, # > x &]];
QuickSort[{}] := {};
QuickSort[list : {__}] := 
 With[{pivot = RandomChoice[list]}, 
  Join[<|1 -> {}, -1 -> {}|>, GroupBy[list, Order[#, pivot] &]] // 
  Catenate[{QuickSort@#[1], #[0], QuickSort@#[-1]}] &]
5 Программа, выводящая произвольный текст в ASCII 3D псевдографике
locs = Position[ImageData@ Binarize@ Rasterize["text", ImageSize -> 150], 0];
Print[StringJoin /@ 
    ReplacePart[
        ReplacePart[
             ConstantArray[" ", {Max[locs[[All, 1]]] + 1, Max[locs[[All, 2]]] + 1}], 
             locs -> "\\"],
        Map[# + 1 &, locs, {2}] -> "#"], "\n"];

Особенности работы в среде программирования Wolfram Mathematica

Ноутбуки и палитры

Структура ячеек

Структура ноутбуков

Форматы файлов

Шаблоны функций (сниппеты)

Двумерные конструкции

Автодополнения и контекстные меню

Интеграция с другими системами

Структура системы Wolfram

Система Wolfram является модульной системой, в которой ядро, которое занимается вычислениями, отделено от внешней оболочки, которая отвечает за взаимодействие с пользователем. Таким образом, имеется возможность запускать внешнюю оболочку на одном компьютере, а ядро, или несколько ядер – на других, возможно, удалённых компьютерах.

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

Два других интерфейса системы Wolfram – текстовый интерфейс и WSTP-интерфейс (Wolfram Symbolic Transfer Protocol, символьный протокол передачи Wolfram). WSTP-интерфейс служит для взаимодействия с другими средами и программами. На его основе реализованы связи с различными языками и средами, в том числе J/Link, .NET/Link и прочие.

Компоненты и интерфейсы системы Wolfram
Внутренние компненты Ядро Wolfram Language Компонент, реализующий вычисления
Внешняя оболочка (фронт-энд)

системы Wolfram

Компонент, отвечающий за взаимодействие с пользователем
Интерфейсы Ноутбук Интерактивное взаимодействие с пользователем
Текстовый Взаимодействие через консоль
WSTP Взаимодействие с другими программами


Поддерживаемые форматы

Интеграция с JAVA

Интеграция Wolfram Language с Java осуществляется с помощью пакета J/Link, который позволяет выполнять код на Java в Wolfram Language, а также управлять ядром Wolfram Language из программ на Java. Данный пакет предоставляет пользователям WL использовать возможности классов Java, а Java программистам даёт возможность использовать Wolfram Language в качестве командной строки для реализации скриптов, одновременного написания и тестирования классов, а также для реализации вычислительных возможностей Wolfram Language в Java программах.

J/Link позволяет загружать Java классы в Wolfram Language, а затем создавать объекты, вызывать методы, осуществлять доступ к полям. Таким образом, все возможности языка Java могут быть реализованы в Wolfram Language.

К примеру, можно реализовать основанный на Java пользовательский интерфейс полностью внутри Wolfram Language. Это может быть как простой индикатор выполнения для длительных расчётов, так и сложный многокомпонентный полностью независимый интерфейс с использованием AWT, Swing и прочих библиотек. J/Link позволяет писать Java программы на языке Wolfram Language. В целом, функционал можно описать так:

  • вызов Java методов из Wolfram Language; 
  • написание Java программ, использующих сервисы Wolfram инфраструктуры;
  • создание альтернативного фронт-энда Wolfram Language; 
  • создание диалоговых окон и других элементов интерфейса для программ на Wolfram Language; 
  • написание апплетов, использующих ядра Wolfram Language на стороне клиента/сервера; 
  • написание сервлетов, позволяющих иметь доступ к Wolfram инфраструктуре через HTTP. 

J/Link – продукт с открытым исходным кодом, который содержит компоненты, написанные на Wolfram Language, Java и C. Ключевым компонентом данного интерфейса является WSTP – протокол Wolfram Research, осуществляющий связь Wolfram Language с другими программами. J/Link является надстройкой над WSTP, предоставляя пользователям более высокоуровневый интерфейс.

Подготовка пакета к использованию:

In[1]:= Needs["JLink`"] (* Загрузка пакета *)
In[2]:= InstallJava[]   (* Установка и подготовка к использованию Java runtime*)

Пример использования:

In[1]:= Needs["JLink`"]
        InstallJava[]
        sha256Signature[bytesList_] := 
         JavaBlock@
          Module[{mdo}, LoadJavaClass@ "java.security.MessageDigest";
           mdo = MessageDigest`getInstance@ "SHA-256";
           mdo@ update[bytesList];
           mdo@ digest[]]
        sha256Signature@ Range@10
Out[1]= {-56, 72, -31, 1, 63, -97, 4, -87, -42, 63, -92, 60, -25, -3, 74, 
         -16, 53, 21, 44, 124, 102, -102, 74, 64, 75, 103, 16, 124, -18, 95, 
          46, 78}

Интеграция со средой разработки .NET

Интерфейс .NET/Link позволяет как работать с .NET напрямую через Wolfram Language, так и вызывать его из .NET программ. Функционал интерфейса схож с J/Link, однако важным отличием является то, что .NET является средой, нейтральной к языкам, то есть позволяет организовать связь Wolfram Language со всеми языками, для которых представлены компиляторы в .NET. В числе данных языков C#, Visual Basic .NET, JScript, Visual J# .NET, C++ а также Fortran, Perl, Python, Eiffel и COBOL. Использование .NET/Link вместо J/Link может быть предпочтительнее в случае разработки приложений исключительно под Windows, а J/Link лучше подходит для кроссплатформенной разработки. Одним из преимуществ перед является возможность вызывать DLL в С-стиле прямо из Wolfram Language и управлять COM-объектами.

In[1]:= Needs["NETLink`"] (* Загрузка пакета *)
In[2]:= InstallNET[]      (* Установка и подготовка к использованию .NET runtime*)

Использование

Категория C# Wolfram Language
Конструкторы MyClass obj = new MyClass(args); obj = NETNew["MyClass", args];
Методы obj.MethodName(args); obj@MethodName[args]
Свойства и поля obj.PropertyOrFieldName = 1; value = obj.PropertyOrFieldName; obj@PropertyOrFieldName = 1; value = obj@PropertyOrFieldName;
Статические методы MyClass.StaticMethod(args); MyClass`StaticMethod[args];
Статические свойства и поля MyClass.StaticPropertyOrField = 1; value = MyClass.StaticPropertyOrField; MyClass`StaticPropertyOrField = 1; value = MyClass`StaticPropertyOrField;

Интеграция с R

Интеграция Wolfram Language с языком программирования R осуществляется с помощью интерфейса RLink, который реализован через JLink и RJava / JRI Java библиотеки. С его помощью возможно осуществлять обмен данными между двумя системами и выполнять код на R прямо в Wolfram Language.

Подготовка пакета к использованию:

In[1]:= Needs["RLink`"]   (* загрузка пакета RLink *)
In[2]:= InstallR[]        (* Конфигурирование и запуск среды исполнения R *)
In[3]:= REvaluate["{      (* Выполнение кода на R *)
 x <- c(0,1,1,2,3,5,8,13,21,34) 
 mx<- mean(x)
 medx<-median(x)
 sdx <- sd(x)
 varx<- var(x)
 results <-c(mx,medx,sdx,varx)
 }"]
Out[3]= {8.8, 4., 11.0333, 121.733}

Конвертация из Wolfram Language в R:

In[3]:= ToRForm[Range[10]]
Out[3]= RVector["integer", {1, 2, 3, 4, 5, 6, 7, 8, 9, 10},  RAttributes[]]

Конвертация из R в Wolfram Language:

In[3]:= FromRForm[ RVector["integer", {1, 4, 2, 5, 3, 6},
        RAttributes["dim" :> RVector["integer", {2, 3}, RAttributes[]]]]]
Out[3]= {{1, 2, 3}, {4, 5, 6}}

Поддержка C кода

Работа с TeX/LATeX

Интеграция с Excel

Интеграция с CAD системами

История версий

Наименование Версия Дата релиза[103] Основные изменения
Mathematica 1.0 23 июня 1988[103][104][105][106]
  • Первый выпуск Mathematica.
1.1 1989[107]
1.2 1 августа 1989[108]
  • Интерфейс под Macintosh.
  • Поддержка удалённых ядер.
  • Заметно улучшено символьное интегрирование.
  • Возможность решать элементарные дифференциальные уравнения посредством функции DSolve.
  • Решение трансцендентных и других уравнений, которые требуют явного использования обратных функций.
  • Точные интерполяционные многочлены.
  • Добавлены функции LinearProgramming, ConstrainedMax и ConstrainedMin.
  • Добавлены матричные функции MatrixPower (возведение квадратной матрицы в степень) и MatrixExp (экспонента от матрицы).
  • Добавлен базис Грёбнера.
  • Добавлены опции Modulus вычисления по модулю функций Det, Inverse и LinearSolve.
  • Добавлены стандартные пакеты Statistics и Graphics.
  • Много новых графических опций и свойств, включая axes (оси) и labels (заголовки) для 3-мерной графики.
  • Значительно улучшена эффективность нахождения НОД (наибольшего общего делителя), факторизация многочленов.
Mathematica 2 2.0 15 января 1991[109]
  • Численное решение обыкновенных дифференциальных уравнений.
  • Численный компилятор.
  • Улучшения в линейной алгебре.
  • Реализация алгоритма Риша для функции Integrate (интегрирование).
  • Символьное решение обыкновенных дифференциальных уравнений.
  • Ряды расширены на многие специальные функции.
  • Добавлен ParametricPlot3D.
  • Множество дополнительных средств оформления графики.
  • Улучшено исключение невидимых поверхностей для 3-мерной графики.
  • Множество операций над строками и файлами.
  • Протокол MathLink межпроцессного и сетевого взаимодействия.
  • Поддержка звука.
  • Поддержка наборов букв не только латинского алфавита.
  • Обнаружение ошибок и отладка программы.
  • Notebook-интерфейс.
2.1 15 июня 1992
2.2 1 июня 1993[110]
  • Внешний интерфейс под Windows с новыми командами по управлению файлами Mathematica.
  • Отдельный внешний интерфейс в Macintosh.
  • Внешний интерфейс для X Windows.
  • MathLink под Windows.
  • Версия для Linux.
  • Добавлена возможность построения кривых уровня.
  • Пакет для символьных решений дифференциальных уравнений первого порядка.
  • Добавлено 10 других пакетов в таких областях, как 3-мерное построение контурных графиков, вариационное исчисление и музыка.
  • Новые свойства справки, включай онлайновые руководства для X Windows и браузер функций для Macintosh и NeXT.
  • Более быстрые решения для разреженных систем линейных уравнений.
  • Символьное вычисление определённых интегралов расширено, включая проверку на наличие неинтегрируемых сингулярностей и разрезов функций с точками ветвления в интервале интегрирования.
Mathematica 3 3.0 3 сентября 1996[109]
  • Интерактивная система математического набора.
  • Алгебраические числа.
  • Компилятор Mathematica расширен для работы с массивами машинных чисел.
  • Поддержка нелинейного метода наименьших квадратов посредством техники Левенберга-Маргуардта.
  • Улучшена интерполяция (важно для нахождения результата численных обыкновенных дифференциальных уравнений).
  • Интервальная арифметика.
  • Новые функции для упрощения и преобразования выражений.
  • Оптимизированные функции базиса Грёбнера.
  • Много новых специальных функций.
  • Программирование обмена данными, основанное на исключениях.
3.0.1 29 июля 1997
Mathematica 4 4.0 19 мая 1999[111]
  • Широкие улучшения в скорости и эффективности численных вычислений.
  • Публикация документов в ряд форматов.
  • Проверка орфографии и автоматический перенос слов.
  • Прямой импорт и экспорт в более чем 20 форматов графических, звуковых файлов и файлов стандартных данных.
  • Расширен набор и произведены улучшения функций для анализа данных, включая корреляцию, конволюцию и новый алгоритм преобразований Фурье.
  • Поддержка проведения вычислений в специфических алгебраических областях.
  • Сетевое управление лицензией доступно на всех платформах.
  • Улучшения во многих встроенных функциях Mathematica.
4.0.1 сентябрь 1999
4.0.2 август 2000
4.1 2 ноября 2000
4.2 1 ноября 2002
  • Более прозрачная интеграция Java посредством J/Link 2.0 и встроенная Java Runtime Engine.
  • Улучшены линейное программирование и оптимизация.
  • Улучшение скорости и надёжности работы многих численных функций.
  • Улучшенное упрощение выражений.
  • Улучшения статистических функций, включая пакет ANOVA.
  • Включён новый пакет Combinatorica для комбинаторики и теории графов.
  • Включён новый пакет AuthorTools для технических публикаций.
  • Окружение слайд-шоу для презентаций.
  • Новые форматы импорта и экспорта, включающие FITS и STDS.
  • XML-расширения, которые позволяют сохранять файлы и выражения Mathematica как XML.
  • Включён новый пакет XML-средств для символьных манипуляций XML.
  • Поддержка экспорта в XHTML, включая таблицы стилей.
  • Расширенная поддержка MathML 2.0.
Mathematica 5.0 5.0 12 июня 2003[112]
5.0.1 январь 2004
Mathematica 5.1 5.1 25 октября 2004[113]
5.1.1 март 2005
Mathematica 5.2 5.2 20 июня 2005[114]
Mathematica 6 6.0 1 мая 2007[115][116]
  • Динамическая интерактивность, позволяющая создавать сложные динамические интерфейсы одной строчкой.
  • Эффектная настраиваемая визуализация для автоматического создания высококачественных графиков функций и данных.
  • Язык для интеграции данных, включая автоматическую интеграцию сотен стандартных форматов данных.
  • Загрузка по запросу данных по математике, физике, химии, финансовому делу, лингвистике и т. д.
  • Конструкция символьного интерфейса для немедленного создания произвольных интерфейсов посредством простых программ.
  • Автоматизированная вычислительная эстетика с алгоритмической оптимизацией для визуального представления.
  • Объединение активных графиков и элементов управления с поточным текстом и вводом.
6.0.1 5 июля 2007[117]
  • Расширены автоматические и ручные настройки прокси-сервера для соединения с интернетом.
  • Более полная документация по функциям Mathematica, унаследованным из более ранних версий.
  • Значительно улучшена производительность MathLink на Mac- и Unix-системах.
  • Улучшена производительность различных конвертеров в функциях Import и Export.
  • Более быстрая работа ListPlot, ListPlot3D и Plot3D для большого числа точек.
  • Улучшено исходное окно системы справки.
  • Расширения для автоматического определения формата файла для функции Import.
  • Полная поддержка масштабных значений FontSize.
  • Улучшения в импорте Table, CSV, TSV и MathML.
  • Добавлены пункт меню Evaluate Notebook и подменю Magnification.
  • Дополнительные пример применения функций Mathematica и учебные руководства.
  • Обновления поддерживаемых данных.
6.0.2 март 2008[118]
  • Новая документация Virtual Book с обновлённым содержанием Mathematica Book.
  • Новый Function Navigator (навигатор функций), простой просматриваемый обзор всех объектов Mathematica.
  • Несколько дополнительных улучшений документации, включая прирост производительности, индексирование и систему ссылок.
  • Полная 64-битная производительность на Intel Mac.
  • Улучшенная производительность конвертеров Import и Export на Mac и Unix.
  • Значительное ускорение импорта файлов двоичных данных.
  • Улучшено поведение графики при экспорте в TeX и PDF.
  • Улучшенный импорт метаданных из файлов астрономических изображений FITS.
  • Новый инструмент выбора координаты и усовершенствованная подсветка графических выборов для интерактивных графиков.
6.0.3 июнь 2008[118]
  • Полный список стандартных дополнительных пакетов добавлен в Documentation Center (систему справки Mathematica).
  • Улучшения в документации пакетов.
  • Улучшенное обращение с опциями для MatrixForm и TableForm.
  • Повышена стабильность внешнего интерфейса с Manipulate, содержащим выбранный график.
  • Улучшено обращение с опциями для ListPlot.
  • Улучшено обращение с комбинациями AxesLabel и Ticks.
  • Улучшено обращение с числовыми данными без пробелов в импорте Protein Data Bank (PDB).
  • Изменена обмотка при экспорте в LightWave Object (LWO) для более близкого соответствия производственным стандартам.
  • Улучшена интерактивность под Linux с композитными менеджерами окон, такими, как Compiz.
  • Улучшено поведение внешнего интерфейса в Ubuntu Hardy и Fedora Core 9.
Mathematica 7 7.0 18 ноября 2008[119]
7.0.1 5 марта 2009[120]
  • Прирост производительности функций обработки изображений ядра.
  • Вызов правой кнопкой мыши меню для быстрого управления изображениями.
  • Новые учебники, руководства «How to» и скринкасты.
  • Тысячи новых примеров в документации.
  • Улучшен поиск по документации.
  • Интеграция со средствами рукописного ввода математических выражений в Windows 7.
  • Интеграция со следующим релизом gridMathematica Server.
Mathematica 8 8.0 15 ноября 2010
8.0.1 23 октября 2011
  • Много новых автоматических упрощений для получаемых распределений, включая аффинные преобразования, суммы переменных, смеси параметров и цензурированные и усечённые распределения.
  • Улучшены результаты для функции Dot (произведение) для списков с большим количеством (> 1 000 000) целых элементов.
  • Улучшена стабильность при работе с процессорами Intel Sandy Bridge посредством включения новой версии библиотеки Intel Math Kernel Library.
  • Улучшение производительности и надёжности для многих операций с графами и сетями.
  • Уменьшено время загрузки внешнего интерфейса.
  • Улучшено создание соединений MathLink TCPIP при определённых специфических условиях.
  • Улучшен экспорт рисунков «Real» и «Real32» в TIFF для совместимости с большим количеством внешних программ для просмотра TIFF.
  • Улучшенная функциональность и стабильность Домашней редакции (Home Edition) Mathematica посредством включения 64-битных компонент.
8.0.2
  • Была выпущена и распространялась исключительно с gridMathematica 8.0.2, не имела отличий в функциональности от версии 8.0.1.
8.0.3
  • Ветвь для разработки Wolfram CDF Player 8.0.3. Версия для пользователей не выпускалась.
8.0.4 26 октября 2011
  • Новые опции меню и интерактивный мастер создания CDF-документов.
  • Новые функции CDFInformation и CDFDeploy для программного создания CDF-файлов.
  • Новый индикатор процента загрузки для браузерного CDF-плагина.
  • Улучшены стабильность, скорость и безопасность браузерного CDF-плагина.
  • Испытана работа под Mac OS X Lion.
  • Улучшено использование памяти функцией Share при хранении больших массивов данных.
  • Обновлена библиотека MKL для увеличения производительности.
  • Новая подсветка синтаксиса, оповещающая об использовании Module-переменной в Dynamic.
  • Улучшения производительности для функций цитирования.
  • Улучшено поведение оптимизированных переменных в компилируемых условных выражениях.
  • Улучшено поведение внешнего интерфейса при сохранении не озаглавленных файлов новых версий Linux.
Mathematica 9 9.0.0 28 ноября 2012
Mathematica 10 10.0.0 9 июля 2014
  • много изменений
10.0.1 16 сентября 2014
  • устранены проблемы, связанные с хаотичным поведением фронт-энда при переключении раскладки клавиатуры на русскую, отказом от импорта файлов в имени которых есть кириллические символы, а также проблемы с горячими клавишами.
  • Появилась более полная интеграция с Wolfram Cloud.
10.0.2 10 декабря 2014
10.1 30 марта 2015
  • поддержка Wolfram Data Drop[121]
10.2 14 июля 2015
10.3 15 октября 2015

Расширения Mathematica

AceFEM — среда для решения физических и математических задач методом конечных элементов.

AceGen — система автоматической генерации и оптимизации кода.

Analog Insydes — пакет для моделирования, анализа и создания электрических схем.

BEST Viewpoints — программа для получения определённой информации из набора данных.

Derivatives Expert — анализ ценных бумаг и деривативов.

Experimental Data Analyst — обработка экспериментальных данных, определение параметров зависимостей, оценка ошибок.

Fuzzy Logic — набор инструментов для создания, модификации и визуализации нечётких множеств, а также систем, основанных на нечёткой логике.

Geometrica — геометрическая энциклопедия с возможностями точного построения геометрических объектов и проверки утверждений.

Geometry Expressions — расширение для символьной геометрии.

Global Optimization — глобальная оптимизация нелинейных функций.

KNITRO for Mathematica — решение задач крупномасштабной нелинейной оптимизации.

LensLab — пакет для трассировки лучей, рендеринга и анализа оптических систем.

LinkageDesigner — пакет виртуального макетирования связей.

machine learning framework — построение точных моделей по наборам данных.

MathCode C++ — генерирует оптимизированный код на C++ из программы на Mathematica.

MathCode F90 — генерирует оптимизированный код на Fortran 90 из программы на Mathematica.

Mathematica Link for Excel — взаимодействие Mathematica с Excel.

Mathematica Link for LabVIEW — взаимодействие Mathematica с LabVIEW.

MathModelica (SystemModeler) — платформа для разработки инженерных и биологических моделей.

MathOptimizer — система оптимизации.

MathOptimizer Professional — система оптимизации, использующая внешнее приложение LGO Solver Suite.

MechanicalSystems — анализ механических систем.

Neural Networks — моделирование и анализ искусственных нейронных сетей.

Objectica — полная поддержка возможностей объектно-ориентированного программирования в Mathematica.

Operations Research — решения задач линейной оптимизации, квадратичного программирования, поиска наименьшего пути, комбинаторной оптимизации и эвристики.

Optica — проектирование и анализ оптических систем.

PathwayLab Research Edition — анализ цепочек биохимических реакций.

SchematicSolver — аналитическое исследование аналоговых и цифровых систем.

SEM — поддержка супервычислений.

SmartCAE Heat Transmission — моделирование теплопередачи.

Statistical Inference Package — интерфейс для статического анализа.

Structural Mechanics — моделирование систем механики сплошных сред.

Tensors in Physics — пакет тензорных вычислений.

Time Series — среда для анализа данных, зависящих от времени.

TSi ProPac — моделирование систем управления и динамики многих тел.

UnRisk PRICING ENGINE — быстрый расчёт финансовых рисков.

VisualDSolve — визуализация дифференциальных уравнений.

Примечания

  1. 1 2 https://reference.wolfram.com/language/ref/format/3DS.html
  2. 1 2 https://reference.wolfram.com/language/ref/format/ACO.html
  3. 1 2 https://reference.wolfram.com/language/ref/format/AIFF.html
  4. 1 2 https://reference.wolfram.com/language/ref/format/AVI.html
  5. https://www.wolframalpha.com/input/?i=Entity%5B%22FileFormat%22%2C+%22BDF-4%22%5D
  6. 1 2 https://reference.wolfram.com/language/ref/format/BMP.html
  7. 1 2 https://reference.wolfram.com/language/ref/format/BZIP2.html
  8. 1 2 https://reference.wolfram.com/language/ref/format/CDF.html
  9. https://reference.wolfram.com/language/ref/format/CIF.html
  10. 1 2 https://reference.wolfram.com/language/ref/format/CSV.html
  11. https://reference.wolfram.com/language/ref/format/DBF.html
  12. 1 2 https://reference.wolfram.com/language/ref/format/DICOM.html
  13. 1 2 https://reference.wolfram.com/language/ref/format/DIF.html
  14. 1 2 https://reference.wolfram.com/language/ref/format/DIMACS.html
  15. 1 2 https://reference.wolfram.com/language/ref/format/DOT.html
  16. 1 2 https://reference.wolfram.com/language/ref/format/DXF.html
  17. https://reference.wolfram.com/language/ref/format/EDF.html
  18. 1 2 https://reference.wolfram.com/language/ref/format/EPS.html
  19. https://reference.wolfram.com/language/ref/format/FASTA.html
  20. https://reference.wolfram.com/language/ref/format/FASTQ.html
  21. https://reference.wolfram.com/language/ref/format/FITS.html
  22. https://reference.wolfram.com/language/ref/format/FLAC.html
  23. https://reference.wolfram.com/language/ref/format/GenBank.html
  24. https://reference.wolfram.com/language/ref/format/GeoTIFF.html
  25. https://reference.wolfram.com/language/ref/format/GIF.html
  26. https://reference.wolfram.com/language/ref/format/GPX.html
  27. https://reference.wolfram.com/language/ref/format/Graphlet.html
  28. https://reference.wolfram.com/language/ref/format/GraphML.html
  29. https://reference.wolfram.com/language/ref/format/GRIB.html
  30. https://reference.wolfram.com/language/ref/format/GTOPO30.html
  31. https://reference.wolfram.com/language/ref/format/GXL.html
  32. https://reference.wolfram.com/language/ref/format/GZIP.html
  33. 1 2 https://reference.wolfram.com/language/ref/format/HDF.html
  34. https://reference.wolfram.com/language/ref/format/HTML.html
  35. https://reference.wolfram.com/language/ref/format/ICO.html
  36. https://reference.wolfram.com/language/ref/format/ICS.html
  37. https://reference.wolfram.com/language/ref/format/JPEG.html
  38. https://reference.wolfram.com/language/ref/format/JPEG2000.html
  39. https://reference.wolfram.com/language/ref/format/JSON.html
  40. https://reference.wolfram.com/language/ref/format/JVX.html
  41. https://reference.wolfram.com/language/ref/format/KML.html
  42. https://reference.wolfram.com/language/ref/format/LaTeX.html
  43. https://reference.wolfram.com/language/ref/format/LWO.html
  44. https://reference.wolfram.com/language/ref/format/MAT.html
  45. https://reference.wolfram.com/language/ref/format/MathML.html
  46. https://reference.wolfram.com/language/ref/format/MDB.html
  47. https://reference.wolfram.com/language/ref/format/MGF.html
  48. https://reference.wolfram.com/language/ref/format/MIDI.html
  49. https://reference.wolfram.com/language/ref/format/MPS.html
  50. https://reference.wolfram.com/language/ref/format/MTP.html
  51. https://reference.wolfram.com/language/ref/format/MTX.html
  52. https://reference.wolfram.com/language/ref/format/NDK.html
  53. https://reference.wolfram.com/language/ref/format/NetCDF.html
  54. https://reference.wolfram.com/language/ref/format/NEXUS.html
  55. https://reference.wolfram.com/language/ref/format/OBJ.html
  56. https://reference.wolfram.com/language/ref/format/OFF.html
  57. https://reference.wolfram.com/language/ref/format/OpenEXR.html
  58. https://reference.wolfram.com/language/ref/format/PBM.html
  59. https://reference.wolfram.com/language/ref/format/PGM.html
  60. https://reference.wolfram.com/language/ref/format/PCX.html
  61. https://reference.wolfram.com/language/ref/format/PDB.html
  62. https://reference.wolfram.com/language/ref/format/PDF.html
  63. https://reference.wolfram.com/language/ref/format/PLY.html
  64. https://reference.wolfram.com/language/ref/format/PNG.html
  65. https://reference.wolfram.com/language/ref/format/PPM.html
  66. https://reference.wolfram.com/language/ref/format/QuickTime.html
  67. https://reference.wolfram.com/language/ref/format/RIB.html
  68. https://reference.wolfram.com/language/ref/format/RSS.html
  69. https://reference.wolfram.com/language/ref/format/RTF.html
  70. https://reference.wolfram.com/language/ref/format/SCT.html
  71. https://reference.wolfram.com/language/ref/format/SDF.html
  72. https://reference.wolfram.com/language/ref/format/SFF.html
  73. https://reference.wolfram.com/language/ref/format/SHP.html
  74. https://reference.wolfram.com/language/ref/format/SMILES.html
  75. https://reference.wolfram.com/language/ref/format/SND.html
  76. https://reference.wolfram.com/language/ref/format/SP3.html
  77. https://reference.wolfram.com/language/ref/format/STL.html
  78. https://reference.wolfram.com/language/ref/format/SXC.html
  79. https://reference.wolfram.com/language/ref/format/TAR.html
  80. https://reference.wolfram.com/language/ref/format/Text.html
  81. https://reference.wolfram.com/language/ref/format/TGA.html
  82. https://reference.wolfram.com/language/ref/format/TGF.html
  83. https://reference.wolfram.com/language/ref/format/TIFF.html
  84. https://reference.wolfram.com/language/ref/format/TLE.html
  85. https://reference.wolfram.com/language/ref/format/TSV.html
  86. https://reference.wolfram.com/language/ref/format/UUE.html
  87. https://reference.wolfram.com/language/ref/format/VCF.html
  88. https://reference.wolfram.com/language/ref/format/VCS.html
  89. https://reference.wolfram.com/language/ref/format/VTK.html
  90. https://reference.wolfram.com/language/ref/format/WAV.html
  91. https://reference.wolfram.com/language/ref/format/XBM.html
  92. https://reference.wolfram.com/language/ref/format/XHTML.html
  93. https://reference.wolfram.com/language/ref/format/XLS.html
  94. https://reference.wolfram.com/language/ref/format/XML.html
  95. https://reference.wolfram.com/language/ref/format/XYZ.html
  96. https://reference.wolfram.com/language/ref/format/ZIP.html
  97. https://reference.wolfram.com/language/ref/format/AU.html
  98. https://reference.wolfram.com/language/ref/format/Base64.html
  99. https://reference.wolfram.com/language/ref/format/BYU.html
  100. https://reference.wolfram.com/language/ref/format/C.html
  101. https://reference.wolfram.com/language/ref/format/EMF.html
  102. 1 2 The Software Engineering of Mathematica — 2012.
  103. 1 2 [1], Nasser M. Abbasi.
  104. Mathematica Scrapbook: June 23, 1988: Mathematica 1.0 Is Launched!
  105. http://www.mathematica-journal.com/issue/v9i1/news.html Mathematica Journal, Volume 9, Issue 1
  106. Supercomputer Pictures Solve the Once Insoluble, John Markoff, October 30, 1988.
  107. Mathematica 1.1. Biotechnology Software. Vogel, W. K. (1989)
  108. Mathematica 1.2 adds new graphics options: upgrade also promises concurrent operations by Elinor Craig, MacWeek, July 25, 1989.
  109. 1 2 [2], Wolfram news archive, 1996.
  110. New version of Mathematica, Mechanical Engineering, June 1, 1993.
  111. Mathematica 4.0 by Charles Seiters, Macworld, October 1, 1999.
  112. Mathematica 5.0 Adds Up: Exactly 15 years after Mathematica’s initial release, Wolfram Research has released Mathematica , PC Magazine, September 3, 2003.
  113. Mathematica 5.1’s Web Services Add Up; Mathematica 5.1 delivers improvements over Version 5.0 that are vastly out of proportion for a .1 upgrade. by Peter Coffee, eWeek, December 6, 2004.
  114. Mathematica hits 64-bit, MacWorld UK, July 13, 2005.
  115. [3] Today, Mathematica is reinvented — Blog by Stephen Wolfram
  116. Mathematica 6: Felix Grant finds that version 6 of Wolfram Research’s symbolic mathematical software really does live up to its expectations. Scientific Computing, 2007.
  117. [4], Wolfram Blog, 2007.
  118. 1 2 [5], Mathematica Quick Revision History.
  119. [6], Mathematica 7.0 Released Today! — Blog by Stephen Wolfram
  120. [7], Announcing Mathematica 7.0.1.
  121. [8], Wolfram Data Drop is Live

Ссылки

Литература

  • Дьяконов В. П. Компьютерная математика. Теория и практика. — М., СПб: «Нолидж», «Питер», 1999,2001. — С. 1296. — ISBN 5-89233-065-4.
  • Дьяконов В. П. Системы символьной математики Mathematica 2 и Mathematica 3. — М.: «СК-ПРЕСС», 1998. — С. 320. — ISBN 5-89233-017-6.
  • Дьяконов В. П. Mathematica 4 с пакетами расширения. — М.: «Нолидж», 2000. — С. 608. — ISBN 5-89251-086-7.
  • В. Дьяконов, Ю. Новиков, В. Рычаков. Компьютер для студента. Самоучитель. — СПб.: «ПИТЕР», 2000. — С. 592. — ISBN 5-272-00082-X.
  • Дьяконов В. П. Mathematica 4. Учебный курс. — СПб.: «ПИТЕР», 2001. — С. 656. — ISBN 5-572-00275-X.
  • Дьяконов В. П. Mathematica 4.1/4.2/5.0 в математических и научно-технических расчетах. — М.: «СОЛОН-Пресс», 2004. — С. 696. — ISBN 5-98003-065-4.
  • Морозов А. А., Таранчук В. Б. Программирование задач численного анализа в системе Mathematica: Учеб. пособие.- Мн.: БГПУ, 2005. — 145 с. http://elib.bsu.by/handle/123456789/27553
  • Дьяконов В. П. Mathematica 5/6/7. Полное руководство. — М.: «ДМК Пресс», 2009. — С. 624. — ISBN 978-5-94074-553-2.
  • Дьяконов В. П. Mathematica 5.1/5.2/6 в математических и научно-технических расчетах. Изд-е второе дополненное и переработанное. — М.: «СОЛОН-Пресс», 2008. — С. 744. — ISBN 978-5-91359-045-9.
  • Дьяконов В. П. Mathematica 5.1/5.2/6. Программирование и математические вычисления. — М.: «ДМК-Пресс», 2008. — С. 576. — ISBN 5-94074-405-2.
  • Чарльз Генри Эдвардс , Дэвид Э. Пенни. Дифференциальные уравнения и проблема собственных значений: моделирование и вычисление с помощью Mathematica, Maple и MATLAB = Differential Equations and Boundary Value Problems: Computing and Modeling. — 3-е изд. — М.: «Вильямс», 2007. — ISBN 978-5-8459-1166-7.
  • Шмидский Яков Константинович. Mathematica 5. Самоучитель. Система символьных, графических и численных вычислений. — М.: «Диалектика», 2004. — С. 592. — ISBN 5-8459-0678-4.
  • Дьяконов Владимир Павлович. Вейвлеты. От теории к практике. Издание 2-е дополненное и переработанное. — М.: «СОЛОН-Пресс», 2004. — С. 400. — ISBN 5-98003-5.
  • Глушко В. П., Глушко А. В. Курс уравнений математической физики с использованием пакета Mathematica. — СПб.: «Лань», 2010. — С. 320. — ISBN 978-5-8114-0983-9.
  • Таранчук В.Б. Основные функции систем компьютерной алгебры. — Минск: БГУ, 2013. — 59 p.