ВУЗ: Московский технический университет связи и информатики
Категория: Учебное пособие
Дисциплина: Программирование
Добавлен: 23.10.2018
Просмотров: 6248
Скачиваний: 74
СОДЕРЖАНИЕ
Раздел 1. Основы работы с математическим пакетом Matlab
Тема 1.1. Элементы рабочей среды Matlab
1.1.1.Элементы рабочей среды Matlab и простейшие вычисления
1.1.2. Основные объекты системы Matlab
1.1.3. Лабораторная работа по теме «Элементы рабочей среды Matlab и простейшие вычисления»
1.2.2. Построение графиков и визуализация вычислений в системе MatLab
1.2.3. Лабораторная работа по теме
«Векторы, матрицы и построение графиков
1.2.4. Контрольные вопросы по теме
Тема 1.3. Средства Matlab для создания и описания m-файлов
Пример 1.3.5-1. Даны n чисел . Требуется вычислить их сумму: где
1.3.6. Лабораторная работа по теме
«Средства алгоритмизации и программирования
1.3.7. Контрольные вопросы по теме
Раздел 2. Технология решения вычислительных задач средствами MatLab
Тема 2.1. Решение нелинейных уравнений
2.1.2. Лабораторная работа по теме
«Технология решения нелинейных уравнений средствами пакета MatLab»
1. Вопросы, подлежащие изучению
2.1.3. Контрольные вопросы по теме
Тема 2.2. Технология аппроксимации интерполяции функций в среде пакета MatLab
Рис. 2.2.1-5. Вычисление функции в точке х=0.58
Рис. 2.2.2-7. Графики интерполирующих функций
Тема 2.4. Технология решения обыкновенных дифференциальных уравнений
Рис. 2.4.1-2. Решение ОДУ методом Рунге-Кутты четвертого порядка
1. Вопросы, подлежащие изучению
Тема 2.5. Технология решения задач одномерной оптимизации
2.5.2. Лабораторная работа по теме
«Технология решения задач одномерной оптимизации»
1. Вопросы, подлежащие изучению
3. Варианты индивидуальных заданий
2.5.3. Контрольные вопросы по теме
Тема 2.6. Технология решения задач многомерной оптимизации
Рис. 1.1.1-7. Рабочая среда Matlab при активной вкладке APPS
Рассмотрим правила работы в окне Command Window.
Командное окно Command Window используется для ввода команд с соответствующими данными и вывода результатов их выполнения. Работа происходит в диалоговом режиме: пользователь вводит команду и передает ее ядру Matlab, ядро обрабатывает полученную команду и возвращает результат. Все команды вводятся в командную строку после появления приглашения >>. Заканчивается ввод каждой командной строки нажатием клавиши <Enter>.
Вышеописанный сеанс работы с Matlab в окне Command Window принято называть сессией.
Рассмотрим несколько простых примеров, выполненных в командном окне (рис. 1.1.1-8).
В Примере 1 вычисляется результат выражения 2+3. Matlab по умолчанию создаёт переменную с именем ans, в которую записывает значение результата текущей операции и выводит его в следующей строке.
В Примере 2 создаётся переменная а, вычисляется значение выражения sin(pi), и результат присваивается переменной а. Теперь эта переменная определена (атрибуты этой переменной отображаются в окне Workspace) и ее можно использовать для дальнейших вычислений.
В Примере 3 выражение заканчивает точка с запятой, которая «гасит» вывод результата, но он по-прежнему сохраняется, в этом случае в переменной с именем r, при этом значение этой переменной также отображается в окне Workspace. Значение этой переменной можно вывести в строке окна Command Window в любой момент, набрав имя переменной в командной строке и нажав клавишу <Enter>.
Рис. 1.1.1-8. Примеры простейших вычислений в окне Command Window
Обратите внимание, что предпочтительнее вычислять длинное выражение по частям с использованием промежуточных переменных.
Обратите внимание, что в любой момент значение переменной можно отобразить в командном окне, набрав имя переменной и нажав <Enter>, либо использовать функцию disp(), например, disp(b).
Все переменные системы Matlab размещаются в рабочей области оперативной памяти и отображаются в окне Workspace (рис. 1.1.1-9). Информацию о них (имена, размерности, типы и др.) можно отобразить на экране с помощью команд Matlab who или whos.
Для очистки командного окна служит команда clc, а для очистки рабочей памяти – clear all.
Обратите внимание, что переменные объявлять не надо, так как
по умолчанию все вычисления в Matlab выполняются с двойной точностью.
Рис. 1.1.1-9. Окно рабочей области Workspace
Формат вывода численных значений на экран можно установить принудительно в окне Command Window, указав тип формата командой:
format ТипФормата
или
с помощью установки свойств в окне
Preferences,
которое можно вызвать соответствующим
инструментом панели инструментов
вкладки Home
(рис.
1.1.1-1).
Обратите внимание, что в окне Preferences можно установить свойства почти всех объектов Рабочей среды Matlab.
Для установки формата в окне Preferences внутри группы Text display следует выбрать раскрывающиеся списки Numeric format, а из раскрывшегося списка Numeric format выбрать один из форматов табл. 1.1.1-1.
Таблица 1.1.1-1
Формат |
Пояснения |
short |
Выводит короткое число с плавающей точкой. Число представляется с помощью четырех цифр после десятичной точки (по умолчанию) |
long |
Выводит длинное число с плавающей точкой. Представляется с помощью четырнадцати цифр после десятичной точки |
short e |
Выводит короткое число с плавающей точкой. Представляется с помощью пяти разрядов, четыре из которых отводится под вывод дробной части |
long e |
Выводит длинное число с плавающей точкой. Представляется с помощью шестнадцати разрядов, пятнадцать из которых отводится под вывод дробной части |
В стандартной конфигурации Рабочей среды для выделения результатов вычисления или значений переменных Matlab перед выводимым значением вставляет пустую строку. Управлять появлением или отсутствием пустой строки можно в диалоговом окне Preferences внутри группы Text display с помощью форматов:
-
compact – строки с результатами выводятся подряд;
-
loose – строки с результатами разделяются пустой строкой.
Если окно Command Window активно (заголовок окна выделен синим цветом), то после нажатия на правую кнопку мышки, указатель которой находится на заголовке окна, появится контекстное меню, показанное на рис. 1.1.1-10а, а если указатель мышки находится в области окна, появится контекстное меню, показанное на рис. 1.1.1-10б.
а) б)
Рис. 1.1.1-10. Контекстные меню Command Window
Сохранить содержимое рабочего окна (сессию) на внешнем носителе в виде текстового файла можно с помощью специальных команд для ведения, так называемого дневника сессии:
diary ИмяФайла.m или diary ИмяФайла.txt.
Эти команды производят запись в текстовый файл всех команд ввода с клавиатуры и полученных результатов. Чтобы записать части содержимого Командного окна, используются команды:
diary off – приостанавливает запись в файл, а команда
diary on – вновь начинает запись в файл.
Таким образом, чередуя команды diary off и diary on, можно сохранять необходимые фрагменты сессии.
Окно Workspace предназначено для быстрого просмотра атрибутов переменных, расположенных в рабочей области, а также их записи в файл и чтения из файла (рис. 1.1.1-1). В этом окне можно увидеть имя переменной (Name), значение (Value), ее размер (Size), число байтов, занимаемых переменной в памяти (Bytes), и ее тип (Class). Для идентификации класса переменной слева от имени используется соответствующая иконка.
Отобразить на экране окно Workspace можно либо с помощью соответствующей команды инструментальной панели, либо с помощью задания команды Workspace в командном окне. С помощью команд контекстного меню (рис. 1.1.1-11а,б) можно изменять внешний вид окна Workspace (скрывать или показывать поля Size, Value, Bytes и Class), а также сортировать переменные по имени, размерности, количеству байт и классу.
Команды контекстного менюWorkspace позволяют выполнять следующие действия: создать новую переменную (New); открыть редактор данных для просмотра или редактирования значений выделенной переменной (Open Selection); загружать данные из файла в рабочую область (Load); сохранять рабочую область в файле (Save); печатать содержимое рабочей области (Print); удалить выделенную переменную (Delete); построить графики (plot(d)).
|
|
а) б)
Рис. 1.1.1-11. Контекстные меню окна Workspace
Просмотреть содержимое рабочей области, загружать или удалять данные можно и с помощью ввода команд в окне Command Window. Так для просмотра переменных, находящихся в рабочей области, в командную строку необходимо ввести команду who. Результат выполнения команды who по внешнему виду напоминает окно Workspace, только без полей Size, Bytes и Class.
Полную информацию о содержании рабочей области можно получить с помощью команды whos, в результате выполнения которой в окне Command Window выводится информация обо всех переменных и общий объем занимаемой ими памяти.
Для удаления переменной из рабочей области следует ввести команду
сlear ИмяПеременной.
Очистка всей рабочей области осуществляется с помощью команды
clear без параметров.
Загрузка всех данных из файла реализуется командой
load ИмяФайла.
Выборочная загрузка данных реализуется командой
load ИмяФайла ИмяПеременной.
Для
сохранения рабочей области на диске
необходимо ввести
команду
save ИмяФайла.
Данные будут сохранены в файле с расширением *.mat. Выборочное сохранение переменных из рабочей области обеспечивается командой
save ИмяФайла ИмяПеременной.
Окно Редактор данных изображено на рис 1.1.1-12, предназначено для просмотра и редактирования значений переменных. Под редактированием переменных подразумевается не только изменение значений элементов массива, но также и изменение размера массива.
Рис. 1.1.1-12. Окно редактора данных
|
|
а) б)
Рис. 1.1.1-13. Контекстные меню окна Редактор данных
Редактор данных вызывается двойным щелчком на имени переменной в окне рабочей области или заданием в командном окне команды
openvar('ИмяПеременной').
Контекстные меню Редактор данных показаны на рис. 1.1.1-13.
На рис. 1.1.1-14 показан пример окна Command History. Это окно служит для просмотра команд, заданных ранее в командной строке Command Window.
Рис. 1.1.1-14. Окно истории команд Command History
|
|
а) б)
Рис. 1.1.1-15. Контекстное меню окна Command History
Изменять параметры работы окна истории команд можно с помощью диалогового окна Preferences (рис. 1.1.1-3), при активном окне Comman History. Окно CommandHistory хранит все команды, набираемые пользователем. В отличие от содержимого Command Window сюда не попадают сообщения системы и результаты вычислений.
Окно Command History целесообразно использовать при вводе команд, однотипных вычислений или просто повторений группы командных строк. Чтобы ввести в текущую строку содержимое ранее введенной командной строки, достаточно нажатием клавиш <↑> или <↓> подобрать нужную строку. Перенести конкретную строку в командное окно можно двойным щелчком мыши по этой строке в окне Command History.
Для очистки области истории команд используются команда clear или команда контекстного меню сlear Command History.
1.1.2. Основные объекты системы Matlab
Математические выражения в Matlab строятся на основе чисел, числовых констант, переменных, стандартных и нестандартных функций, соединенных знаками арифметических операций и круглых скобок. Кроме того, в математических выражениях могут использоваться различные спецзнаки. Вид результата зависит от установленного формата.
Число – объект языка Matlab, представляющий числовые данные. Числа могут быть представлены в целом, дробном, с фиксированной и плавающей точкой, а также в экспоненциальном виде. Например,
0, 2, -4, 4.67, 0.0005, 567.9e-7, 0.89e12.
Причем, числа могут быть как действительными, так и комплексными. Комплексные числа содержат действительные и мнимые части. В Matlab мнимая часть имеет множитель i или j, означающий корень квадратный из -1. Например,
3i, 5j, -5.1 + i8, 0.05e-5 - j0.006.
Числовая константа – это предварительно определенное число (числовое значение). Числа (например, 1, -5, 3.97) являются безымянными числовыми константами.
Системные константы (табл. 1.1.2-1) – это такие константы, значения которых задаются системой при загрузке, но при необходимости их можно переопределить.
Таблица 1.1.2-1
Константа |
Назначение |
i или j |
Мнимая единица |
pi |
Число π=3.1415926… |
eps |
Погрешность вычислений над числами с плавающей точкой (2-52) |
realmin |
Наименьшее число с плавающей точкой (2-1022) |
realmax |
Наибольшее число с плавающей точкой (21022) |
inf |
Значение машинной бесконечности |
ans |
Переменная, хранящая результат последней операции |
NaN |
Указание на нечисловой характер данных (Not-a-Number) |
Переменные – это объекты, имеющие имена. Они способны хранить некоторые разные по значению данные. В зависимости от этих данных переменные могут быть числовыми или символьными, векторными или матричными. Имена переменных (идентификаторы) задаются по следующим правилам:
-
имя переменной может состоять из символов латинского алфавита, знака подчёркивания и цифр, но начинаться обязательно с буквы;
-
в имени переменной различаются прописные и строчные буквы;
-
в имя переменной не входит пробел;
-
имя переменной не должно совпадать с именами других переменных, функций, то есть должно быть уникальным;
-
желательно использовать содержательные имена для обозначения переменных.
Обратите внимание, что переменные и их типы заранее не декларируются (не объявляются). Они объявляются выражением, значение которого после вычисления присваивается переменной.
В оперативной памяти компьютера переменные занимают определенное количество байтов. Как известно, эта область называется Workspace.
Операция присваивания используется для задания переменным определенных значений и обозначается знаком равенства =:
Имя переменной = Выражение
Имя переменной = Выражение;
Арифметические операции в системе Matlab можно проводить вычисления как с вещественными, так и с комплексными числами. Полный список арифметические операции приведен в табл. 1.1.2-2.
Следует обратить внимание, что в математических выражениях с операциями +, -, * ,^, /, \ участвуют как векторы, так и матрицы.
Первые восемь операций действуют в соответствии с правилами линейной алгебры, т.е. с правилами операций над векторами и матрицами.
Последние четыре операции, так называемые операции с точкой, осуществляют поэлементные операции над массивами.
Таблица 1.1.2-2
Функция |
Название |
Операция |
Синтаксис |
plus() |
Плюс |
+ |
M1+M2 |
uplus() |
Унарный плюс |
+ |
+M |
minus() |
Минус |
- |
М1-M2 |
uminus() |
Унарный минус |
- |
-М |
mtimes() |
Матричное умножение |
* |
M1*M2 |
times() |
Поэлементное умножение массивов |
.* |
A1.*A2 |
mpower() |
Возведение матрицы в степень |
^ |
М^х |
power() |
Поэлементное возведение массива в степень |
.^ |
A.^x |
mldivide() |
Обратное (справа налево) деление матриц |
\ |
M1\M2 |
mrdivide() |
Деление матриц слева направо |
/ |
M1/M2 |
ldivid() |
Поэлементное деление массивов справа налево |
.\ |
A1.\A2 |
rdivide() |
Поэлементное деление массивов слева направо |
./ |
A1./A2 |
Подробнее операции над векторами и матрицами рассмотрены в Теме 1.2.
Приоритет исполнения математических операций в Matlab аналогичен приоритету в языках программирования высокого уровня: возведения в степень, умножения и деления, сложения и вычитания. Для изменения приоритета в математических выражениях используются круглые скобки.
Функции – это имеющие уникальные имена объекты, выполняющие определенные преобразования своих аргументов (параметров) и при этом возвращающие результаты этих преобразований. Возврат результата – отличительная черта функций. Функции могут быть встроенными (внутренними) функциями системы Matlab, функциями пользователя, которые могут дополнять встроенные функции и описанные конкретным пользователем для своих нужд, внешними функциями, или m-функциями.
Matlab обладает большим набором элементарных встроенных (библиотечных) функций, в том числе математических. Встроенные функции хранятся в откомпилированном виде в ядре системы Matlab. Некоторые из них приведены в табл. 1.1.2-3.