Цель лекции: познакомиться с основными возможностями пакета и базовыми принципами работы в системе компьютерной алгебры Mathematica.
Пакет Mathematica совершенствуется и развивается уже не одно десятилетие, начиная с конца восьмидесятых годов прошлого века. За эти годы Mathematica из программируемого калькулятора, однако, уже тогда способного на многое в математике, выросла в полноценную систему компьютерной алгебры. Все возможности Mathematica можно разделить на 4 больших категории: численные расчёты, символьные вычисления, визуализация и программирование. Краткую обобщённую классификацию возможностей Mathematica приводят А.Н. Прокопеня и А.В. Чичурин в книге [5, с. 6–7]. В редуцированном виде приведём её в нашем курсе.
Mathematica, как и всякая программа, предназначенная для выполнения под Windows, запускается после двойного щелчка кнопкой мыши на соответствующей пиктограмме. На рис. 1.1 приведён снимок экрана с запущенной программой Mathematica. Основные элементы интерфейса программы следующие: в самом верху экрана располагается строка главного меню, белая прямоугольная область в средней части экрана — окно редактирования или окно ввода; тяготеющие к правой части экрана окна — палитры.
Начнём описание интерфейса программы с главного меню.
Пункты главного меню Mathematica достаточно подробно описаны в книгах А. П. Мостовского [4, с. 6–8] и А. В. Чигарева [6, с. 115–124].
Пункт меню File предназначен для работы непосредственно с файлами программы. С его помощью можно, например, создавать новые файлы (New), выбирать из каталога ранее уже созданные (Open...), сохранять файлы (Save As), перезаписывать (Save) или закрывать их без сохранения (Close), управлять параметрами представления данных на экране (Printing Settings), печатать документы (Print...) и завершать работу всей программы (Exit).
Пункт меню Edit содержит основные операции редактирования данных на экране. Среди них отмена операции (Undo), копирование фрагментов документа в буфер обмена с их удалением из текста программы (Cut) и без удаления (Copy), вставка фрагментов из буфера обмена в заданную область документа (Paste), удаление фрагментов документа (Clear). Помимо этого, в данном пункте меню содержатся команды для поиска выражений в тексте программы: это Find... для задания шаблона для поиска, а также Find Next и Find Previous для перехода к следующему и предыдущему фрагментам текста, соответственно, совпадающим с шаблоном. Подпункт Preferences... ответственен за управление настройками самого пакета.
При помощи команд, содержащихся в пункте меню Insert, можно вводить данные в окно редактирования. Например, можно задавать верхние и нижние индексы при помощи содержащихся в подпункте Typesettings команд Superscript и Subscript, обособлять тексты скобками различного вида при помощи команд Matching [], Matching (), Matching {} и т.д. Можно вставлять в текст программы объекты, созданные в других программах, например, графику, формулы и т.д.
Пункт меню Format позволяет пользователю устанавливать, исходя из его эстетических и рассудочных предпочтений, внешний вид окна ввода, стиль ячеек, их содержание, размер, управлять шрифтами и т.д.
Управлять ячейками данных позволяет пункт меню Cell (подробней о ячейках см. пункт 1.1.2 настоящей лекции). С его помощью можно устанавливать формат ячеек (Cell Properties), преобразовывать их тип (Convert To), группировать (Grouping), объединять (Merge Cells) и разделять (Divide Cells) ячейки и т.д.
Пункт меню Graphics, что весьма очевидно, отвечает за работу с графическими данными, встречающимися в тексте программы.
В пункте меню Evaluations собраны команды для непосредственного управления ходом вычислений, работой с ядром программы. С их помощью можно осуществлять вычисления в пределах одной ячейки программы (Evaluate Cells, Evaluate Initialization Cells), в пределах всей программы (Evaluate Notebook), отключать ядро (Quit Kernel) программы и вновь запускать его (Start Kernel) и т.д.
Ввод данных в окно ввода в Mathematica можно осуществлять не только вручную с клавиатуры, но и с использованием так называемых палитр (Palettes). Они представляют собой окна, содержащие набор кнопок, за которыми закреплены определённые действия, и выпадающих списков. Управлять палитрами можно, используя команды в пункте меню Palettes. Можно выводить на экран и убирать с экрана те или иные палитры, а также создавать собственные палитры с требуемым набором функций.
Команды для управления внешним видом окон, их расположением, собраны в пункте меню Window. Содержание этого пункта типично для большинства программ, предназначенных для работы в ОС Windows.
Последний пункт меню, Help, содержит команды для работы со справочными данными по пакету Mathematica.
В любом из пунктов меню часть команд в настоящий момент может быть невыполнима — например, нельзя вычислить значение выражения, если само оно в окно редактирования ещё не введено, либо не выделена содержащая его ячейка. Такие команды выделяются светло серым шрифтом.
(рис 1.1) Скриншот открытых окон запущенного приложения Mathematica. В зафиксированный момент на экране присутствуют главное меню, окно ввода, и окна палитр функций
Все элементы интерфейса Mathematica выводятся независимо друг от друга: отдельно — строка меню, отдельно — окна (в том числе окно редактирования), отдельно палитры инструментов. В одно и то же время на экране могут быть представлены одни элементы, и скрыты другие. Кроме того, можно, перетаскивая мышкой, помещать элементы программы в любое удобное место экрана, изменять их размеры (В. П. Дьяконов [2, с. 35–37]). В окне редактирования имеются полосы прокрутки для скроллинга не помещающихся на экране текстов.
Все введённые в окно ввода данные в Mathematica содержатся в отдельных, определённым образом выделенных областях экрана, называемых ячейками. Итак, программа запущена, и в центральной части экрана появилась девственно чистая область — окно ввода. Именно в эту область и предстоит вводить данные. Как только будет введён первый символ, в правой части окна ввода появится квадратная скобка: она обозначает вертикальные границы ячейки, содержащей введенный с клавиатуры символ. Исходные данные содержатся во входных ячейках (Input), а результат преобразований — в выходных (Output). А. П. Мостовской в [4, с. 6] определяет ячейку в Mathematica следующим образом: "Под ячейкой понимается связная часть рабочего поля, содержащая задачу, ответ, текст или другое".
После того, как на экране появилось окно редактирования (при первом старте Mathematica или после выбора подпункта New в пункте меню File), вы сразу же можете вводить данные. Например, если вы наберёте N[E,10] и нажмёте Shift+Enter (удерживая Shift, нажмёте Enter) для начала вычислений, Mathematica выведет на экран приближённое значение экспоненты с точностью до 10-и значащих цифр — см. рис. 1.2.
(рис 1.2) Экспонента с точностью до 10-и значащих цифр
Таким образом, чтобы Mathematica произвела вычисление введённого выражения, необходимо, оставив курсор внутри ячейки с входными данными, нажать сочетание клавиш Shift+Enter. Заметим, что после того, как вы заставили программу произвести вычисления в окне редактирования, Mathematica добавляет к данным на экране подсказки в виде In[1]:= для входных данных, и Out[1]:= для данных на выходе, т.е. результатов вычислений — также см. в качестве примера рис. 1.2. При этом исходное значение оказывается присвоенным объекту In[1], а результат вычислений — объекту Out[1] (Е. М. Воробьёв [1, с. 8–9]). В нашем примере на рис. 1.2 в текущей сессии работы с программой ввод с клавиатуры In[1] будет эквивалентен вводу выражения N[E,10], а ввод Out[1] — вводу 2.718281828.
Скажем ещё несколько слов о скобке в правой части экрана, очерчивающей границы ячейки с входными данными и результатами их преобразований. Если все заданные вычисления завершены успешно или ещё не проводились, ячейка обозначается тонкой правой квадратной скобкой, цвет которой зависит от цветовой схемы, используемой в операционной системе пользователя (см. пример на рис. 1.2). Изменение внешнего вида скобки может многое сказать о текущем состоянии вычислений. Если скобка изменила цвет на яркий, привлекающий внимание, и толщину, а в верхней её части появился значок +, это значит, что в синтаксисе содержащихся в ячейке выражений имеется ошибка: узнать на характере ошибки можно, нажав на + (см. верхний пример на рис. 1.3).
Эта скобка также оказывается полезной при организации работы с большим количеством разнородных данных. Двойной клик на скобке позволяет свернуть ячейку, содержащаяся в которой информация, например, в данный момент не используется, и в представлении её на экране нет необходимости. И напротив, двойной щелчок позволяет развернуть свёрнутую ранее ячейку.
Новые данные можно вводить непосредственно под ячейкой с предыдущими вычислениями, ограниченной снизу горизонтальной линией, проходящей по всей ширине окна ввода. Новая ячейка откроется сразу же, как только вы начнёте вводить данные.
(рис 1.3) Разные типы скобки, очерчивающей ячейку
В данной лекции мы уже упомянули такой термин, как палитры. В Mathematica палитра — панель с кнопками быстрого управления.
С одной стороны, кажется удобным, когда элементы управления находятся на экране, перед глазами, и вместо того, чтобы вспоминать команду для выполнения того или иного действия, достаточно нажать соответствующую кнопку на экране. Однако, с другой стороны, когда таким способом упрощён ввод большого количества команд, экран оказывается сильно загромождён этими вспомогательными панелями.
Разработчики Mathematica сумели реализовать положительный эффект от вспомогательных панелей, минимизировав причиняемые им неудобства. Они создали инструментальные палитры, содержащие определённым образом сгруппированные команды для ввода математических выражений, отсутствующих на клавиатуре символов, команд управления вычислениями, инструментов работы с текстом и графикой. Палитрам не обязательно всё время находиться на экране, и по желанию пользователя они могут быть перемещены в любое место экрана или вовсе скрыты. Управлять палитрами можно при помощи команд, собранных в пункте главного меню Palettes.
На скриншоте на рис. 1.1 представлено несколько палитр, имеющихся в Mathematica.
С правилами ввода арифметических выражений познакомимся, взяв за основу книгу В. П. Дьяконова [2].
Основные математические операции: сложение, вычитание, умножение и деление, — задаются при помощи операторов. Понятие операторов даёт В. П. Дьяконов [2, с. 175]: "Операторы (от слова operator – исполнитель) являются элементами записи математических выражений, указывающими на то, какие действия производятся над символьными или числовыми данными. Когда эти данные используются совместно с операторами, их называют операндами". Основные операторы для выполнения арифметических действий: " + ", " – ", " * ", " / ". Возведение в степень осуществляется при помощи знака возведения в степень " ^ ". Примеры использования некоторых операторов приведены на рис. 1.4.
(рис 1.4) Использование операторов арифметических действий
Однако существуют и альтернативные способы задания простейших операторов (П. Веллин и др. [14, с. 19–20]). Так деление можно записать в традиционной форме, в виде дроби, где делимое находится в числителе над горизонтальной чертой, а делитель — в знаменателе, под горизонтальной чертой. Для этого сперва записывается делимое, затем нажимается комбинация клавиш Ctrl+/, затем вводится делитель.
Подобным же образом можно записать и выражение для возведения в степень: сначала записывается основание, потом нажимается комбинация клавиш Ctrl+^ (на QWERTY-клавиатурах это сочетание Ctrl+Shift+6), потом — показатель степени.
При умножении вместо традиционно используемой в качестве знака умножения звёздочки " * " можно использовать пробел. В поздних версиях Mathematica он автоматически заменяется оператором " x ". Примеры альтернативного ввода операторов см. на рис. 1.5.
(рис 1.5) Один из альтернативных способов ввода некоторых математических операторов
Е. М. Воробьёв в книге [1, с. 10] акцентирует внимание читателей на немаловажном вопросе порядка выполнения операций при работе со сложными выражениями. Следует знать, что Mathematica придерживается традиционных представлений о старшинстве арифметических операций. Так, например, вычисление выражения $$2+3*4$$ даст 14, а не 20, как при вычислении $$(2+3)*4$$. И всё равно, как советует Е. М. Воробьёв [1, с. 10], "не стоит экономить на круглых скобках ( и ), используемых для группирования" по причине специфического "одноэтажного" характера ввода исходных данных. Чтобы задать выражение $$23/4*5$$, в Mathematica использование круглых скобок оказывается необходимым: $$2^(3/4)*5$$. Если ввести $$2^3/4*5$$, то это будет воспринято как $$(2^3/4)*5$$. Другое выражение, записанное на языке Mathematica как $$a/b/с$$, будет сгруппировано как $$(a/b)/c$$, а выражение $$a^b^c$$ — как $$а^(b^с)$$.
Вообще для вычислений Mathematica использует 4 вида скобок, каждый из которых имеет определённые неперекрывающиеся функции (С. Вольфрам [15, с. 5–6]):
( ), используемые в математических выражениях для группировки отдельных частей выражений;[ ] для функций;{ } для списков;[[ ]] для индексирования. С круглыми скобками мы уже познакомились и знаем, что их назначение то же, что и в математике — задание приоритета математических и логических операций. Квадратные скобки используются для задания аргументов функций. Так, например, для вычисления натурального логарифма вещественного числа 7.62 в окно редактирования следует ввести следующее: Log[7.62]. Следует отметить, что Mathematica различает строчные и прописные буквы, поэтому выражения LOG или log не являются эквивалентами имени Log логарифмической функции (Е. М. Воробьёв [1, с. 11]).
Mathematica содержит огромное количество встроенных функций (команд) — более тысячи. Поэтому, как отмечает Е. М. Воробьёв [1, с. 11], "ее использование как символьного, графического и численного калькулятора сводится в основном к применению различных функций к исходным выражениям, затем к функциям от исходных выражений, затем к функциям от функций от исходных выражений и т.д". Практически невозможно запомнить все имеющиеся в программе функции, способы задания их аргументов, опций и т.д. Однако спасительным в этом случаем является то, что заголовки большинство функций в Mathematica сходны с общепринятыми названиями в англоязычной математической терминологии. Приведём пример. Если возникла необходимость записать число, сопряжённое к тому или иному заданному комплексному числу, вспоминаем или ищем в словаре термин "сопряжённый" на английском языке и пробуем задать функцию в виде Conjugate[expr], где expr — заданное комплексное выражение, и это приводит к искомому результату — см. пример на рис. 1.6.
(рис 1.6) Нахождение комплексно-сопряжённого числа
Для некоторых математических функций, имеющих собственные обозначения, заголовки функций в Mathematica совпадают с этими обозначениями. Среди них — уже известная нам функция извлечения натурального логарифма Log, дифференцирование D, извлечение квадратного корня Sqrt, нахождение определителя (детерминанта) матрицы Det. В процессе изучения курса мы познакомимся и с другими подобными функциями.
Теперь разберёмся с фигурными скобками { }. Они применяются для построения списков. Список — это один из основных типов данных в Mathematica, который используется для записи векторов и матриц любого порядка, а также для записи дополнительных аргументов в таких функциях, как Plot (для построения графиков зависимостей) и Integrate (для интегрирования выражений).
В качестве иллюстрации к упомянутым функциям программы в примерах на рис. 1.7 мы осуществляем операцию поэлементного перемножения двух векторов (см. In[1]), а также строим зависимость некоторой математической функции от аргумента (In[3]), при этом сами функции программы подробнее разберём в последующих лекциях. В примере In[3] в выражении Plot[Cos[3*x]+x,{x,-5,5}] список {x,-5,5} показывает, что функция $$cos(3x)+x$$ должна быть построена для x, принадлежащем к интервалу [-5,5] (включая границы). Mathematica обладает очень мощными возможностями для работы со списками, которые будут рассмотрены в последующих лекциях.
Теперь же что касается двойных скобок [[ ]]. Они также используются при работе со списками. При помощи них можно обращаться акцентированно к элементу списка с конкретным номером. Так в примере In[2] на рис. 1.7 мы вынуждаем Mathematica показать нам второй по счёту элемент списка, который задан в In[1].
(рис 1.7) Использование фигурных и двойных скобок в Mathematica.
Если после выражения вы введёте знак точки с запятой " ; ", Mathematica вычислит значение выражения, но не выведет его на экран в ячейке Out. Это оказывается полезным, если результат является промежуточным в расчётах, и нет необходимости его видеть. В примере на рис. 1.8 мы задаём последовательность из 100 натуральных чисел, но не выводим её на экран, а затем находим сумму всех чисел последовательности.
(рис 1.8) Использование символа " ; " для сокрытия результатов вычислений
Выражению не обязательно следует вмещаться в одну строчку: его можно "растянуть" на несколько строк, при этом Mathematica сама будет расценивать эти несколько строчек как единое целое (П. Веллин и др. [14, с. 22]). Однако для этого необходимо, чтобы выражение было заключено в скобки (пример In[1] на рис. 1.9), либо чтобы последним на строке оставался оператор действия, а каждая новая строчка начиналась с числа или переменной (пример In[2]). Если строка будет начинаться с оператора, то строки будут рассмотрены как содержащие разные выражения (пример In[3]).
Если в примере In[1] на рис. 1.9 мы воссоединили выражение искусственно, при помощи предназначенных для группировки круглых скобок, то в примере In[4] растянутое на несколько строчек выражение было обособлено квадратными скобками, использующимися изначально при задании функции логарифма Log.
(рис 1.9) Запись одного выражения в несколько строк
Зачастую средствами Mathematica приходится выполнять достаточно громоздкие вычисления, и если программа при этом выполняет свои функции без проблем, то у пользователя может возникнуть некоторый дискомфорт из-за обилия введённых данных на экране. Для разрешения этой ситуации в Mathematica предусмотрена возможность оставлять комментарии к тексту программы. Делается это обособлением комментариев сочетанием символов (* и *) — см. In[1] рис. 1.10.
Комментарий может также играть роль пробела. Так выражение x(**)y приведёт к перемножению x и y — пример In[4] рис. 1.10.
(рис 1.10) Ввод комментариев в Mathematica
В примере In[1] на рис. 1.10. мы также познакомились с новой командой " % ". Её ввод автоматически означает ссылку на предыдущее вычисленное выражение.
К слову, в Mathematica имеется обширная справочная документация, для пользования которой есть множество способов (П. Веллин и др. [14, с. 26–27]). Например, если нам в точности известно имя той или иной функции, например, function, но мы не знаем, для чего она используется, или просто хотим уточнить её синтаксис, следует в окно редактирования ввести ?function и запустить вычисления (нажав Shift+Enter). Если же мы доподлинно знаем лишь фрагмент имени функции, например, func, то, введя ?func, мы получим на экране подсказку, содержащую имена всех функций, начинающихся на func. Если нажать на символ ", откроется окно Help-браузера, в котором дана более детальная информация о функции. На рис. 1.11 показан пример получения справки о функции Integrate и функциям начинающимся на Plo.
(рис 1.11) Получение справки о функциях
Ещё один способ получить справку о функции — щелкнуть на ней курсором и нажать на клавиатуре клавишу F1. Это приведёт вас непосредственно к статье об этой функции в Help-браузере.
Теперь мы знаем достаточно для того, чтобы осуществлять простейшие вычисления в Mathematica, то есть, выражаясь языком сотрудников отдела кадров, мы стали пользователями начального уровня. Однако для большей полноты наших знаний о программе скажем несколько слов о "двуличии" Mathematica и узнаем, с чем мы имеем дело при работе за компьютером, и что на самом деле производит вычисления (П. Веллин и др. [14, с. 24]).
Когда мы работаем в Mathematica, на самом деле мы имеем дело с двумя разными программами — интерфейсным процессором (the front end) и ядром (the kernel). Интерфейсный процессор — это и есть пользовательский интерфейс, включающий в себя окно редактирования, в которое мы вводим данные, строку меню, палитру инструментов, упрощающих ввод данных. Ядро программы непосредственно выполняет вычисления. Таким образом, типичный процесс взаимодействия пользователя с Mathematica состоит из следующих шагов (компонент Mathematica, отвечающий за выполнение каждого шага дан в скобках) (П. Веллин и др. [14, с. 24]):
Как мы видим, непосредственное участие пользователя необходимо только на первом шаге.
Хотя интерфейсный процессор и ядро работают независимо друг от друга, так или иначе они должны обмениваться друг с другом данными. Для выполнения этой задачи существует специальный протокол — MathLink. Он также позволяет интерфейсному процессору взаимодействовать с другими программами помимо ядра, такими, как Fortran, C и др.
Хотя, обычно ядро работает стабильно, но порой во время работы программы возникает ситуация, когда Mathematica "начинает себя плохо вести" — долгое время не выдаёт результатов вычислений (например, если на входе была поставлена слишком сложная задача), зависает. В этом случае можно не ждать реакции компьютера и самостоятельно прервать вычисления. Способ, который предлагает П. Веллин и др. [14, с. 19], зависит от операционной системы компьютера. Для Macintosh — это комбинация клавиш Command key+точка, а затем буква A, для Windows — " Alt+точка ", для Unix — " Ctrl+точка ", а затем буква A.
Иногда эта попытка остановить вычисления оказывается неудачной. Если остановки вычислений не произошло в течение нескольких минут, Mathematica кажется зависшей, следует выполнить действие "kill the kernel". Для этого нужно выбрать подпункт Quit Kernel->local в пункте меню Evaluation. Для перезапуска ядра без перезапуска интерфейсного процессора необходимо выбрать в том же пункте команду Start Kernel local, либо просто известным способом заставить Mathematica произвести вычисления: ядро при этом запустится самостоятельно.
Интерфейсный процессор (front-end processor) — компонент пакета Mathematica, управляющий взаимодействием с периферийными устройствами.
Окно редактирования или окно ввода — область главного окна системы, в которую вводятся исходные данные и выводятся результаты вычислений.
Операнд — выражение, содержащее и данные, и операторы.
Оператор — элемент записи математических выражений, указывающий на то, какие действия производятся над символьными или числовыми данными.
Палитра — дополнительная панель с кнопками быстрого управления.
Ядро (kernel) — компонент пакета Mathematica, непосредственно выполняющий вычисления.
Под ячейкой понимается связная часть рабочего поля, содержащая задачу, ответ, текст или другое.
В данной лекции мы впервые познакомились с системой компьютерной алгебры Mathematica, узнали о её возможностях при выполнении численных и символьных расчётов, визуализации результатов вычислений и использовании в качестве языка программирования. Мы познакомились с интерфейсом программы: с каждым пунктом главного меню, окном ввода и палитрами. Мы узнали основные принципы ввода данных, научились выполнять простейшие вычисления, познакомились с назначением каждого из четырёх видов скобок. Также мы научились пользоваться встроенной справочной документацией и узнали о "двуличии" пакета Mathematica — о двух его базовых компонентах — ядре и интерфейсном процессоре.
File; Edit; Insert; Format; Cell; Graphics; Evaluations; Palettes; Window; Help?; "?5 значащих цифр; до 15 значащих цифр. Найдите разность между первым и вторым выражениями.0 до 10, найдите их сумму, произведение.; " выведите в выходную ячейку каждую вторую букв; каждую третью букву; только гласные.Plot3D, Integrate, Simplify.For[i=0,i<5,{i^2}], прервите вычисления известными вам способами.Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.