Как в wolfram mathematica
Перейти к содержимому

Как в wolfram mathematica

  • автор:

Как установить Mathematica в Windows

  1. Закройте все приложения от компании Wolfram, открытые на вашем компьютере.
  2. На странице продукта Mathematica на вашем пользовательском портале User Portal, нажмите на ссылку Windows в строке “Mathematica + Documentation” и столбце “Standard Download”. Это загрузит менеджер загрузок Wolfram для Windows как для основного продукта Mathematica, так и для документации продукта.

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

  3. Запустите исполняемый файл менеджера загрузок Wolfram и следуйте его инструкциям.

Установка документации

  1. Нажмите кнопку «Launch» менеджера загрузки для установки документации Mathematica.
  2. Завершите установку документации Mathematica.

Установка Mathematica

  1. На вашем экране появится диалоговое окно установки Mathematica.
  2. Нажмите кнопку «Next», чтобы начать процесс установки.
  3. Нажмите «Next», чтобы установить Mathematica в каталог по умолчанию.
    Для установки Mathematica в другой каталог, нажмите кнопку «Browse» и выберите желаемый каталог. Для продолжения установки, нажмите кнопку «Next».
  4. Нажмите «Next», чтобы включить wolframscript в вашу установку. Если вы предпочитаете не устанавливать wolframscript, выберите “Choose components to install” из выпадающего меню и снимите флажок опции wolframscript, затем нажмите «Next» для продолжения.
  5. Программа установки добавляет ярлыки Mathematica в меню «Пуск» Windows в папку Wolfram Mathematica. Чтобы ярлыки появились в другой папке, нажмите кнопку «Browse» и выберите каталог. Если вы предпочитаете не создавать ярлыки в меню «Пуск», установите флажок “Don’t create a Start Menu folder”. Затем нажмите «Next», чтобы продолжить установку.
  6. Окно «Remove Other Applications» появляется только в том случае, если на компьютере установлены более старые версии. Выберите любые старые версии Mathematica, которые вы хотите удалить и нажмите «Next».
  7. Конфигурация установки Mathematica завершена. Нажмите кнопку «Install», чтобы начать установку.
    Дождитесь завершения процесса установки.
  8. Нажмите «Finish», чтобы завершить установку и запустить Mathematica.

Введение в 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 Language (Mathematica) на русском языке… или продвинутое задание функций

Одним из самых важных навыков в работе с системой Mathematica, является задание функций, которые имели бы самый разный вид, и зависели бы от разного количества переменных (от буквально ни одной переменной до бесконечного их количества), при этом некоторые переменные могли бы иметь значения, которые используются по умолчанию, если не вводятся их конкретные значения, другие имели бы вид опций, как у многих встроенных в Mathematica функций, или имели бы строгие ограничения на свой тип…

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

Мне хотелось бы отметить, что в версии 10.1 языка Wolfram Language (Mathematica) начался процесс русификации интерфейса, документации и предсказательного интерфейса. Для ряда языков, например, китайского, процесс полной локализации уже практически завершен. При этом, более того, даже сервис Wolfram|Alpha скоро сможет работать на китайском.

Создание стандартных функций нескольких переменных

Отсроченное задание функции

Задать стандартную функцию можно с помощью конструкции вида:

В данной конструкции участвуют три крайне важных функции Mathematica, первая — это отсроченное присваивание SetDelayed (в короткой форме имеет вид :=), вторая — шаблонное выражение Blank[] (в короткой форме имеет вид _), третья — шаблон с присвоенным ему именем Pattern[name, object] (в короткой форме имеет вид name:object, или, если шаблонный объект представляет собой просто _, то name_).

Рассмотрим подробнее зачем они нужны и как работают.

  • Отсроченное присваивание := употребляется в виде:

оно присваивает выражение rhs (сокращение от “right hand side” — справа) в качестве отсроченного значения объекта (символа) lhs (сокращение от “left hand side” — слева), при этом выражение rhs остается в невычисленном виде. Как только в коде встречается объект lhs, он заменяется на выражение rhs, которое после этого вычисляется.

  • Шаблонное выражение _ употребляется в виде:

оно олицетворяет собой любое выражение, написанное на языке Wolfram Language. При этом, шаблон _h задает любое выражение, головная часть которого совпадает с h.

  • Шаблон с присвоенным ему именем name_ употребляется в виде:

он служит для “передачи” объекта внутри используемых функциональных конструкций (правил замен, задании функций и т. п.)

Что ж, суммируя сказанное выше, можно сказать, что стандартное задание функции одной переменной имеет вид:

которое в полной форме (в той, которой его на самом деле “видит” и использует Mathematica) выглядит так:

WolframLanguageInRussian)rAdvancedFunctionSetting_9.png

Задание функции в виде отсроченного присваивания, которое в общем случае имеет вид:

f[pattern]:=lhs

работает следующим образом:

  • как только Mathematica встречает при вычислении кода функцию с именем f, она проводит сопоставление ее вычисленного аргумента expr (если она встретила выражение f[expr]) с шаблоном pattern. В том случае, если выражение-аргумент expr удовлетворяют шаблону pattern, то конструкция f[expr] заменяется на выражение lhs, в котором все символы с именем, соответствующем имени шаблонного выражения pattern заменяются на выражение expr, после чего полученная конструкция вычисляется и замещает исходное выражение f[expr].

Понятно, что если используется задание функции вида f[v_]:=lhs[v], то, как было сказано выше, любое выражение expr удовлетворит шаблону v_.

Приведу пример. Зададим функцию, которая вычисляет :

WolframLanguageInRussian)rAdvancedFunctionSetting_11.png

Попробуем вычислить ее значение от разных аргументов:

WolframLanguageInRussian)rAdvancedFunctionSetting_12.png

Как видно из рассмотренных выше примеров, действительно любой объект (число, символ, картинка) удовлетворяют шаблону x_ и Mathematica легко работает со всеми выражениями, что демонстрирует необычайную гибкость ее языка.

Задание функции многих переменных полностью аналогично. Скажем, зададим функцию 3 переменных:

WolframLanguageInRussian)rAdvancedFunctionSetting_16.png

WolframLanguageInRussian)rAdvancedFunctionSetting_17.png

Создание функции, которая “помнит” свои вычисленные ранее значения

Если изменить отсроченное задание функции следующим образом:

WolframLanguageInRussian)rAdvancedFunctionSetting_19.png

то однажды вычислив значение в некоторой “точке” (значение при некотором значении аргумента, аргументом может быть не обязательно число и необязательно точка в привычном ее понимании. ), функция f будет помнить (правда только в рамках данной сессии Mathematica) это значение (здесь была использована функция Set (в короткой форме имеет вид =), которая позволяет присвоить некоторому символу некоторое значение).

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

Пример (время вычисления некоторой команды можно узнать с помощью функции Timing):

WolframLanguageInRussian)rAdvancedFunctionSetting_20.png

WolframLanguageInRussian)rAdvancedFunctionSetting_21.png

WolframLanguageInRussian)rAdvancedFunctionSetting_23.png

Из примера видно, что однажды вычислив значение функции в точке, при таком задании функции, в следующий раз оно не займет никакого времени.

  • Внимание! Такое присваивание может сыграть с вами злую шутку. Так как значение функции в данной точке хранится в памяти, оно становится нечувствительным к изменению собственно правой части lhs[v] функции:

WolframLanguageInRussian)rAdvancedFunctionSetting_25.png

WolframLanguageInRussian)rAdvancedFunctionSetting_28.png

WolframLanguageInRussian)rAdvancedFunctionSetting_29.png

Абсолютное задание функции

В том случае, если использовать вместо функции SetDelayed (:=) функцию Set (=) в задании функции:

то выражение справа lhs[v] будет вычислено сразу, после чего в него будут подставляться значения аргументов функции при встрече в дальнейшем выражения вида f[expr] в коде. Такая форма задания функции способна сэкономить время в том случае, если вычисление выражения lhs[v] трудоемко и по сути не зависит от конкретного значения аргумента v.

Сравним отсроченное и абсолютное задания функций.

Вычисление выражения lhs[v] не зависит от значения v напрямую:

WolframLanguageInRussian)rAdvancedFunctionSetting_32.png

WolframLanguageInRussian)rAdvancedFunctionSetting_33.png

WolframLanguageInRussian)rAdvancedFunctionSetting_35.png

Вычисление выражения lhs[v] зависит от значения v напрямую:

WolframLanguageInRussian)rAdvancedFunctionSetting_40.png

WolframLanguageInRussian)rAdvancedFunctionSetting_41.png

WolframLanguageInRussian)rAdvancedFunctionSetting_43.png

WolframLanguageInRussian)rAdvancedFunctionSetting_45.png

Из двух примеров выше можно сделать два важных вывода:

  • Внимание! Абсолютное задание можно использовать только в том случае, если вычисление конструкции lhs[v]не зависит напрямую от переменной v. Если это не так, то ответ может быть не верен.
  • В случае применения абсолютного задания функций, вы получаете возможность заметно ускорить свои вычисления в ситуации, когда вычисление правой части задания функции не зависит напрямую от аргумента.
Задание функции, некоторые аргументы которой имеют значения по умолчанию

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

Зададим функцию, которая строит круг или окружность, при этом по умолчанию центр этого круга (окружности) находится в точке (0, 0), он (она) имеет радиус равный 1, а также имеет красный цвет:

WolframLanguageInRussian)rAdvancedFunctionSetting_48.png

WolframLanguageInRussian)rAdvancedFunctionSetting_49.png

WolframLanguageInRussian)rAdvancedFunctionSetting_51.png

WolframLanguageInRussian)rAdvancedFunctionSetting_53.png

WolframLanguageInRussian)rAdvancedFunctionSetting_55.png

WolframLanguageInRussian)rAdvancedFunctionSetting_57.png

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

Задание функции с опциями

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

Для того, чтобы задать опции для некоторой функции, служат встроенные функции OptionsPattern и OptionValue, смысл работы с которыми ясен из следующего примера: реализуем ту же функцию, что и ранее (строящую круг или окружность, с центром по умолчанию в точке (0, 0), радиуса 1, красного цвета), только все значения по умолчанию теперь задаются опциями:

WolframLanguageInRussian)rAdvancedFunctionSetting_59.png

WolframLanguageInRussian)rAdvancedFunctionSetting_60.png

WolframLanguageInRussian)rAdvancedFunctionSetting_62.png

WolframLanguageInRussian)rAdvancedFunctionSetting_64.png

WolframLanguageInRussian)rAdvancedFunctionSetting_66.png

Задание функции с наложенными на аргументы условиями

Для того, чтобы наложить на какой-то аргумент функции ограничение, служит функция Condition (имеющая короткую форму /;).

Скажем, создадим функцию, которая вычислялась бы, только если ее аргумент больше 2:

WolframLanguageInRussian)rAdvancedFunctionSetting_68.png

WolframLanguageInRussian)rAdvancedFunctionSetting_69.png

Или функцию, которая вычислялась бы, если ее аргумент является списком, состоящим не более чем из 4 элементов:

WolframLanguageInRussian)rAdvancedFunctionSetting_71.png

WolframLanguageInRussian)rAdvancedFunctionSetting_72.png

В примере выше также использовался шаблон с указанием головной части выражения List (x_List), который задает любой список.

Такого рода шаблоны могут быть самыми разными:

WolframLanguageInRussian)rAdvancedFunctionSetting_74.png

WolframLanguageInRussian)rAdvancedFunctionSetting_75.png

Также вы можете пользоваться всевозможными тестовыми функциями, которые проверяют, обладает ли выражение, определенным свойством. Это делается с помощью функции PatternTest (имеющая короткую форму ?), стандартный синтаксис которой выглядит следующим образом:

Все тесты (как видно из кода ниже, их 128) в системе Mathematica это функции, которые оканчиваются, как правило, на заглавную букву Q:

WolframLanguageInRussian)rAdvancedFunctionSetting_78.png

128

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

WolframLanguageInRussian)rAdvancedFunctionSetting_82.png

WolframLanguageInRussian)rAdvancedFunctionSetting_83.png

Альтернативные шаблоны

В некоторых случаях функция должна работать с выражением, если оно удовлетворяет одному из заданных шаблонов. Реализовать подобную конструкцию можно с помощью функции Alternatives (имеющая короткую форму |).

Ниже представлена функция, аргумент которой может быть либо списком, либо целым числом, большим 4:

WolframLanguageInRussian)rAdvancedFunctionSetting_85.png

WolframLanguageInRussian)rAdvancedFunctionSetting_86.png

Множественное задание функций (перегрузка функций)

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

В примере ниже создана функция, которая по разному обрабатывает входные данные в зависимости от их типа:

WolframLanguageInRussian)rAdvancedFunctionSetting_89.png

WolframLanguageInRussian)rAdvancedFunctionSetting_93.png

WolframLanguageInRussian)rAdvancedFunctionSetting_95.png

Пример: композиция из описанных ранее способов задания функций и ее аргументов

WolframLanguageInRussian)rAdvancedFunctionSetting_100.png

WolframLanguageInRussian)rAdvancedFunctionSetting_102.png

WolframLanguageInRussian)rAdvancedFunctionSetting_104.png

WolframLanguageInRussian)rAdvancedFunctionSetting_106.png

Программирование в Mathematica на русском языке

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

Для этого, нужно сделать русские аналоги встроенных функций.

Начнем с функции Plot, на русском языке ей будет соответствовать функция График. Синтаксис функции Plot имеет вид:

WolframLanguageInRussian)rAdvancedFunctionSetting_110.png

Ее русский аналог будет полностью аналогичен.

Начнем с того, что узнаем список всех опций функции Plot и их значения по умолчанию, это можно сделать с помощью функции Options:

Теперь создадим этот список на русском языке (здесь опущены некоторые опции, которые, по опыту, употребляются крайне редко при построении графика):

WolframLanguageInRussian)rAdvancedFunctionSetting_113.png

Теперь зададим связь русских названий с встроенными аналогами:

WolframLanguageInRussian)rAdvancedFunctionSetting_114.png

Теперь мы можем задать русский аналог функции Plot:

WolframLanguageInRussian)rAdvancedFunctionSetting_115.png

Также нам потребуются некоторые стандартные обозначения толщины и цвета линий:

Аналогично зададим функцию Решить — русский аналог функции Solve, АбсолютныйРазмерТочкиAbsolutePointSize, ТочкаPoint, ЛинияLine:

Попробуем создать некоторый график:

Таким образом, в Mathematica возможно создать пакет, который позволит программировать на обычном русском языке, подобно тому, как это делалось в СССР, скажем на языке АЛМИР-65.

Если у кого-то из вас появится желание развить данную идею, то вполне возможно сделать так, чтобы Mathematica работала на русском языке.

  • wolfram language
  • wolfram mathematica
  • Блог компании Wolfram Research
  • Программирование

Последовательности, суммы и ряды

Wolfram Language Fast Introduction for Math Students

В Языке Wolfram целочисленные последовательности представлены в виде списков.

Используем функцию Table для задания простой последовательности:

Table[x^2, ]

Некоторые известные последовательности уже встроены в язык:

Table[Fibonacci[x], ]

Для задания рекурсивных последовательностей используем функцию RecurrenceTable:

RecurrenceTable[, a, ]

Вычислим сумму всех элементов последовательности, используя функцию Total:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *