Компьютерная математика. Часть...

29
Компьютерная математика. Часть 2 Символьный пакет MATHEMATICA 2017 Лаврова Ольга Анатольевна БГУ, ММФ, кафедра ДУ и СА

Upload: others

Post on 26-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Компьютерная математика. Часть 2

Символьный пакет MATHEMATICA

2017

Лаврова Ольга АнатольевнаБГУ, ММФ, кафедра ДУ и СА

Page 2: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Структура курса (научно-педагогическая деятельность)

• 9 лекций

• 8 лабораторных занятий

• консультации

• Работы студентов• 5(6) лабораторных работ

• 2 балла – работа сделана правильно и сдана в срок• 1 балл – работа сделана правильно и сдана позже срока• 0 баллов – работа не сдана до конца семестра

• 2 контрольные работы по теории• 2 самостоятельные работы по практике

• Экзамен (0.4*оценка_за_семестр + 0.6*оценка_на_экзамене)

Компьютерная математика. Mathematica. 2017 2

Page 3: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Материалы

• Л.Л. Голубева, А.Э. Малевич, Н.Л. Щеглова. Компьютерная математика. Символьный пакет Mathematica. Курс лекций. 2005

• Л.Л. Голубева, А.Э. Малевич, Н.Л. Щеглова. Компьютерная математика. Символьный пакет Mathematica. Лабораторный практикум. Часть 1. 2012

• Литература на факультетском сервере \\mmf-fs

• Информация на сайте km.mmf.bsu.by

[email protected]

Компьютерная математика. Mathematica. 2017 3

Page 4: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Цель курса

Изучение основных принципов работы с системой Mathematicaдля эффективного решения математических задач

Основной навык для эффективного использования системы Mathematica – это программирование

Компьютерная математика. Mathematica. 2017 4

Page 5: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Тема 1. Знакомство с системой Mathematica

1.1 Возможности системы Mathematica

1.2 Структура системы Mathematica

1.3 Работа с документом

1.4 Функция

Компьютерная математика. Mathematica. 2017 5

Page 6: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Тема 1. Знакомство с системой Mathematica

• Разработчик – Wolfram Research Inc. (USA)

• Mathematica 1.0 (1988 г.), Mathematica 11 (август 2016 г.)

• текущая версия Mathematica 11.0.1

• Назначение

• проведение научных исследований (построение моделей, разработка алгоритмов, тестирование алгоритмов)

• работа с данными (множество форматов данных, визуализация, доступ к «справочным» данным)

Компьютерная математика. Mathematica. 2017 6

Page 7: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Тема 1. Знакомство с системой Mathematica

Компьютерная математика. Mathematica. 2017 7

Page 8: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.1 Возможности системы Mathematica

• символьные вычисления + численные вычисления

• многие вычислительные процессы контролируются автоматически

• весь рабочий процесс в одном документе. Документ интерактивный с высокой степенью визуализации результатов

• программирование, основанное на знаниях – встроенный функционал для широкого класса задач (>5000), встроенные данные

• множественность реализации за счет поддержки различных парадигм программирования (процедурное, функциональное, логическое, на массивах) на основе языка

Wolfram Language (название языка с 2013)

• Свободная форма ввода команд через интеграцию с Wolfram|Alpha (2009)

Компьютерная математика. Mathematica. 2017 8

Page 9: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Компьютерная математика. Mathematica. 2017 9

1.1 Возможности системы Mathematica

Page 10: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.2 Структура системы Mathematica

Компьютерная математика. Mathematica. 2017 10

Page 11: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.2.1 Элементы структуры

• Ядро (Kernel) – выполнение всех вычислительных процессов

• Оболочка (Front End) – интерфейс между пользователем и ядром

• Библиотека (Library) – содержит часть встроенного функционала

• Пакеты расширений (Add-on Packages) – дополнительный функционал

• Справочная система (Help)

Компьютерная математика. Mathematica. 2017 11

Page 12: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.2.2 Оболочка

• Весь рабочий процесс в одном документе – блокноте (Notebook)

• Документ является интерактивным

• Документ состоит из последовательности ячеек (Cells). Создается авотматическипри наборе текста

• Ячейка определяется ее стилем • Input – выражение для вычисления• Output – вывод результата вычисления• Text, Title, Section, Subsection,… – текст

• Оболочка является мощной системой редактирования текста

Компьютерная математика. Mathematica. 2017 12

Page 13: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.2.3 Ядро

• Вычисляет выражение (Expression) после нажатия <Shift+Enter>

• Вычисления с целыми числами, рациональными числами и символами – символьные (пример, 3/7+2/11, Sin[𝜋/5], 1/3, 1/3., N[𝜋,100])

• ВАЖНО: Если Ядро не может вычислить выражение, то результатом является исходное выражение, а не ошибка (пример, Sin[𝜋/50])

• Вычислительная сессия (Session)• Создание сессии – автоматически при запуске первой ячейки Input• Окончание сессии – удаление переменных и сброс ядра в начальное состояние

– через Evaluation->Quit Kernel->Local

Компьютерная математика. Mathematica. 2017 13

Page 14: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.2.4 Справочная система

• Справочная система состоит из документов (≈14000 печатных страниц, ≈ 105 примеров)

• Доступ к справочной системе через• меню Help• F1• предсказательный интерфейс• функции Definition (?) и Information (??) – справка для символов

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

Компьютерная математика. Mathematica. 2017 14

Page 15: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.3 Работа с документом

• Работа ТОЛЬКО в ячейках• Выделяется скобкой справа• Различный СТИЛЬ

• Input – выражение для вычисления, Output – вывод результата вычисления, Text, Title, Section, … – текст

• Ячейки ввода (Input, Text, Title, Section, …) и вывода (Output)

• Ввод встроенных символов через палитры (меню Palletes)• Удобство ввода данных в начале знакомства с системой• Контекстная подсказка для ввода с клавиатуры. ВАЖНО научится работать с

клавиатуры

• Документ может иметь разный СТИЛЬ оформления (Article, Textbook,…)

Компьютерная математика. Mathematica. 2017 15

Page 16: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4 Функция• Вызов Name[arg1, arg2, arg3, …, argn];Пример: TraditionalForm[Gamma[x]]

• Может поддерживать несколько синтаксисовПример: Log[E2] и Log[2,8]

• Функция одного аргумента поддерживает разные формы вызова

Log[E] или Log@E (префиксная запись) или E // Log (постфиксная)Пример: Length @ Names["System`*"]

• Может содержать опции – необязательные аргументы. Например, Name[arg1,arg2,OptionName->OptionValue]. По умолчанию значения опций устанавливаются автоматически

Пример: Framed[x]; Options[Framed]; Framed[x, Background -> Yellow]

Компьютерная математика. Mathematica. 2017 16

Page 17: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.1 Встроенная функция. Пример

Компьютерная математика. Mathematica. 2017 17

Page 18: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.1 Встроенная функцияМожет вызываться через соответствующий оператор

Функция Операторная запись

Definition[Name] ?Name

Information[Name] ??Name

Rule[a,b] a->b

Set[a,b] a = b

SetDelayed[a,b] a:=b

List[a,b] {a,b}

Times[a,b] a*b или a b (ab НЕВЕРНО)

Компьютерная математика. Mathematica. 2017 18

Page 19: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Функция пользователя functionName[arg1_,arg2_,…,argn_] := functionBody

• functionName ЖЕЛАТЕЛЬНО с маленькой буквы• arg1_ аргумент задается ВСЕГДА в виде образца• SetDelayed (:=) отложенное присваивание – выполнение

команд тела функции functionBodyоткладывается до вызова функции functionName. При прямом присваивании Set (=) правая часть выполняется ТОЛЬКО ОДИН РАЗ в момент определения

• ?square или ??square вызов справки для символа square• ClearAll[square], ClearAll ["Global`*"] удаление информации для символа/всех

символов контекста Global• Remove[square], Remove["Global`*"] удаление символа/всех символов

контекста Global

Компьютерная математика. Mathematica. 2017 19

Page 20: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Присваивание Set (=) и SetDelayed (:=)

В системе Mathematica нету фундаментального различия между понятиями переменная и функция (см. Example 2, fSetDelayed)

Компьютерная математика. Mathematica. 2017 20

Page 21: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Функция пользователя. Пример I

Компьютерная математика. Mathematica. 2017 21

Page 22: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Функция пользователя. Пример II

Компьютерная математика. Mathematica. 2017 22

Page 23: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Функция пользователя. Пример III

Компьютерная математика. Mathematica. 2017 23

Page 24: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.2 Функция пользователя. Рекурсия

Компьютерная математика. Mathematica. 2017 24

Page 25: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.4 Безымянная функция

• Определяется без имени

• Вызывается там, где определяется

functionBody(#1,#2,Slot[3],…,#n) &

или с использованием локальных имен

Function[{arg1,arg2,…,argn}, functionBody]

По-английски: pure function, anonymous function, lambda expression

Компьютерная математика. Mathematica. 2017 25

Page 26: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.4 Безымянная функция. Пример I

Компьютерная математика. Mathematica. 2017 26

СОВЕТ: тело безымянной функции записывайте в круглых скобках10 (#1+#2)&[1,2]

Page 27: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.4 Безымянная функция. Пример II

Компьютерная математика. Mathematica. 2017 27

Многие встроенные функции используют безымянные функции в качестве аргумента

Page 28: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

1.4.4 Безымянная функция. Пример III

Компьютерная математика. Mathematica. 2017 28

Page 29: Компьютерная математика. Часть 2km.mmf.bsu.by/courses/2016/km2ped/KM2_Introduction... · 1.2.3 Ядро •Вычисляет выражение(Expression)

Тема 1. Важные понятия

• Ядро, Оболочка, Сессия

• Документ, Ячейка

• Выражение (Тема Все есть выражение)

• Образец (Тема Образец)

• Безымянная функция (Тема Функциональный стиль программирования)

• Виды присваиваний = (Set), := (SetDelayed), -> (Rule)

• Синтаксическое различие между скобками: [аргументы функций],(группировка в выражении), {элементы списка}, {*комментарии*}, [[ ??? ]]

Компьютерная математика. Mathematica. 2017 29