Лекция Стивена Вольфрама

ВНИМАНИЕ!!!

БЛОГ ПЕРЕЕХАЛ НА НОВЫЙ АДРЕС https://blog.wolframmathematica.ru

Онлайн машина вычисления знаний Wolfram|Alpha ®

Онлайн машина вычисления знаний Wolfram|Alpha ®

среда, 3 июля 2013 г.

Mathematica 9 язык современных вычислений

Mathematica 9 язык современных вычислений
Mathematica_9_jazyk_sovremennyh_vychislenij_Large.png
Mathematica 9 — язык современных вычислений

(текст тезисов для республиканской научно-практической конференции «Математическое моделирование и новые образовательные технологии в математике», Брест, Беларусь, 24-25 апреля 2013 года )

Осипов Р. А., администратор русскоязычной поддержки Wolfram
Mathematica, сертифицированный инструктор технологий и учебных курсов компании Wolfram Research
Общее количество использованных в посте встроенных функций или символов: 101

Список имен используемых встроенных функций и символов в порядке их появления в коде:
RandomReal | CompoundExpression (;) | Set (=) | Table | NDSolve | List ({...}) | Equal (==) | Plus (+) | Derivative (') | Times (*, ×) | Power (^) | Cos | Plot | Evaluate | ReplaceAll (/.) | Rule (->, ->) | ImageSize | PlotStyle | Thick | Exp | Reduce | Reals | FindRoot | WorkingPrecision | Grid | Join | Map (/@) | Function (&) | Slot (#) | FullForm | I (i) | Graphics | Dashed | Circle | Axes | True | Ticks | PlotRange | AxesStyle | Arrowheads | Image | RawArray | ColorSpace | Interleaving | All | Notebook | Cell | CellGroupData | BoxData | RowBox | CellChangeTimes | Open | WindowSize | WindowMargins | Automatic | FrontEndVersion | StyleDefinitions | Alignment | Center | Frame | ItemSize | ItemStyle | Background | None | LightBlue | StandardForm | Style | HoldForm | Factorial (!) | FontSize | White | SetDelayed (:=) | Pattern (:) | Blank (_) | FontFamily | Gray | Module | Do | For | LessEqual (<=, ≤) | Increment (++) | TimesBy (*=) | Apply (@@) | Range | Fold | If | Array | Length | Permutations | First | ReplaceRepeated (//.) | RuleDelayed (:>, :->) | Condition (/;) | Greater (>) | StringLength | StringJoin (<>) | Gamma | Product (∏) | Right | Left | Spacings
Компания Wolfram Research, основным продуктом которой является система компьютерной алгебры Wolfram Mathematica, была основана в 1987 г. одним из крупнейших ученых современности, американцем британского происхождения, Стивеном Вольфрамом.
С юного детства Стивен интересовался наукой и особенно физикой элементарных частиц, первую научную статью по ней он написал в возрасте 15 лет. В 17 лет он поступил в колледж Святого Джона при Оксфорде, где в 18 написал свою широко известную работу о кварках. Посчитав, что лекции в колледже достаточно скучны, он бросил его и поступил в Калифорнийский технологический институт (Калтех), где продолжил заниматься вопросами физики элементарных частиц, а также теорией сильных взаимодействий и клеточными автоматами, которые станут впоследствии его главным интересом в науке. В 21 год он получил стипендию Мак-Артура, которую часто называют «грантом для гениев».
В Калтехе, чувствуя острую необходимость в программном обеспечении, которое позволило бы упростить и ускорить работу с математическими выкладками, приближенными вычислениями, математической логикой, построением всевозможных графических зависимостей и т. п., Стивен начинает работу над SMP (Symbolic Manipulating Program), которая была по сути прототипом будущей системы Mathematica. Однако, из-за разногласий в вопросах интеллектуальной собственности, связанных с SMP, он оставил этот проект и начал развивать свои собственные идеи, которые 23 июля 1988 г. воплотились в жизнь в виде первой версии системы Mathematica, в которой уже тогда многие алгоритмы использовали идеи из области клеточных автоматов (например, генерация псевдослучайных чисел, основанная на правиле 30 для одномерных двоичных клеточных автоматов, которая), которая является на протяжении многих лет одной из главных областей интереса Стивена. В 2002 г. Стивен закончил свой многолетний труд, издав свою фундаментальную монографию A New Kind of Science (Новый вид науки) о клеточных автоматах и их широчайшем применении в математике, физике, биологии и др. областях науки и техники. Идеи этой книги сподвигли его на создание одного из интереснейших объектов, существующих на сегодняшний день — проекта вычислительного движка знаний Wolfram|Alpha, который представляет собой сайт (начиная с 8-й версии полностью интегрирован с Mathematica) вычисляющий ответ на ваш запрос из самых разных областей: от интегральных преставлений дзета-функции Римана до погоды в Минске или землетрясений за последние несколько часов.
За 25 лет своего развития (23 июня 2013-го года ей исполнилось четверть века) система Mathematica, являющаяся пожалуй главным творением Стивена и его команды, стала по праву называться самым мощным в мире вычислительны приложением. Ее возможности простираются далеко за пределы аналитической и вычислительной математики, покрывая создание публикаций, морфологический анализ изображений, обработку огромных массивов данных (например, таблиц MS Excel размером 600000x500), свободную форму ввода, предсказательный интерфейс и др. области, перечисление которых заняло бы несколько страниц.
Столь широкими возможностями система Mathematica обладает за счет нескольких важнейших своих свойств:
1) Система в прямом смысле пишется на своем собственном языке, причем все объекты в ней являются функциями, даже сам документ системы является функцией. За счет этого пользователь получает возможность выполнять совершенно удивительные манипуляции с объектами очень просто. Ниже показано (код для создания таблицы см. в приложении 1) несколько примеров того, как выглядит объект в системе по умолчанию и что он представляет собой с функциональной точки зрения (причем показанная справа форма (то, как на самом деле выражение подается в ядро Mathematica для вычислений) почти всегда получается автоматически, пользователь всегда работает по умолчанию с более простыми и ясными конструкциями):
Mathematica_9_jazyk_sovremennyh_vychislenij_1.gif
2) Система следует основным своим парадигмам, заложенным еще 25 лет назад.
Среди них есть следующие:
а) называть функцию в соответствии с тем, что она делает (поэтому вы не встретите функции, скажем, с именем rand, которая дает действительное псевдослучайное число равномерно распределенное на отрезке [0;1], эту задачу решает функция с ясным именем RandomReal);
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Mathematica_9_jazyk_sovremennyh_vychislenij_2.gif
б) облегчить работу пользователю за счет создания так называемых супер-функций (скажем, если вы ищите численное решение дифференциального уравнения с помощью функции NDSolve, то вам не потребуется указывать метод решения уравнения, система автоматически произведет анализ уравнения, проверит наличие особенностей в нем, подберет метод и параметры для него, а также будет следить за ходом решения и если встретится особенность, она изменит метод или его параметры и будет решать уравнение далее, но при этом у вас есть возможность контролировать все это самостоятельно и, безусловно, вы сами можете выбрать метод и его параметры);
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Mathematica_9_jazyk_sovremennyh_vychislenij_3.gif
в) обеспечить максимальную гибкость работы в системе и простоту знакомства с ней, ее функционалом и возможностями (для этого создан не имеющий аналогов Центр документации, содержащий четкую структуру описания каждой функции и ее опций, содержащий сотни тысяч интереснейших примеров кода Mathematica, также существует Предсказательный интерфейс, свободная форма ввода, интеграция с Wolfram|Alpha, импорт и экспорт в более чем 120 форматов и безупречный дизайн самих функций, так и системы в целом);
г) возможность работы как в аналитическом виде с любыми выражениями, так и с численными с произвольной точностью (если для численного решения по вашему методу требуется точность в 1000 значащих цифр, то система сможет с легкостью справиться с этим, также как если бы вам понадобилось большее или меньшее их количество), причем в системе постоянно ведется контроль точности всех производимых вычислений;
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Mathematica_9_jazyk_sovremennyh_vychislenij_4.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Mathematica_9_jazyk_sovremennyh_vychislenij_5.gif
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть
Mathematica_9_jazyk_sovremennyh_vychislenij_6.gif
д) вы можете программировать в системе в любом стиле, привычном вам, причем даже такая простая функция как факториал может быть легко задана более чем 15 принципиально разными способами (код для создания таблицы см. в приложении 2), среди которых вы всегда можете выбрать оптимальный, например, по скорости.
Mathematica_9_jazyk_sovremennyh_vychislenij_7.gif
Текущая 9-я версия системы содержит почти 4000 встроенных функций, большинство из которых имеют также множество опций для тонкого контроля и управления различными параметрами. Одним из интереснейших нововведений 9-й версии стал не имеющий аналогов в мире, так называемый «Предсказательный интерфейс».
Концепция Предсказательного интерфейса заключается в том, чтобы из результатов, которые вы получили, предсказать несколько вариантов действий, которые, вы, вероятно, хотели бы сделать. Причем это предсказание делается на основе сложной вероятностной модели, созданной на основе анализа миллиардов запросов пользователей Wolfram|Alpha, а также анализа полученного на выходе синтаксиса.
Рассмотрим работу предсказательного интерфейса на простом примере. Скажем, у нас есть список чисел {1, 1, 2, 3, 5, 8, 13}. Введем его в Mathematica и вычислим:
Mathematica_9_jazyk_sovremennyh_vychislenij_8.gif
Как видно, на выходе мы получили тот же список, но под ним теперь появилась так называемая «Панель предложения дальнейших действий», на которой мы можем выбрать что мы хотим сделать далее (total — найти сумму элементов списка, tally — посчитать количество поворейний различных элементов в списка и т. д.). Зайдем на вкладку more…, в ней мы увидим огромное количество других предложений, среди которых выберем find general term (найти общий вид n-го элемента):
Mathematica_9_jazyk_sovremennyh_vychislenij_9.gif
После того, как мы нажмем на заинтересовавшее нас действие, мы получим результат в новой ячейке. Мы можем видеть, что Mathematica нашла общий вид n-го элемента списка, который задается с помощью функции Fibonacci[n], которая олицетворяет собой n-е число Фибоначчи, причем мы также теперь видим, что эта задача решается в системе с помощью функции FindSequenceFunction, а значит, запомнив ее, мы всегда сможем решать задачи такого типа быстро и легко. На вновь появившейся панели выберем function expand (разложить функцию на элементарные):
Mathematica_9_jazyk_sovremennyh_vychislenij_10.gif
После того, как вычисления проделаны, мы видим результат, заданный через привычные функции — радикалы, степени и косинус. Теперь воспользуемся кнопкой в форме спирали:
Mathematica_9_jazyk_sovremennyh_vychislenij_11.gif
Как видно, она позволяет «отмотать» назад несколько проделанных с помощью панели предложения дальнейших действий шагов, создав на выходе компактное выражение, которое проделывает их все разом:
Mathematica_9_jazyk_sovremennyh_vychislenij_12.gif
Из рассмотренного выше примера видно, насколько быстро и легко можно знакомиться со встроенными функциями Mathematica, создавать некоторые фрагменты программ и видеть в каких направлениях можно работать с тем или иным результатом.
Помимо предсказательного интерфейса, в 9-й версии системы появилось множество интереснейших функций, таких как: общесистемная поддержка единиц измерений, комплексная поддержка работы со случайными процессами, Марковские цепи и теория массового обслуживания, временные ряды и стохастические дифференциальные уравнения, анализ надежности и выживаемости, встроенная интеграция с языком R, объемная обработка 3D изображений, встроенная аналоговая и цифровая обработка сигналов, работа с параметрическими дифференциальными уравнениями, полная поддержка тензоров и тензорных вычислений, полный спектр поддержки веб-доступа от API до асинхронной загрузки документов и многое другое.
Подробнее об этом вы можете узнать на официальной странице: http://www.wolfram.com/mathematica/new-in-9/
Система Mathematica, безусловно, слишком огромна, чтобы рассказать о ней на нескольких страницах данной статьи, однако в интернете можно почерпнуть для себя огромное количество информации о ней.
Уже почти два года существует и успешно развивается Русскоязычная поддержка Wolfram Mathematica, в сообществе ВКонтакте (http://vk.com/wolframmathematica), насчитывающем уже порядка 1400 человек, вы всегда сможете найти ответы на интересующие вас вопросы о системе Mathematica и ее синтаксисе, а также ссылки на множество полезных ресурсов.
Также действует канал YouTube Русскоязычной поддержки (http://www.youtube.com/user/WolframMathematicaRu) на котором собираются обучающие видео на русском языке.
Помимо этого работают три блога:
1) «Wolfram Research: события, новости, объявления» (http://allmathematica.blogspot.ru/) — на нем публикуются переводы официальных блогов компании, а также новости о всех важных событиях, проводимых компанией Wolfram Research;
2) «Коллекция ресурсов о технологиях Wolfram Research» (http://wolframtechnology.blogspot.ru/) — здесь вы сможете найти книги о Mathematica и других продуктах Wolfram Research на русском и английском языках, а также множество ссылок на интернет-ресурсы;
3) «Mathematica в действии» (http://mathematica-in-action.blogspot.ru/) — блог, в котором автор данной статьи публикует интересные посты о программировании в Mathematica и решении самых разных задач в данной системе.
Приложение 1
Mathematica_9_jazyk_sovremennyh_vychislenij_13.gif
Приложение 2
Нажмите, чтобы получить возможность скопировать код Wolfram Mathematica
закрыть

Блог принадлежит “Русскоязычной поддержке Wolfram Mathematica
При любом использовании материалов блога, ссылка на блог обязательна.
SpikeyСоздано с помощью Wolfram Mathematica 9

Комментариев нет:

Отправить комментарий