ВУЗ: Московский технический университет связи и информатики
Категория: Учебное пособие
Дисциплина: Программирование
Добавлен: 23.10.2018
Просмотров: 6223
Скачиваний: 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.2-3
Тригонометрические функции (аргумент задается в радианах) |
|
sin(), cos(), tan(), cot() |
Синус, косинус, тангенс и котангенс |
sec(), csc() |
Секанс, косеканс |
Обратные тригонометрические функции (результат в радианах) |
|
asin(),cos(),atan(), |
Арксинус, арккосинус, арктангенс и арккотангенс |
asec(), acsc() |
Арксеканс, арккосеканс |
Алгебраические и арифметические функции |
|
abs(), sign() |
Модуль и знак числа |
exp() |
Экспоненциальная функция |
log(), log2(), log10() |
Логарифм натуральный, по основанию 2 и 10 |
sqrt() |
Квадратный корень |
fix() |
Целая часть числа |
floor() |
Округление до ближайшего целого значения, которое не превышает аргумент |
mod(x, y), rem(x, y) |
Остаток от деления x на y. Целая часть определяется соответственно функциями floor и fix |
sign() |
Знак числа |
factorial() |
Вычисление факториала числа |
Гиперболические функции |
|
sinh(), cosh(), tanh(), coth() |
Гиперболические синус, косинус, тангенс и котангенс |
sech(), csch() |
Гиперболические секанс и косеканс |
asinh(), acosh(), atanh(), acoth() |
Гиперболические арксинус, арккосинус, арктангенс и арккотангенс |
Функции для работы с комплексными числами |
|
conj() |
Комплексно-сопряжённое число |
imag() |
Мнимая часть числа |
real() |
Вещественная часть числа |
mod(), rem() |
Остаток от деления с учетом знака делимого и без |
gcd(), lcm() |
Наибольший и наименьший общий делитель |
angle() |
P = angle(Z) возвращает фазу угла в радианах. Для комплексного Z модуль R и фаза угла P связаны следующим образом: R = abs(Z) theta = angle(Z) Z = R.*exp(i*theta) |
isreal() |
Возвращает логическую 1, если число действительное, и 0 – если комплексное. |
Система Matlab содержит более 1000 встроенных функций, однако предоставляет пользователю средства для создания и использования своих собственных функций – так называемых функций пользователя. О создании и использовании функций в виде m-файлов речь пойдет в параграфе 1.1.3.
Рассмотрим несколько примеров (рис. 1.1.2-1).
Рис. 1.1.2-1. Примеры использования встроенных функций Matlab
Кроме математических выражений в Matlab используются логические выражения.
Логические выражения в Matlab строятся на основе математических выражений, операций отношения и соответствующих им функций, логических операций и функций, а также круглых скобок. Результатом логического выражения является значение равное 1, если выражение Истинно (True), и значение 0 в противном случае – выражение Ложно (False). Если операнды – действительные числа, то использование операций тривиально.
Операции отношения и соответствующие им функции служат для сравнения двух величин, векторов и матриц. Список операций отношений приведен в табл. 1.1.2-4.
Таблица 1.1.2-4
Функция |
Операция |
Описание |
Пример |
eg() |
== |
Равно |
x==y; eg(x,y); |
ne() |
~= |
Не равно |
x~=y; ne(x,y); |
lt() |
< |
Меньше чем |
x<y; lt(x, y); |
gt() |
> |
Больше чем |
x>y; gt(x,y); |
le() |
<= |
Меньше или равно |
x<=y; le|(x,y); |
ge() |
>= |
Больше или равно |
x>=y; ge(x,y); |
Операции отношений выполняют поэлементное сравнение векторов или матриц одинакового размера и возвращают значение равное 1, если элементы идентичны, и значение 0 в противном случае.
Следует отметить, что операции <, <=, >, >= при комплексных операндах используются для сравнения только действительных частей операндов – мнимые отбрасываются. В то же время операции == и ~= ведут сравнения с учетом как действительной, так и мнимой частей операндов (рис. 1.1.2-2).
Рис. 1.1.2-2. Примеры операций отношения над векторами и
комплексными числами
Операции отношения обычно применяются в логических выражениях, которые являются условиями операторов if, for, while, switch и служат для изменения последовательности выполнения операторов программы Matlab.Использование этих операторов подробно рассмотрено в Теме 1.3.
При вычислении выражений операции отношений имеют более низкий приоритет, чем арифметические, но более высокий, чем логические операции.
Логические
операции и
соответствующие им функции служат для
поэлементных логических операций над
элементами одинаковых по размеру
массивов. Список логических операций
отношений приведен в
табл. 1.1.2-5.
Таблица 1.1.2-5
Функция |
Операция |
Описание |
Пример |
and() |
& |
Логическое умножение (И) |
>>x&y ans = 1 0 0 |
or() |
! |
Логическое сложение (ИЛИ) |
>>or(x,y) ans = 1 1 1 |
not() |
~ |
Логическое НЕ |
>> ~x ans = 0 1 1 |
Логические функции дополняют логические операции и представлены в табл. 1.1.2-6, где в примерах используются вектора x=[1 0 0] и y=[111].
Таблица 1.1.2-6
Функция |
Описание |
Пример |
xor () |
Исключающее ИЛИ |
>>xor(x,y) ans = 0 1 1 |
all() |
Верно, если все элементы вектора не равны 0 |
>>all(x) ans = 0 |
any() |
Верно, если все элементы вектора равны 0 |
>>any(x) ans = 1 |
find() |
Нахождение ненулевых элементов в векторах |
>>find(x) ans = 1 |
Специальные операции реализуются с помощью специальных символов (табл. 1.1.2-7). Они предназначены для создания самых разнообразных объектов входного языка системы Matlab и придания им различных форм.
Таблица 1.1.2-7
Обозначение |
Название |
: |
Двоеточие – формирование подвекторов и подматриц |
( ) |
Круглые скобки используются для задания порядка выполнения операций в выражениях, указания последовательности аргументов функции и указания индексов элемента вектора или матрицы |
[ ] |
Квадратные скобки – формирование векторов и матриц |
{ } |
Фигурные скобки – формирование массивов ячеек |
. |
Десятичная точка используется для отделения дробной части чисел от целой |
.. |
Две точки подряд указывают на родительский каталог – переход по дереву каталогов на один уровень вверх |
... |
Три точки подряд указывают на продолжение строки |
, |
Запятая – разделитель элементов |
|
Точка с запятой используется внутри круглых скобок для разделения строк матриц, а также в конце операторов для запрета вывода на экран результата вычислений |
% |
Знак процента – начало комментария |
= |
Символ равно используется для присваивания (операция присваивания) значений в выражениях |
'текст' |
Одиночные кавычки (апострофы), внутри которых заключен текст, интерпретируемый как вектор символов с компонентами, являющимися символами. Кавычка внутри строки задается двумя кавычками |
' |
Кавычка (апостроф) – транспонирование матриц (А'). Для комплексных матриц транспонирование дополняется комплексным сопряжением, т.е. строки транспонированной матрицы соответствуют столбцам исходной матрицы |
. ' |
Точка с кавычкой (точка с апострофом) – транспонирование массива (А.') Для комплексных массивов операция сопряжения не выполняется |
[,] |
Квадратные скобки с перечислением внутри их элементов через запятую – горизонтальная конкатенация – объединение матриц А и В[А,В] |
[;] |
Квадратные скобки с перечислением внутри их элементов через точку с запятой – вертикальная конкатенация – объединение матриц А и В[А;В] |
Функции пользователя – это функции, создаваемые пользователем системы, которые значительно облегчают работу за счет частого использования в математических выражениях, получении таблиц значений функций и построении графиков.
Как правило, функции создаются для обработки множества значений аргументов, поэтому при описании их математических выражений используются операции с точкой. Для создания функции с помощью оператора @ используется следующий формат:
Имя = @(Аргументы)Выражение
Функция может иметь несколько аргументов, тогда они перечисляются через запятую. Имя функции формируется аналогично имени переменной и должно быть уникально. Если в конце строки не введен символ точки с запятой, то в следующей строке выводится выражение функции.
В примере (рис. 1.1.2-3) описана функция и получены ее значения для множества значений аргумента x. Традиционное обращение к функции выводит значения функции в строку, а добавление символа апостроф (') – в столбец. Также в примере показаны возможности вычисления значения функции от числового аргумента и использования функции пользователя в выражениях.
Для создания функции с использование inline() применяется следующий формат:
Имя = inline('Выражение')
Здесь выражение заключено в апострофы, а аргумент функции inline() символьный. Функция сама распознает аргументы и выводит в следующей строке принятое обращение.
В приведенном ниже примере (рис. 1.1.2-4) показано описание функции с использованием inline(), вычисление значения функции s(x,y) для аргументов, заданных числами, и для аргументов, являющихся векторами. В последнем случае векторы, являющиеся аргументами функции, должны быть одной длины.
Рис. 1.1.2-3. Создание функции с помощью оператора @
Рис. 1.1.2-4. Создание функции с помощью inline()
Наряду с рассмотренными выше функциями пользователя в Matlab имеется возможность создания функций (или некоторой последовательности вычислений) в виде m-файлов, которые можно сохранять и использовать в других сеансах работы. Подробнее материал о создании и работе с m-файлами, а также о средствах программирования в среде Matlab, изложен в Теме 3.1.
Символьная константа – это последовательность символов, заключенных в одиночные апострофы. Например, 'Кафедра ВМиП'
Комментарии в Matlab определяются с помощью символа %. Например,
% Это комментарий
1.1.3.
Лабораторная работа по теме
«Элементы
рабочей среды Matlab
и простейшие
вычисления»
-
Элементы основного окна Matlab.
-
Окно панели Command Window.
-
Установка свойств среды системы Matlab.
-
Основные объекты системы Matlab.
-
Правила записи и вычисления арифметических выражений.
-
Работа с функциями пользователя, заданными в окне Command
Window.
-
Общее задание
-
Изучите материал Темы 1.1 (п.п. 1.1.1 – 1.1.2).
-
Настройте стандартную конфигурацию Рабочей среды, выполнив команду Default.
-
Выполните команду clear all для очистки Рабочей среды.
-
Выберите вариант задания формул из табл. 1.1.3-1.
-
Задайте переменным x и y допустимые числовые значения.
-
Проанализируйте информацию, возникшую в окне Workspace.
-
Введите формулу для вычислений арифметического выражения и получите результат.
-
Измените значения исходных данных.
-
Измените формат вывода результата, выполнив команду
format long, и произведите перерасчет значения выражения. -
Верните формат вывода данных short.
-
Представьте арифметическое выражение в виде правой части функции f(x).
-
Опишите функцию f(x) с помощью оператора @, и получите вначале ее символьное выражение, а затем ее числовое значение при новом значении переменной х.
-
Опишите функцию f(x) с помощью inline().
-
Измените значение переменной y, вычислите значения выражения b и функции f(x).
-
Объясните, почему изменение значения y привело к изменению значения b, но не повлияло на значение функции.
-
Задайте диапазон изменения аргумента функции с шагом, позволяющим получить таблицу значений функции f(x) для заданных значений аргумента (порядка 8-10 точек), и выведете значения функции f(х) в выбранном интервале вначале в строку, а затем в столбец.
-
Выполните команду who и проанализируйте выведенную информацию о данных.
-
Выполните команду whos и проанализируйте выведенную информацию о данных.
-
Установите путь к папке, находящейся на вашей флешь-карте, для сохранения содержимого окна Command Window.
-
Создайте файл в текущей папке.
-
Выделите в окне Command Windowс использованием команд diary on иdiary offобласть сохранения.
-
Сохраните текст рабочего окна на внешнем носителе.
-
Представьте результаты работы преподавателю, ответьте на поставленные вопросы.
-
Выполните команду clear all для очистки Рабочей среды.
-
Оформите отчет по выполненной работе.
-
Варианты индивидуальных заданий
Таблица 1.1.3-1
№ |
Формулы
для |
№ |
Формулы
для |
1. |
16. |
||
2. |
17. |
||
3. |
18. |
||
4. |
19. |
||
5. |
20. |
||
6. |
21. |
||
7. |
22. |
||
8. |
23. |
||
9. |
24. |
||
10. |
25. |
||
11. |
26. |
||
12. |
27. |
||
13. |
28. |
||
14. |
29. |
||
15. |
30. |
-
В начале сессии введите в формате комментариев:
-
название лабораторной работы;
-
ФИО студента, номер группы;
-
№ варианта;
-
индивидуальное задание.
-
Протокол вычислений (сессии) в окне Command Window в соответствии с общим заданием, снабженный подробными комментариями.
-
Контрольные вопросы по теме
-
Назначение окна Command Window.
-
Назначение окна Command History.
-
Окно отображения информации о данных.
-
Назначение команд who и whos.
-
Каким образом установить формат для вывода числовых значений на экран?
-
Каким образом перенести командную строку из окна Command History в окно Command Windows?
-
Каким образом установить формат для вывода числовых значений на экран?
-
Форматы числовых данных в системе Matlab.
-
Что такое системные константы?
-
Что такое символьные константы?
-
Команда объявления символьных переменных.
-
Какой символ используется для определения комментария?
-
Какая из операций .* или * является операцией поэлементного умножения?
-
Какой символ предназначен для запрета вывода результата выполнения команды на экран?
-
Создание функций с помощью команды @.
-
Создание функции с помощью inline().