Введение в Wolfram Mathematica
На хабре уже не раз упоминалась Mathematica и если вам хочется начать работать с ней, то эта статья для вас. Я расскажу об основных аспектах работы с нею и покажу несколько интересных нововведений из последних версий Wolfram Mathematica.
Wolfram Mathematica — это программное обеспечение, не только для математических вычислений, это гораздо больше: от моделирования и симуляции, визуализации, документации, до создания веб-сайтов. Mathematica обладает возможностью осуществлять вызовы функций и принимать вызовы с C, .NET, Java и других языков, генерировать C код, компилировать автономные библиотеки и исполняемые файлы.
Обо всех достоинствах Mathematica можно почитать на официальном сайте
Для начала работы с Mathematica вам необходимо её получить и установить на свой компьютер. Mathematica прекрасно работает на Windows, Mac, Linux.
Скачать и бесплатно попробовать Mathematica так же можно на оф. сайте.
Если же вы надумаете её купить, то цены на неё вполне приемлемые. Например для студента за семестровый вариант она обойдётся в $44.95. Для домашнего использования в $295. Если вы планируете использовать её для коммерческих целей, то наилучший вариант лицензии это Standard Edition (Вы получаете подписку на Premier Service и бесплатные обновления).
Изучение
Самая лучшая книга по Mathematica — это встроенный Help. Имеет огромную кучу туториалов и советов. Огромное множество примеров. Всё что вам может понадобится находится там. Это первое место где нужно искать нужную информацию. Однако, если вам нужно больше, в интернете огромное множество сообществ посвещённых Mathematica. (Например: mathematica.stackexchange.com).
Блокноты и Ячейки
- Ячейки ввода – в них задаются команды, которые будут вычислены
- Ячейки результата – в них выводится результат вычислений
- Другие ячейки – ячейки с текстом, заголовки и все остальное

Нумерация ячеек идёт в том порядке в котором вы их запустили. Для того что-бы вычислить значение ячейки нажмите SHIFT+ENTER или правый ENTER, либо Evaluation -> Evaluate Cells.
Для того что-бы обратиться к значению последней вычисленной ячейке используйте знак %.

Бесконечная точность
Одной из замечательных особенностью Mathematica является концепция бесконечной точности. Если результатом вычислений является корень из двух, то она так и напишет.

Вы можете попросить округлить ответ так:

Или же добавить дробную часть (или просто точку) к числам в выражении:

Ввод формул
В Mathematica реализован удобный ввод формул. Но для начала вам могут пригодится палитры (На картинке справа находится Palettes -> Basic Math Assistant).
У каждой кнопочки на палитре, есть свой горячие клавиши. Например, что бы написать знак интеграла нужно нажать Esc int Esc.
Вот список наиболее часто используемых горячих клавиш:
- CTRL+2 – Шаблон квадратного корня
- CTRL+6 – Верхний индекс
- CTRL+7 – Надстрочный символ
- CTRL+- – Нижний индекс
- CTRL+= – Подстрочный символ
- CTRL+/ – Дробь
- CTRL+2, затем CTRL+5 – Корень любой степени
- ALT+ENTER – Создает новую ячейку
- SHIFT+CTRL+D – Разбивает текущую ячейку
- SHIFT+CTRL+M – Склеивает несколько ячеек
Выражения, Списки, Функции
Все что записано внутри ячеек является выражениями. Каждое выражение состоит из головы и списка. Например в выражение Power[2, 2]. В нём головой является Power, а списком 2, 2.
Даже 2+2 является выражением. Чтобы посмотреть как Mathematica интерпретирует ввод, есть функция FullForm:

Функция Hold просит математику не вычислять выражение. Обратной функция является Evaluate.
Списки в Mathematica создаются при помощи фигурных скобок: <. >, что является сокращением от List[. ].
Для манипуляции со списками в Mathematica есть огромная куча функций. Всё что вам может когда-нибудь понадобиться уже есть там. Вам остаётся только найти нужную функцию.

Для того чтобы получить элемент списка есть функция Part, c сокращённым вариантом в виде двойных квадратных скобок [[. ]] либо с толстыми скобками (Esc [[ Esc).
Поскольку всё является выражениями (и списки тоже), мы может получить голову выражения таким вот способом:

Таким образом индекс первого элемента в списке это 1.
Так же есть возможность заменить голову любого выражения. Это делает функция Apply[head, expression]. Либо её сокращённый вариант @@.

В Mathematica есть несколько способов применить функции(головы) к выражениям. Это обычные квадратные скобки: f[x], префикс: f@x, постфикс: x // f

А так же инфикс: из x ~ f ~ y получим f[x, y].
Однострочное программирование
В Mathematica есть множество функций для обычного программирования, такие как For, If, Switch. Однако, их лучше не использовать без крайней необходимости. Так как практически всё тоже самое можно сделать в одну строчку при помощи специальных функций и их комбинированием (поначалу бывает сложно перестроиться на такой стиль программирования).
Вот хорошее видео демонстрирующее как работают некоторые из функций:
Динамические интерактивные вычисления
Одной из замечательнейших возможностью Mathematica, являются динамические вычисления. Они позволяют манипулировать данными и смотреть на то как динамически меняется результат.
Для динамических вычислений используются функции Dynamic, Manipulate и др.

Заключение
В статье я рассказал о основных аспектах работы в Mathematica. Есть также несколько других важных моментов, таких как паттерны, модули, ядра. О них я расскажу в следующий раз, если эта тема будет интересна вам.
PS Обо всех найденных ошибках сообщайте мне в личку.
UPDATE
Картинки исчезли. Восстановил пост в своём блоге elfet.ru/introduction-to-wolfram-mathematica
- Программирование
- Математика
О реализации параллельных вычислений в системе Wolfram Mathematica Текст научной статьи по специальности «Компьютерные и информационные науки»
Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Егорова Дарья Константиновна, Шмелева Мария Дмитриевна
В статье рассматриваются некоторые вопросы реализации параллельных вычислений в системе компьютерной алгебры Wolfram Mathematica . Проводится сравнительный анализ нескольких последовательных и параллельных алгоритмов, реализованных в
i Надоели баннеры? Вы всегда можете отключить рекламу.
Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Егорова Дарья Константиновна, Шмелева Мария Дмитриевна
Возможности параллельного программирования в математических пакетах
Оценка эффективности реализации параллельных алгоритмов на нрс-кластере
Реализация параллельного алгоритма глобального поиска на gpu
Обзор моделей параллельных вычислений
Повышение производительности расчета динамики частиц на параллельных системах
i Не можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.
Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.The article considers some issues of implementation of parallel computing in Wolfram Mathematica . The analysis of several sequential and parallel algorithms implemented in Wolfram Mathematica 8.0 and Visual Studio 2010 with OpenMP support is presented.
Текст научной работы на тему «О реализации параллельных вычислений в системе Wolfram Mathematica»
ШМЕЛЕВА М. Д., ЕГОРОВА Д. К.
О РЕАЛИЗАЦИИ ПАРАЛЛЕЛЬНЫХ ВЫЧИСЛЕНИЙ В СИСТЕМЕ WOLFRAM MATHEMATICA Аннотация. В статье рассматриваются некоторые вопросы реализации параллельных вычислений в системе компьютерной алгебры Wolfram Mathematica. Проводится сравнительный анализ нескольких последовательных и параллельных алгоритмов, реализованных в Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.
Ключевые слова: Wolfram Mathematica, последовательный алгоритм, параллельный алгоритм, время, ускорение, эффективность.
SHMELYOVA M. D., EGOROVA D. K.
ON IMPLEMENTATION OF PARALLEL COMPUTING IN WOLFRAM MATHEMATICA SYSTEM Abstract. The article considers some issues of implementation of parallel computing in Wolfram Mathematica. The analysis of several sequential and parallel algorithms implemented in Wolfram Mathematica 8.0 and Visual Studio 2010 with OpenMP support is presented.
Keywords: Wolfram Mathematica, sequential algorithm, parallel algorithm, time, acceleration, efficiency.
Система компьютерной алгебры Wolfram Mathematica является весьма эффективным средством вычислений. На сегодняшний день система содержит порядка 5 000 функций, многие из них написаны изначально в оптимизированном виде (особенно для низкоуровневых вычислений), а большинство операций в Wolfram Mathematica, таких как операции по снижению размерности, обработка статистических данных, обработка изображений и т.п. автоматически распараллеливаются на локальные ядра. Однако существует набор инструментов (например, ParallelSum, Parallelize, ParallelMap, ParallelTable, ParallelArray, ParallelCombine и т.д.) использование которых, при реализации многопоточных задач, призвано значительно ускорить код. Отметим, что в некоторых случаях ускорения может и не быть, или оно есть, но не достаточное по сравнению с применением других средств программирования для той же задачи. Это может быть связано с тем, что применение инструментов параллельного программирования в Wolfram Mathematica, возможно, решает задачи распределения данных и сбора результатов, не учитывая, например, накладные расходы и т.п.
Приведем несколько примеров. Все вычисления проведены на 2-х ядерном Intel Core 2 Duo с установленными лицензионными версиями Wolfram Mathematica 8.0 и Visual Studio 2010 c поддержкой OpenMP.
Проведем последовательное и параллельное вычисление суммы \00 000 i реализованное на Visual Studio 2010. Результаты измерения времени вычисления приведены на рисунках 1 и 2.
Рис. 1. Последовательный алгоритм. Рис. 2. Параллельный алгоритм.
Теперь произведем эти же вычисления в системе Wolfram Mathematica. Результаты приведены на рисунках 3 и 4.
Рис. 3. Последовательный алгоритм. Рис. 4. Параллельный алгоритм.
Последовательные вычисления произвели с помощью функции Sum. ParallelSum параллельная версия Sum, которая автоматически распределяет частичные сложения между различными ядрами и процессорами. Функция AbsoluteTiming возвращает реальное время вычисления своего аргумента в секундах и результат вычисления аргумента. Ее отличие от функции Timing заключается в том, что Timing измеряет количество процессорного времени, потребляемый ядром для оценки данного выражения. Ее результат лишь приблизителен, так как, в зависимости от базовой платформы, он может включать или не включать в себя процессорное время, используемое для системных вызовов, ошибок страниц и т.д. Она также не включает в себя время центрального процессора, используемого для параллельных процессов и потоков, и на ядра системы Wolfram Mathematica [3; 4].
Вычислим эффективность и ускорение алгоритмов (см. табл. 1).
Эффективность и ускорение алгоритмов
Visual Studio Wolfram Mathematica
Последовательный алгоритм Параллельный алгоритм Последовательный алгоритм Параллельный алгоритм
Время, Т 0,019353 0,002518 0,469 0,047
Т-, Ускорение, S=— Тп 7,685861795 9,9787234
5 Эффективность, E=- 3,84293 4,9893617
Из результатов таблицы 1 видно, что E>1, т.е. мы получили суперлинейное ускорение. Это может быть связано с тем, что, например, при реализации вычислений в Visual Studio в качестве последовательного алгоритма был применен не самый оптимальный алгоритм из известных, а при вычислениях реализованных в Wolfram Mathematica увеличение количества вычислений вызвало рост суммарного объема их оперативной и кэш памяти вследствие чего, большая часть данных умещается в кэше.[1]
Рассмотрим задачу вычисления числа п. Результаты замеров времени при параллельной и последовательной реализациях в Visual Studio и Wolfram Mathematica приведены в таблице 2.
Сравнительный анализ ускорения и эффективности при параллельной и последовательной реализациях алгоритма вычисления числа я в Visual Studio и Wolfram Mathematica
Visual Studio Wolfram Mathematica
Последовательный алгоритм Параллельный алгоритм Последовательный алгоритм Параллельный алгоритм
Время, T 0,064970 0,063345 126,0468750 96,672
т1 Ускорение, S=— Тп 1,025653 1,3038612
5 Эффективность, E=- 0,512826 0,65193
Из таблиц 1 и 2 видно, что время вычислений как последовательного, так и параллельного алгоритмов приведенных тестовых задач в Wolfram Mathematica существенно больше времени выполнения тех же задач в Visual Studio. Хотя ускорение, все же, достигает
удовлетворительных значений и в первом, и во втором случае. Следует заметить, что при повторном запуске одних и тех же вычислений в Wolfram Mathematica получаем худший результат при параллельных вычислениях, так как система «запоминает» предыдущие действия и при запуске последовательного алгоритма не тратит время на вычисления, а при запуске параллельных вычислений тратит время на распределение данных по ядрам.
Решение этих проблем [2] при реализации параллельных алгоритмов в системе Wolfram Mathematica может состоять в выполнении следующих действий:
1) при контрольных замерах времени загружать данные ядра только один раз;
2) избегать необходимости обмена данными между ядрами с помощью совместно используемых данных;
3) избегать повторения идентичных вычислений на отдельных ядрах.
1. Зюзьков В. М. Компьютерная алгебра. — Томск: Издательство Томского университета, 2014. — 121 с.
2. Mangano S. Mathematica Cookbook. — O’Reilly Media, 2010. — 830 р.
Как запустить терминал языка Wolfram Language
Терминал вычислительного ядра языка Wolfram Language – это текстовая среда для выполнения вычислений. У него есть много применений, включая диагностирование трудностей с установкой. Следующий пример содержит указания для системы Mathematica.
Windows
Щелкните на меню Пуск, выбирете All Programs ► Wolfram Mathematica, потом щелкните на программу Mathematica Kernel.
Mac

- Откройте приложение Finder и откройте в нем директорию Applications. Щелкните правой кнопкой мышки или щелкните мышкой, удерживая нажатой клавишу Control по иконке Mathematica в директории Applications и выберите “Show Package Contents” (отображать содержимое пакета).
- Появится новое окно. Перейдите в папку Contents ► MacOS.
- Дважды щелкните по иконке MathKernel, чтобы запустить терминал системы Mathematica.
Linux
Откройте системный терминал и выполните следующую команду:
math
Это запустит терминальный консоль системы Mathematica.
Wolfram mathematica как запустить вычисление

Wolfram Mathematica 11.3 — наиболее полная система для современных технических вычислений в мире, которая не имеет себе равных в большом диапазоне измерений и уникальна в своей поддержке современной среды и организации рабочего процесса для технических расчётов:
- имеет в наличии почти 5000 встроенных функций, покрывающих все области технических расчётов;
- строится на беспрецендентно мощных алгоритмах всех предметных областей, многие из которых были созданы, используя уникальные методы развития и возможности языка Wolfram Language;
- благодаря когерентному дизайну и использованию интуитивных названий функций, состоящих из полных английских слов, язык Wolfram Language исключительно просто читать, использовать и изучать;
- система предоставляет прогрессивную высокоуровневую среду (суперфункции, мета-алгоритмы) с максимальным уровнем автоматизации, что позволяет быть наиболее продуктивными;
- плавно интегрированна с облаком, позволяя совместное использование и облачные расчёты;
- построена с целью предоставления возможностей промышленной мощности, с эффективными алгоритмами во всех областях, способными решать крупномасштабные задачи с параллелизмом, вычислениями на графических процессорах и многим другим.
Вы можете ознакомиться с открытыми ресурсами компании WOLFRAM, посвященных вычислениям и знаниям, а также с коллекцией курсов для студентов и преподавателей, направленной на изучение Mathematica.
Для сотрудников, преподавателей и аспирантов университета доступна установка сетевой версии лицензионного ПО Wolfram Mathematica 11.3 для обеспечения текущего учебного процесса и поддержки научных исследований.
Все сотрудники, преподаватели и аспиранты УрФУ при нахождении во внутренней университетской сети имеют доступ к ПО Wolfram Mathematica 11.3 по схеме конкурентного лицензирования (50 одновременных подключений). При запуске программы, если имеется свободная лицензия, будет разрешено запустить приложение.
Для получения лицензии ответственный за использование ПО в подразделении должен заполнить соответствующую заявку и выслать ее по адресу softinv@urfu.ru.
~32 кБ, *.xls (Размещен 06.02.2018)
