-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathKM.Rmd
181 lines (134 loc) · 14.9 KB
/
KM.Rmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
---
title: "Компьютерная математика"
subtitle: "Описание и программа курса"
author: "Храмов Д.А."
date: "29.02.2020"
output:
html_document:
toc: true
---
Курс посвящен MATLAB — пакету программирования для научных и инженерных расчетов. Основными преимуществами MATLAB являются:
* возможность создавать компактный программный код за счет операций над массивом в целом;
* богатейшая коллекция готовых функций;
* развитые графические возможности.
Курс является базой для освоения других курсов направления "научные вычисления" (scientific computing).
**Итоговая оценка** = 0.8 `*` оценка за лабораторные + 0.2 `*` оценка на экзамене (зачете).
**Материалы курса:** https://github.com/dkhramov/km_2020
# Лекции
## 1. Знакомство с MATLAB
Научные вычисления: что это такое и как это делается. Matlab. Интерфейс Matlab. Окна: командное окно, рабочая среда (Workspace), редактор, справка.
Переменные. Типы данных. Ключевая роль массивов. Операции и их приоритет. Элементарные функции. Специальные значения. Бесплатная альтернатива Matlab.
Онлайновые и настольные версии. Информационные ресурсы.
Примеры: Сложение матриц: С и Matlab. Данные по смертности от лихорадки Эбола. Поиск корней уравнения.
## 2. Массивы
Создание массивов. Обращение к элементам массива. Удаление строк и столбцов.
Объединение массивов. Линейная индексация. Изменение формы массива. Обращение матриц. Логический тип данных. Логическая индексация. Векторизация условий.
Примеры: Обработка изображений. Вычисление интеграла методом Монте-Карло. Вычисление $\pi$. Метод прямоугольников.
## 3. Управление вычислительным процессом. Двумерная графика
Условный оператор if. Проверка векторного условия. Функции составления условий: any, all. Оператор множественного выбора switch. Цикл с условием. Цикл со счетчиком. Вложение циклов. Прерывание цикла (break) и пропуск итераций (continue). Основная функция двумерной графики: plot. Цвет кривых, стиль линии и маркер точки. Графики в общих осях координат. Создание графических окон. Управление свойствами осей координат. Текст и подписи к осям. Заголовок графика. Специализированные графики. Полярные координаты.
Примеры: Выбор типа графика. Простой процент. Единичная окружность. Моделирование диффузии. Решение систем линейных уравнений.
## 4. Функции. Ввод/вывод
Постановка задачи аппроксимации. Метрика качества приближения. Схема решения задач аппроксимации. Функции для аппроксимации/интерполяции. Расширение возможностей языка: скрипты и функции. Сохранение фрагмента скрипта в отдельном файле. Функции. Формальные и фактические параметры. Локальные и глобальные переменные. Отладка функции. Контроль аргументов функции. Файлы: определения. Ввод/вывод текстовых данных. Функции ввода/вывода: «всё в одном». Ввод/вывод: общий случай. Форматный ввод/вывод.
Примеры: Наблюдение за температурой кофе. polyfit и polyval в задаче об остывании кофе. Интерактивный ввод данных. Печать имен файлов из текущего каталога.
## 5. Трехмерная графика. Работа с изображениями
Построение кривых и точек в пространстве. Поверхность в пространстве. Как задать область определения функции. Формирование прямоугольной координатной сетки: meshgrid. Построение графиков функций двух переменных: mesh и surf. Вспомогательные графические функции. Высокоуровневые и низкоуровневые графические функции. Иерархия графических классов. Указатели объектов. Получение свойств объекта: get(h). Установка свойств объекта: set(h). Удаление объекта: delete(h). Чтение/запись изображения. Свойства изображения. Прозрачность: alpha
Примеры: Винтовая линия. Построение графика единичной сферы с помощью окружностей. Поиск максимума функции peaks и вывод его на график. Динамический график. Фракталы. Множество Жюлиа. Одномерный клеточный автомат. Игра "Жизнь". Комплексные корни полинома.
## 6. Компьютерная арифметика. Погрешности вычислений
Компьютерная арифметика: что не так? Числа с плавающей точкой. Расстояние между соседними числами. Следствия конечности разрядной сетки. Машинный эпсилон. Погрешность вычислений. Погрешности вычисления суммы и разности. Неустранимые погрешности. Погрешности вычислений и округления. Резервирование памяти под массив. Ускорение за счет памяти. Роль оперативной памяти. Разбиваем задачу на части. "Правильные" типы данных. Функции управления памятью. Советы по эффективному программированию.
Примеры: Аппроксимация числа. ПРК "Пэтриот", 25.02.1991 — ошибка при перехвате иракских ракет. Ариан-5, 4.06.1996 — взрыв после 40 секунд полета. Катастрофическая потеря точности при вычитании близких чисел одного знака. Метод половинного деления.
## 7. Математический анализ
Символьные расчеты. Создание символьных объектов. Решение уравнений и систем. Предел. Производная. Интеграл. Кратные интегралы. Разложение функции в ряд Тейлора. Суммирование рядов. Арифметика заданной точности. Преобразование/упрощение выражений. Подстановка одного выражения в другое: subs. Исследование функции. Первая производная. Асимптоты. Поиск локальных экстремумов. Точки перегиба. Структуры. Массивы ячеек
Примеры: Формула корней квадратного уравнения. Решение системы уравнений, зависящих от параметров. Вычисление несобственного интеграла.
# Лабораторные работы
1. Массивы
2. Двумерная графика
3. Управление вычислительным процессом
4. Функции. Ввод/вывод
5. Трехмерная графика
6. Символьные расчеты. Математический анализ
# Контрольные вопросы
1. Что такое научные вычисления.
2. Основные преимущества MATLAB.
3. Интерфейс MATLAB.
4. Операции и приоритет.
5. Переменные, роль ";".
6. Типы данных.
7. Матрицы. Обращение к элементам.
8. Поэлементные операции.
9. Элементарные функции.
10. Оператор ":".
11. Задание матриц. Матрицы-строки и матрицы-столбцы. Обращение к элементам.
12. Функции для создания матриц.
13. Многомерные массивы.
14. Сообщения об ошибках.
15. Векторизация циклов.
16. Логическая индексация элементов матриц.
17. Виды вычислительных процессов.
18. Условный оператор.
19. Логические условия.
20. Оператор множественного выбора switch.
21. Циклы for и while.
22. Вложенные циклы.
23. Экстренный выход из цикла.
24. Функция plot.
25. Цвет линии, тип линии, маркеры точек.
26. Построение нескольких графиков одновременно. Сетка.
27. Вывод текста в графическом окне.
28. Специальные графики.
29. Фрагменты скриптов. Функции.
30. Передача параметров: формальные и фактические параметры.
31. Объединение набора скалярных параметров в массив.
32. Отладка функций. Локальные и глобальные переменные.
33. Подфункции (субфункции).
34. Анонимные функции (однострочники).
35. Проверка аргументов функций.
36. Ввод данных с клавиатуры и из графического окна.
37. Ввод/вывод данных в текстовые файлы.
38. Форматированный ввод/вывод.
39. Массив строк.
40. Операции над файлами.
41. Сохранение/загрузка рабочей среды (save, load).
42. Вектор. Система координат. Координаты вектора. Норма вектора.
43. Скалярное и векторное произведения.
44. Перенос.
45. Поворот.
46. Масштабирование.
47. Отражение.
48. Связь новых координат со старыми.
49. Матрица преобразования координат. Последовательные преобразования.
Обратное преобразование.
50.Однородные координаты.
51. Некоммутативность умножения матриц.
52. Построение графиков кривых и точек в пространстве.
53. Задание области определения функции многих переменных.
54. Построение графиков функций двух переменных.
55. Вещественные числа с плавающей точкой.
56. Мантисса и порядок.
57. Расстояние между соседними числами.
58. Машинный эпсилон.
59. Следствия использования чисел с плавающей точкой.
60. Создание символьных объектов.
61. Математический анализ: пределы, производные, разложение в ряд Тейлора, интегралы, суммирование рядов.
62. Арифметика заданной точности.
63. Преобразование, упрощение и замена выражений.
64. Поиск корней полиномов.
65. Поиск действительных корней уравнений.
66. Системы линейных уравнений. Графическая интерпретация решения.
67. Число решений системы.
68. Вырожденные случаи. Детерминант. Плохо обусловленные системы.
69. Построение асимптот.
70. Поиск максимумов и минимумов.
71. Точки перегиба.
72. Таблица типов данных MATLAB.
73. Структуры. Ячейки.
74. Иерархия графических классов. Конструкторы объектов.
75. Указатели (дескрипторы) объектов.
76. Управление свойствами объектов.
77. Чтение и запись изображений.
78. Информация об изображении.
79. Одномерный клеточный автомат.
# Литература
1. Ануфриев И. Е., Смирнов А. Б., Смирнова Е. Н. MATLAB 7. - СПб.: БХВ-Петербург. 2005.
2. Хант Б. и др. Matlab R2007 с нуля! - М.: Лучшие книги, 2008.
3. MATLAB. Язык технических вычислений. Вычисление, визуализация, программирование / Пер. с англ. Конюшенко В.В.
4. [Pascal Getreuer. Writing Fast MATLAB Code](http://www.csc.kth.se/utbildning/kth/kurser/DN2255/ndiff13/matopt.pdf)