Вы находитесь на странице: 1из 200

ЛАБОРАТОРНАЯ РАБОТА №1

РАБОТА В ИНТЕРАКТИВНОМ РЕЖИМЕ В СРЕДЕ


MATLAB

1. ЦЕЛЬ РАБОТЫ
Освоение основных понятий среды MATLAB.
Научиться работать в командной строке.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Найти значения выражений из приложения № 1.3.
Выполнить в соответствии с вариантом заданным
преподавателем.

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.

Работа выполняется в порядке, указанном на


странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
1. Основная: [3], [7], [10], [11], [12], [13];
2. Дополнительная: [1], [6].

Лабораторная работа № 1
16
Приложение 1.1

ТЕОРИЯ ВОПРОСА "Работа в интерактивном режиме в


среде MATLAB"

1.ЗАПУСК MATLAB
После нажатия ярлыка MATLAB появляется окно
системы MATLAB. Система сразу же готова к проведению
вычислений в командном режиме.
В начале запуска автоматически выполняется
команда matlabrc, которая исполняет загрузочный файл
matlabrc.m и файл startup.m. Эти файлы выполняют
начальную настройку терминала системы и задают ряд ее
параметров.
Сеанс работы с MATLAB принято именовать
сессией. Сессия является текущим документом,
отражающим работу пользователя с системой MATLAB.
Входящие в сессию определения переменных и
функций, расположенные в рабочей области памяти (но не
саму сессию) можно записать на диск (формат .mat),
используя команду save.
Команда load позволяет считать с диска данные
рабочей области. Фрагменты сессии можно оформить в
виде дневника с помощью команды diary.

Лабораторная работа № 1 17
При работе с MATLAB действует простейший
строчный редактор.

2. КОМАНДЫ СТРОЧНОГО РЕДАКТОРА:

 или Ctrl-b – перемещение курсора вправо на


один символ
 или Ctrl-f - перемещение курсора влево на один
символ
Ctrl  или Ctrl-r - перемещение курсора вправо на
одно слово
Ctrl  или Ctrl-l - перемещение курсора влево на
одно слово
Home или Ctrl-a - перемещение курсора в начало
строки
End или Ctrl-e - перемещение курсора в конец
строки
 и  или Ctrl-p,n – перелистывание строк вверх
или вниз для подстановки в строку ввода
Del или Ctrl-d – стирание символа на котором
установлен курсор
 или Ctrl-h – стирание символа слева от
курсора
Ctrl-k – стирание до конца строки
Ins – включение/выключение режима вставки
PgUp – перелистывание страниц сессии вверх

Лабораторная работа № 1
18
PgDn - перелистывание страниц сессии вниз

3. КОМАНДЫ УПРАВЛЕНИЯ ОКНОМ:

clc – очищает экран и размещает курсор в левом


верхнем углу пустого экрана

home – возвращает курсор в левый верхний угол


окна

echo<name_file> on – включает режим вывода на


экран текста Script-файла (файла-сценария)

echo<name_file> off выключает режим вывода на


экран текста Script-файла (файла-сценария)

echo<name_file> меняет режим вывода на


противоположный

echo off all включает режим вывода на экран текста


м-файлов

Лабораторная работа № 1 19
echo on all отключает режим вывода на экран
текста м-файлов

more on - включает режим постраничного вывода


(полезен при просмотре больших М-файлов)

more off - отключает режим постраничного вывода (


для просмотра файлов надо пользоваться линейкой
прокрутки)

4. MATLAB В РОЛИ КАЛЬКУЛЯТОРА.


Система MATLAB создана таким образом, что
любые вычисления можно выполнять в режиме прямых
вычислений.
Работа с системой в режиме прямых вычислений
носит диалоговый характер. Пользователь набирает на
клавиатуре вычисляемое выражение, редактирует его в
командной строке и завершает ввод нажатием ENTER.
 Для указания ввода система использует символ
»;
 Для блокировки вывода результата вычислений
некоторого выражения после него надо установить знак ; ;
 Если не указана переменная со значением
результата вычислений, то MATLAB назначает такую
переменную с именем ans ;
 Встроенные функции записываются строчными
буквами и их аргументы указываются в круглых скобках
Лабораторная работа № 1
20
 Результат вычисления выводится в строках
вывода;
 Если вводимое математическое выражение
длинное, то его можно перенести с помощью знака ... ;
Пример:
» a=2
a=
2
» c=a+4-7+67+a*4
c=
74
» c-a
ans =
72

5. СПРАВОЧНАЯ СИСТЕМА MATLAB


Система помощи реализована в стандартном
варианте – в интерактивном командном режиме. Что бы
воспользоваться помощью нужно нажать мышкой на ?.
Документацию на систему MATLAB можно рассматривать
как справочник по современным численным методам и
средствам их реализации на ЭВМ. К сожалению, пока эта
документация только на английском языке.

Лабораторная работа № 1 21
6.ПОНЯТИЕ О МАТЕМАТИЧЕСКОМ ВЫРАЖЕНИИ
ЧИСЛА, КОНСТАНТЫ, ПЕРЕМЕННЫЕ
Центральным понятием всех математических
систем является математическое выражение. Оно
задает то, что должно быть вычислено в численном, реже
символьном виде.
Пример:
33-2 6*7/25 sin(pi/2)

Числа – простейший объект языка MATLAB,


представляющий количественные данные. Числа могут
быть целыми, дробными, с фиксированной точкой, с
плавающей точкой. Возможно представление чисел с
указанием мантиссы и порядка числа.
Пример:
0 3.8 -7.98 0.00001 123.456e-24 -
319.657e10
Целая часть числа от дробной отделяется точкой.
Знак плюс у числа не ставится, а знак минус называется
унарным минусом. Пробелы между символами в числах
не допускаются.
Числа могут быть комплексными. Такие числа
содержат действительную и мнимую части. Мнимая часть
имеет множитель i или j, означающий корень квадратный
из –1.

Лабораторная работа № 1
22
Пример:
3i 6+5i -8+i
Константа – это предварительно определенное
число или символьное значение, представленное
уникальным именем. Числа являются безымянными
числовыми константами. Другие виды констант в
MATLAB принято называть системными переменными
поскольку, с одной стороны они задаются системой при ее
загрузке, а с другой - могут переопределяться. Основные
системные переменные это:

I или j – мнимая единица (  1 )


pi – число "пи"; pi=3.1415926...
eps – погрешность для операций с числами с
плавающей точкой (2-52)
realmin – наименьшее число с плавающей точкой
(2-1022)
realmax – наибольшее число с плавающей точкой
(21023)
inf – значение машинной бесконечности
ans – переменная, хранящая результат
последней операции
NaN – указание на нечисловой характер данных
(Not-a-Number).
Символьные константы – это цепочка символов,
заключенных в апострофы (' '). Если в апострофы
Лабораторная работа № 1 23
помещено математическое выражение, то оно не
вычисляется и рассматривается просто как символы.
Однако с помощью специальных функций преобразования
символьные выражения могут быть преобразованы в
вычисляемые. Соответствующие функции рассмотрим
далее.

7. ТЕКСТОВЫЕ КОММЕНТАРИИ.
Текстовые комментарии вводятся с помощью
оператора – символа %.
Без комментариев быстро забывается смысл
написанной программы.

8. ПРИСВАИВАНИЕ ЗНАЧЕНИЙ ПЕРЕМЕННОЙ.

Переменные – это имеющие имена объекты,


способные хранить некоторые, обычно разные по
значению данные. В зависимости от этих данных
переменные могут быть числовыми или символьными,
векторными или матричными. Функция присваивания
вводится знаком равенства =.
Имя_переменной=Выражение

Имя переменной (ее идентификатор) может


содержать сколько угодно символов, но запоминаются и
идентифицируются только 31 первых символа. Имя любой
переменной не должно совпадать с именами других
Лабораторная работа № 1
24
переменных, функций и процедур системы. Оно должно
быть уникальным.
Имя должно начинаться с буквы и может
содержать цифры и символ подчеркивания-объединения
_. Недопустимо включать в имена переменных пробел и
специальные знаки, например: +, –, *, / и т.д. Желательно
давать содержательные имена для обозначения
переменных.
В памяти переменные занимают определенное
место, называемое рабочим пространством workspace.
Для очистки рабочего пространства используется функция
clear. Она используется в разных формах:
clear –уничтожение всех переменных;
clear x - уничтожение определения переменной x;
clear a,b,c – уничтожение определений
переменных списка.
Уничтоженная переменная становится
неопределенной. Использовать такие переменные нельзя.
Пример:
» x=2*8
x=
16
» d=x*5
d=
80

Лабораторная работа № 1 25
» c=d+x;
»c
c=
96
» clear
»c
??? Undefined function or variable 'c'.
»
По мере задания одних переменных и стирания
других рабочая область перестает быть непрерывной. Это
может привести к ухудшению работы системы и даже к
нехватке оперативной памяти. Во избежание подобных
проблем можно использовать команду pack. Эта команда
осуществляет дефрагментацию рабочей области, т.е.
переписывает все определения на жесткий диск, очищает
рабочую область, а затем переписывает все определения
в рабочую память.

9. ОПЕРАТОРЫ И ФУНКЦИИ
Оператор это специальное обозначение для
определенной операции над данными – операндами.
Операторы используются совместно с операндами,
например, в выражении 2+5 знак + является оператором, а
2 и 5 – операндами.

Лабораторная работа № 1
26
В MATLAB, большинство операторов относиться к
матричным операторам. Полный список операторов можно
получить, выполнив команду:
» help ops
Функции – это имеющие уникальные имена
объекты, выполняющие определенные преобразования
над своими аргументами и при этом возвращающие
результат этих преобразований. При этом результат
вычисления функции с одним выходным параметром
подставляется на место ее вызова, что позволяет
использовать функции в математических выражениях.
Пример:
2*sin(pi/2)
Функции в общем случае имеют список
аргументов, заключенный в круглые скобки. Если функция
возвращает несколько значений, то она записывается в
виде:
[Y1, Y2,…]=func(x1, x2,…)
где Y1, Y2- список выходных аргументов и x1, x2 –
список входных аргументов.
Со списком элементарных функций можно
ознакомится, выполнив команду:
» help elfun ,
а со списком специальных функций можно
ознакомиться, выполнив команду:

Лабораторная работа № 1 27
» help specfun
Функции могут быть встроенными и внешними, или
М-функциями. Так, встроенными являются наиболее
распространенные элементарные функции, такие как
sin(x). Внешние функции содержат свои определения в М-
файлах. Встроенные функции хранятся в
откомпилированном виде в ядре системы MATLAB, в силу
чего они выполняются предельно быстро.

10. ФОРМАТ ЧИСЕЛ.

По умолчанию MATLAB выдает числовые


результаты в нормализованной форме с четырьмя
числами после десятичной точки и одним до нее. Но при
работе с числовыми данными можно задавать различные
форматы представления чисел. Однако вычисления все
равно производятся с предельной двойной точностью.
Для установки формата используется команда:
» format name
где name – имя формата. Для числовых данных
name может быть следующим сообщением:
short – короткое представление в фиксированном
формате (5 знаков)
short e – короткое представление в
экспоненциальном формате (5 знаков мантиссы и 3 знака
порядка)

Лабораторная работа № 1
28
long – длинное представление в фиксированном
формате (15 знаков)
long e – длинное представление в
экспоненциальном формате (15 знаков мантиссы и 3 знака
порядка)
hex – представление чисел в
шестнадцатеричной форме
bank – представление для денежных единиц

Пример:
Рассмотрим вектор из 2 –х элементов x=[4/3
1.2345e-6]
format short 1.3333 0.0000
format short e 1.3333Е+000 1.2345Е-006
format long 1.333333333333338
0.000001234500000
format long e 1.333333333333338 1.234500000000000Е-
006
format bank 1.33 0.00

11. СООБЩЕНИЯ ОБ ОШИБКАХ.


Большое значение при диалоге с системой
MATLAB имеет диагностика ошибок. MATLAB
диагностирует вводимые команды и выражения и выдает
соответствующее сообщение об ошибках.

Лабораторная работа № 1 29
Необходимо отличать предупреждение об ошибке
(обычно после слова Warning), которое не останавливает
вычислений и лишь предупреждает пользователя о том,
что диагностируемая ошибка способна повлиять на ход
вычислений. Сообщение об ошибке (после знаков ???)
останавливает вычисления.

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


1. Что такое MATLAB?
2. Что такое сессия MATLAB?
3. Для чего нужна командная строка?
4. Как вызвать справку в среде MATLAB?
5. Какие вы знаете формы представления чисел и их
форматы в MATLAB?
6. Что такое переменные и константы?
7. Какие системные переменные MATLAB вы знаете?
8. Комментарии и их ввод.
9. Что такое оператор и операнд?
10. Что такое сообщения об ошибках и
предупреждениях?
11. Что такое унарный минус?

Приложение 1.2

Лабораторная работа № 1
30
КОНТРОЛЬНЫЙ ПРИМЕР
1. Вы работаете в операционной системе Windows'98.

В нижнем углу экрана есть кнопка .


2. Щелкните по ней указателем мышки и вызовите
Главное меню Панели задач.
3. Указателем мышки в Главном меню выберите пункт

и перейдите в подменю.

4. В подменю выберите пункт , а затем

.
Загрузится Окно управления MATLAB.

Основным средством управления в


Окне управления MATLAB является
командная строка.
Символ >> является приглашением
к работе в командной строке.

5. Как вы уже знаете, MATLAB может работать в


режиме непосредственных вычислений.
Введите с клавиатуры:

и нажмите клавишу Enter. Вы должны получить:

Лабораторная работа № 1 31
ans – это зарезервированное имя
переменной для результата (ответа). Это
имя используется, если пользователь сам
не определит имя переменной для
результата.

6. Выполните самостоятельно:
5*8, 40/8, 8-5.
Вы должны получить:
ans=
40
ans=
5
ans=
3

Арифметические операторы:
+ Сложение
- Вычитане
.* Поэлементное умножение
./ Поэлементное деление
.^ Поэлементное возведение в
степень
Лабораторная работа № 1
32
7. Кроме переменной ans пользователь может
использовать собственные переменные.
Введите в командную строку следующее:
y=5+8
После нажатия на клавишу Enter у вас должно
получиться:
y=
13
8. Выполните самостоятельно:
x=5.*8, z=40./8, s=8-5.
Вы должны получить:
x=
40
z=
5
s=
3
9. Используя собственные имена переменных, мы
можем их в любой момент вызвать и просмотреть.
Введите:
y
и нажмите Enter. У вас должно получиться:
y=
13

Лабораторная работа № 1 33
10. Самостоятельно вызовите значения следующих
переменных:
x, z, s
Вы должны получить:
x=
40
z=
5
s=
3
11. Точно также можно вызвать и переменную ans.
Введите:
ans
и нажмите Enter. У вас должно получиться:
ans =
3
Как видно переменная ans хранит последний
результат вычислений.
12. Как видно любой оператор выполняется сразу же
после нажатия клавиши Enter, чтобы этого не
происходило после записи выражения следует
ставить символ ; (точка с запятой).
Введите:
R=3;
L=2.*pi.*R;

Лабораторная работа № 1
34
S=pi.*R.^2;
и нажмите Enter. У вас должно получиться:
>>
Мы вычислили длину и площадь окружности. Чтобы
увидеть результаты расчета вызовем переменные
L, S, R и pi (см. п.9 и 10). У вас должно получиться:
L=
18.8496
S=
28.2743
R=
3
ans =
3.1416

Специальные переменные:
ans - Последний результат, если выходная
переменная не указана, то MATLAB
использует переменную ans
eps – Точность вычислений с плавающей
точкой;
eps=2.220446049250313e-016
realmax – Максимальное число с
плавающей точкой, представимое в
компьютере;

Лабораторная работа № 1 35
realmax=1.797693134862316e+308
realmin – Минимальное число с
плавающей точкой, представимое в
компьютере;
realmin=2.225073858507202e-308
pi – Число ; pi=3.141592653589793e+000

i, j – Мнимая единица; i=j=  1


inf – Специальная переменная для
обозначения бесконечности; inf=
NaN – Специальная переменная для
обозначения неопределенного значения –
результата операций типа: 0/0, inf/inf

Использование переменных:
- переменные не требуют объявления;
- любая операция присваивания создает
переменную или изменяет значение
существующей переменной;
- имена переменных начинаются с буквы,
за которой следует любое количество
цифр, букв и подчеркиваний;

- система MATLAB различает символы


верхнего и нижнего регистра;
- имя переменной не должно превышать
31 символа.
Лабораторная работа № 1
36
13. Если у вас получается слишком большое
выражение в командной строке, то можно
использовать … (троеточие), чтобы расположить
его на двух и более строчках.
Введите:
a=1+1./2.^2+1./3.^3+1./4.^4+...
нажмите Enter и введите
1./5.^5+1./6.^6+1./7.^7
Снова нажмите Enter. Должен получиться
результат:
a=
1.2913
14. Как вы уже знаете, работа в Окне управления
MATLAB называется сессией. Все введенные
команды в течении одной сессии запоминаются. Их
можно вызвать, используя клавиши ,  на
клавиатуре. Вызванные команды можно
отредактировать и запустить на исполнение в
новом варианте.
Используя клавишу  вызовите команду
R=3;
замените 3 на 5 и нажмите Enter, затем, используя
клавишу, вызовите команды, удалите символы ; и
нажмите после каждой Enter. У вас должно
получиться:
Лабораторная работа № 1 37
L=2.*pi.*R
L=
31.4159
S=pi.*R.^2
S=
78.5398
15. Завершите работу в MATLAB. Для этого в меню
Файл выполните команду Выход из MATLAB.

Некоторые элементарные
математические функции.
Тригонометрические
sin - синус.
asin - арксинус.
cos - косинус.
acos - арккосинус.
tan - тангенс.
atan - арктангенс.
cot - котангенс.
acot- арккотангенс.

Экспоненциальные
exp - экспоненциальная функция
log - функция натурального логарифма
log10 - Логарифм по основанию 10

Лабораторная работа № 1
38
log2 - логарифм по основанию 2
sqrt - квадратный корень

Комплексные
abs - абсолютное значение комплексного
числа
angle - аргумент комплексного числа
(фаза)
imag - мнимая часть комплексного числа
real - действительная часть
комплексного числа

Приложение 1.3

Индивидуальные задания

№ Вычислить № Вычислить
tg 6
1. ln 729 16. e
2. lg 55  log 2
5
11
17. 3 1 3
1 3

9
3. e lg 729 18. log2  lg 20
3
4. log2 lg 50 19. 52ln 2
8
5. ln 20. 16 0.5 lg 201
125
  
 sin 
2 20 lg  3
6. 8 arccos  6arctg 3 21.  cos 0 
 
2 e  

Лабораторная работа № 1 39
 
7. log 2 sin  lg tg 22. log 2 16 2
2 4

8. log2 cos 23. arccos(1)  arctg 3
3
1 1
9. ctg (arctg 3 ) 24. arccos  arcsin
2 2

10. sin(arctg 3 ) 25. arctg 1  cos
2
 3
11. ln 5  lg tg  log2 cos 0 26. arccos 0  arctg
4 3
5.48  8.02 3 3
12. 27. cos2  sin 2
(7.97  8.77)  3.72 2 2
 17.2  0.125  0.005  7 5
13. 6  28. sin  cos
 0.1  8 8
1  
14. 
29. 2 sin  3    2
625 4
 750.5  8.7 0  4
1
15. tg  4   30. cos 2  
3
3 2

ЛАБОРАТОРНАЯ РАБОТА № 2
ОПЕРАТОРЫ И ФУНКЦИИ В СРЕДЕ MATLAB
1. ЦЕЛЬ РАБОТЫ
Освоение основных операторов и функций среды
MATLAB.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Найти значения функции, заданной в приложении
№ 2.3 и построить график. Использовать функцию
calendar. Выполнить в соответствии с вариантом
заданным преподавателем.

Лабораторная работа № 1
40
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.
Работа выполняется в порядке, указанном на
странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
3. Основная: [3], [7], [10], [11], [12], [13];
4. Дополнительная: [6].

Приложение 2.1
ТЕОРИЯ ВОПРОСА: "Операторы и функции среды
MATLAB"

1. АРИФМЕТИЧЕСКИЕ ОПЕРАТОРЫ И ФУНКЦИИ.


Практически все операторы являются матричными.
Каждый оператор имеет тождественную по назначению
функцию.

Лабораторная работа № 1 41
Функция Название Оператор Пример
Plus плюс + M1+M2
унарный
uplus + +M
плюс
minus минус - M1-M2
унарный
uminus - -M
минус
матричное
mtimes * M1*M2
умножение
по членное
times умножение .* M1.*M2
массивов
возведение
mpower в степень ^ M1^X
матрицы
возведение
в степень
power .^ M1.^X
массива по
членное
деле
ние матриц

mldivide обратное \ M1\M2


(справа -
налево)

Лабораторная работа № 1
42
деление
матриц
mrdivide / M1/M2
(слева -
направо)
По членное
деление
ldivide массивов .\ M1.\M2
справа -
налево
По членное
деление
rdivide массивов ./ M1./M2
слева -
направо
Тензорное
kron умножение kron KRON(X,Y)
Кронекера

Соответствие функций операторам и командам


является в MATLAB одним из основных положений
программирования. В математических выражениях
операторы имеют общепринятый приоритет. Приоритет
логических операций выше, чем арифметических. Для
изменения приоритета операций используют круглые
скобки. Степень вложения скобок не ограничивается.

Пример:
» a=3;
Лабораторная работа № 1 43
» d=1;
» a-d
ans =
2
» minus(a,d)
ans =
2
2. ОПЕРАТОРЫ ОТНОШЕНИЯ И ИХ ФУНКЦИИ.
Операторы отношения служат для сравнения двух
величин, векторов, матриц. Все операторы отношений
имеют 2 операнда и записываются в виде:
Функци Операто
Название Пример
я р

eq равно == x==y

ne не равно ~= x~=y
lt менее чем < x<y
gt более чем > x>y
менее чем или
le <= x<=y
равно
более чем или
ge >= x>=y
равно

Данные операторы сравнивают поэлементно


векторы или матрицы одинакового размера и возвращают
значение логической единицы 1 (true), если элементы
идентичны или логического нуля 0 (false) в противном
случае. Если операнды – действительные числа, то
применение операторов как обычно.
Пример:
» eq(2,2)
ans =
1
Лабораторная работа № 1
44
» 2==2
ans =
1
При комплексных операндах операторы <, >, <=,
>= используют для сравнения только действительные
части операндов, а мнимые отбрасываются. В то же время
операторы ==, ~= ведут сравнение с учетом мнимой части.
Пример:
» (2+3i)>=(2+i)
ans =
1
» (2+3i)>(2+i)
ans =
0
Если один из операндов – скаляр, то происходит
сравнение всех элементов массива со значением
полученного из скаляра массива. В общем случае
операторы отношения сравнивают два массива одного
размера и выдают результат в виде массива того же
размера.
Пример:
» M=[-1 0;1 2]
M=
-1 0
1 2
» M>=0
ans =
0 1
1 1
» M>[0 1;1 0]
ans =
0 0
0 1
Возможно применение этих операторов и к
символьным выражениям. В этом случае символы,
входящие в выражения, представляются своими ASCII-
кодами. Строки воспринимаются как векторы с кодами.
Пример:
Лабораторная работа № 1 45
» 'b'>'a'
ans =
1
» 'abc'=='abc'
ans =
1 1 1
» 'cba'=='abc'
ans =
0 1 0
3. ЛОГИЧЕСКИЕ ОПЕРАТОРЫ.
Логические операторы и соответствующие им
функции служат для реализации поэлементных логических
операций над элементами одинаковых по размеру
массивов.
Функци Обозначен
Название
я ие
and Логическое И (AND) &
or Логическое ИЛИ (OR) 
not Логическое НЕТ (NOT) ~
xor Исключающее ИЛИ (EXCLUSIVE)
Верно, если все элементы вектора
any
равны 0
Верно, если все элементы вектора не
all
равны 0

Аргументами логических операторов могут быть


числа и строки. При аргументах – числах логический 0
соответствует 0, а любое отличное от нуля число
воспринимается как логическая единица. Для строк
действует правило: каждый символ представляется в
кодах ASCII.
Пример:

» A=[1 2 3];
» B=[1 0 0];
» and(A,B)

Лабораторная работа № 1
46
ans =
1 0 0
4. СПЕЦИАЛЬНЫЕ СИМВОЛЫ.
К классу операторов в системе MATLAB относятся
специальные символы. Они предназначены для
создания самых различных объектов входного языка и
языка программирования системы и придания им
различных форм.
Некоторые из этих символов:
:(двоеточие) – порождает последовательность
чисел, которая начинается с начального значения, идет с
заданным шагом и завершается конечным значением.
Если шаг не задан, то он принимает значение 1 или –1.
Начальное_значение:шаг:конечное_значение

Пример:

» 1:5
ans =
1 2 3 4 5
» i=0:2:10
i=
0 2 4 6 8 10
» 5:1
ans =
5 4 3 2 1

... (продолжение) – три или более точек в конце


строки указывают на продолжение строки.
, (запятая) – используется для разделения
аргументов функций, индексов матрицы, для отделения
операторов языка MATLAB. При отделении операторов в
строке запятая меняется на точку с запятой с целью
запрета вывода на экран результата вычисления.
; (точка с запятой) – используется внутри круглых
скобок для разделения строк матриц, а так же для запрета
вывода на экран результата вычислений.
Лабораторная работа № 1 47
% (знак процента) – используется для указания
логического конца строки. Текст после этого знака
игнорируется.
Остальные специальные знаки будут рассмотрены
по мере надобности.
5. ФУНКЦИИ ВРЕМЕНИ И ДАТЫ.
Ряд функций служит для возврата текущего
времени и даты.

calendar – возвращает матрицу размером 6х7,


содержащую календарь на текущий месяц. Календарь
начинается с воскресенья (первый столбец) и завершается
субботой.
calendar(d) – возвращает календарь на месяц, в
который попадает день, заданный аргументом d от начала
летоисчисления.
calendar(y,m) – возвращает календарь на месяц,
заданный аргументом m, и год, заданный аргументом y.
calendar(…) – выдает календарь на экран.

Примеры:

» calendar
Jul 2000
S M Tu W Th F S
0 0 0 0 0 0 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 0 0 0 0 0

» calendar(700477)

Nov 1917
S M Tu W Th F S
0 0 0 0 1 2 3
Лабораторная работа № 1
48
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 0
0 0 0 0 0 0 0
clock – возвращает вектор из 6 элементов,
содержащий текущие время и дату в десятичной форме
[год, месяц, день, часы, минуты, секунды]. Первые пять
элементов этого вектора – целые числа. Шестой элемент
имеет несколько десятичных знаков после запятой.
Функция fix(clock) округляет число секунд до целого
значения.

Пример:

» c=clock
c=
1.0e+003 *
2.0000 0.0070 0.0160 0.0180 0.0130 0.0451

» fix(clock)
ans =
2000 7 16 18 14 8

str=date - возвращает строку, содержащую дату в


форме дд-ммм-гггг (день-месяц-год).

Пример:

» d=date
d=
16-Jul-2000

tic – запускает таймер, toc – выводит время,


прошедшее с момента запуска таймера.
t = toc – возвращает прошедшее время в t.

Пример:
Лабораторная работа № 1 49
» tic,surf(peaks(50));toc
elapsed_time =
0.9900
Эта программа работает следующим образом: запускается
таймер (tic); строится поверхность (surf); таймер
останавливается (toc); указывается время работы
функции surf в переменной elapsed_time.
ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ:
1. Что такое функция в среде MATLAB?
2. Какие знаете функции?
3. Что такое оператор в среде MATLAB?
4. Какие бывают операторы?
5. Перечислите арифметические операторы и их
эквивалентные функции.
6. Перечислите операторы отношения и их
эквивалентные функции.
7. Перечислите логические операторы и их
эквивалентные функции.
8. Специальные символы и их назначение.
5

НЕКОТОРЫЕ ЭЛЕМЕНТАРНЫЕ МАТЕМАТИЧЕСКИЕ


ФУНКЦИИ.
Приложение 2.2
КОНТРОЛЬНЫЙ ПРИМЕР
16. Кроме обычных операторов в выражениях можно
использовать функции.
Введите:
e=exp(1)
и нажмите Enter. У вас должно получиться:
e=
Лабораторная работа № 1
50
2.7183
Все функции имею входной аргумент, который
записывается в скобках после имени самой
функции. Поэтому записи e = exp или y = sin и т.п.
бессмысленны.
Это можно проверить. Введите:
y = sin
получите сообщение об ошибке:
??? Error using ==> sin
Incorrect number of inputs.
Самостоятельно вычислите следующие функции:
y1 = sin(pi./4), y2 = cos(pi), y3 = log10(1000), y4 =
sqrt(25).
У вас должно получиться:
y1 =
0.7071
y2 =
-1
y3=
3.0000
y4=

Тригонометрические
sin - синус.
asin - арксинус.
cos - косинус.
acos - арккосинус.
Лабораторная работа № 1 51
tan - тангенс.
atan - арктангенс.
cot - котангенс.
acot- арккотангенс.

Экспоненциальные
exp - экспоненциальная функция
log - функция натурального логарифма
log10 - Логарифм по основанию 10
log2 - логарифм по основанию 2
sqrt - квадратный корень

Комплексные
abs - абсолютное значение комплексного
числа
angle - аргумент комплексного числа
(фаза)
imag - мнимая часть комплексного числа
real - действительная часть
комплексного числа

17. Часто нас могут интересовать значения функции на


определенном интервале изменения входного
аргумента. Чтобы задавать изменения входного
аргумента используют следующую конструкцию:
имя_переменной=<начальное_значение>:<шаг>:
<конечное_значение>
Если шаг равен единице, то
имя_переменной=<начальное_значение>:<конечно
е_значение>
Введите:
x=
Лабораторная работа № 1
52
1:2:11
и нажмите Enter. Должно получиться:
x=
1 3 5 7 9 11
Как видно, мы получили числовую
последовательность от 1 до 11 с шагом 2.

Самостоятельно выполните:
x = 1:10
Должно получиться:
X=
1 2 3 4 5 6 7
8 9 10
18. Введите следующее:
x = -pi:0.5:pi;
y = sin(x)
Должно получиться:
y=
Columns 1 through 7
-0.0000 -0.4794 -0.8415 -0.9975 -0.9093 -0.5985 -
0.1411
Columns 8 through 13
0.3508 0.7568 0.9775 0.9589 0.7055 0.2794

Как видно, мы получили значения синуса для


угла изменяющегося от - до  с шагом 0,5
Лабораторная работа № 1 53
4. Самостоятельно рассчитайте:
x1 = -pi:0.5:pi y1 = 2.*sin(x1./2)
x2 = -pi:0.1:pi y2 = cos(2.*x2+30)
x3 = -10:2:10 y3 = 2.*x3.^3+5
x4 = 0:10 y4 = sqrt(x4)
Должно получиться:
в первом случае
y1 =
Columns 1 through 7
-2.0000 -1.9378 -1.7552 -1.4634 -1.0806 -0.6306 -
0.1415
Columns 8 through 13
0.3565 0.8323 1.2563 1.6023 1.8486 1.9800

во втором случае
y2 =
Columns 1 through 7
0.1543 0.9147 0.8342 -0.0133 -0.8486 -0.9037 -
0.1280
Columns 8 through 13
0.7654 0.9551 0.2666 -0.6669 -0.9873 -0.4000
в третьем случае
y3 =
Columns 1 through 6
-1995 -1019 -427 -123 -11 5
Columns 7 through 11
Лабораторная работа № 1
54
21 133 437 1029 2005
и в четвертом
y4 =
Columns 1 through 7
0 1.0000 1.4142 1.7321 2.0000 2.2361
2.4495
Columns 8 through 11
2.6458 2.8284 3.0000 3.1623
5. То, что мы получили в виде таблицы (см. п.3), легко
можно представить в виде графика. Для этого
воспользуемся командой plot.
Введите:
x = -pi:0.5:pi;
y = sin(x);
plot (x,y)
и нажмите Enter. Получим график функции sin(x).

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3

Чтобы сохранить предыдущий график, открываем


новое графическое окно командой figure.
6. Самостоятельно постройте графики функций
Лабораторная работа № 1 55
y1 = 2.*sin(x1./2) x1 = -pi:0.5:pi
y2 = cos(2.*x2+30) x2 = -pi:0.1:pi
y3 = 2.*x3.^3+5 x3 = -10:2:10
y4 = sqrt(x4) x4 = 0:10
Должно получиться:
2 1

0.8
1.5

0.6

1
0.4

0.5
0.2

0 0

-0.2
-0.5

-0.4

-1
-0.6

-1.5
-0.8

-2 -1
-4 -3 -2 -1 0 1 2 3 -4 -3 -2 -1 0 1 2 3 4

y1 = 2.*sin(x1./2) y2 = cos(2.*x2+30)
2500 3.5

2000
3

1500

2.5
1000

2
500

0
1.5

-500
1

-1000

0.5
-1500

-2000 0
-10 -8 -6 -4 -2 0 2 4 6 8 10 0 1 2 3 4 5 6 7 8 9 10

y3 = 2.*x3.^3+5 y4 = sqrt(x4)

7. Завершите работу в MATLAB для этого в меню


Файл выполните команду Выход из MATLAB
Приложение 2.3
ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ
Найти значения функции при изменении  от  min до

Лабораторная работа № 1
56
 max c шагом  . Построить график функции с
помощью команды plot
№ Функция  min max

1 y  0.4 x -5 4 0,5

2 y  2 x -8 5 0,3
x
 1 
3 y    -4 5 0,6
 2

4 y  3 x -2 5 0,7

5 y  0.3 x -3 4 0,6

x
6 1 -3 5 0,5
y 
7

7 y  1.32 x -1 6 0,7

8 y  0.7 3x -4 4 0,8

9 y  3x  2 -6 3 0,8

x
1
10 y    3 -8 8 1
2

11 y  2x 1 -7 5 1

12 y  3x  2 5 7 0,2

13 y  22  x  3 -10 10 2

Лабораторная работа № 1 57
x2
14 1 -5 8 1,5
y  2
 3

15 y  log x 1 10 1
2

16 y  log
2
x  1 2 15 2

17 y  lgx  1  1 0.01 20 2
18 y  ln x  1  1 0.01 25 2
1
19 y 0.01 30 3
log 2 x

1
20 y 0.01 20 2
ln x

y  cos x 
21 2 2
5


22 y  1  cos x  3
5

 
23 y  cos 2 x  3
2 5


24 y  sin x 0 2
5


25 y  sin 3 x  2
5

1 3 
26 y  sin 2 x   
2 2 5

y  tgx  
27 0
2 8

Лабораторная работа № 1
58
y  tg 2 x   
28 
4 3 5

    
29 y  tg  x   
 4 4 3 6

  
30 y  2 sin  3 x    2
 4 6

Задание 2
Используя функцию calendar, в зависимости от
варианта, получить значения.

№ Что получить
1 Календарь на текущий месяц.
2 Календарь на месяц вашего рождения.
Календарь на 7310 день от начала
3
летоисчисления.
Календарь на 7400 день от начала
4
летоисчисления.
5 Календарь на месяц вашего рождения.
6 Календарь на текущий месяц.
Календарь на 7528 день от начала
7
летоисчисления.
Календарь на 7622 день от начала
8
летоисчисления.
9 Календарь на 7138 день от начала

Лабораторная работа № 1 59
летоисчисления.
10 Календарь на текущий месяц.
11 Календарь на месяц вашего рождения.
Календарь на 7341 день от начала
12
летоисчисления.
Календарь на 7758 день от начала
13
летоисчисления.
14 Календарь на текущий месяц.
15 Календарь на месяц вашего рождения.
Календарь на 7630 день от начала
16
летоисчисления.
17 Календарь на текущий месяц.
Календарь на 7351 день от начала
18
летоисчисления.
19 Календарь на месяц вашего рождения.
Календарь на 7468 день от начала
20
летоисчисления.
Календарь на 7178 день от начала
21
летоисчисления.
22 Календарь на месяц вашего рождения.
23 Календарь на текущий месяц.
Календарь на 7820 день от начала
24
летоисчисления.
25 Календарь на месяц вашего рождения.

Лабораторная работа № 1
60
Календарь на 7935 день от начала
26
летоисчисления.
Календарь на 7179 день от начала
27
летоисчисления.
28 Календарь на месяц вашего рождения.
Календарь на 7848 день от начала
29
летоисчисления.
30 Календарь на текущий месяц.

ЛАБОРАТОРНАЯ РАБОТА № 3
ВЕКТОРЫ, МАТРИЦЫ И МАССИВЫ В СРЕДЕ MATLAB
1. ЦЕЛЬ РАБОТЫ
Научиться создавать векторы, матрицы и массивы и
производить с ними элементарные преобразования.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Создать вектор. Создать двумерный массив.
Создать трехмерный массив. Заменить элемент массива с
указанным адресом. Выполнить в соответствии с
вариантом заданным преподавателем из приложения
№ 3.3.

2. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.


Работа выполняется в порядке, указанном на
странице 7.

Лабораторная работа № 1 61
4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
5. Основная: [3], [7], [10], [11], [12], [13];
6. Дополнительная: [5].

Лабораторная работа № 1
62
Приложение 3.1
ТЕОРИЯ ВОПРОСА "Векторы, матрицы и массивы в среде
MATLAB"
1. ПОНЯТИЕ МАССИВА.
Матрицы представляют собой самый
распространенный объект системы MATLAB. Одномерная
матрица называется вектором.

Пример:

1 3 5 6 8

Это вектор размера 5

1 2 3 5 7

6 3 8 9 0

5 0 6 4 3

Это матрица размера (3, 5)

И матрица, и вектор называются массивами.


Вектор – это одномерный массив, матрица – это
двумерный массив.

В MATLAB по умолчанию предполагается, что


каждая заданная переменная – это матрица или вектор.
Например, если задано Y=5, то это значит, что Y есть
вектор с единственным элементом, имеющим значение 5.
Если надо задать вектор, то его значения перечисляются в
квадратных скобках, разделенные пробелами.
Лабораторная работа № 1 63
Пример:

» Y=[4 7 1]

Y=

4 7 1

Задание матрицы требует указания различных


строк. Для различения строк используется знак ; (точка с
запятой)

Пример:

» M=[1 2 3;4 5 6;7 6 5]

M=

1 2 3

4 5 6

7 6 5

Возможен ввод элементов матриц и векторов в


виде любых арифметических выражений.

Пример:

» V=[2 6*7 sin(4)]

V=

2.0000 42.0000 -0.7568

Лабораторная работа № 1
64
Для указания отдельного элемента вектора или
матрицы используются выражения вида V(i) или M(i;j) где i
и j номера элементов.

Выражение M(i) с одним индексом дает доступ к


элементам матрицы, развернутым в один столбец.

Такая матрица получается из исходной, если


подряд выписать ее столбцы.

Пример:

» M=[1 2 3;4 5 6;7 6 5]

M=

1 2 3

4 5 6

7 6 5

» M(2)

ans =

» M(8)

ans =

» M(9)=100;

Лабораторная работа № 1 65
»M

M=

1 2 3

4 5 6

7 6 100

2. ФУНКЦИИ СОЗДАНИЯ МАТРИЦ И ВЕКТОРОВ


Для создания единичной матрицы используется
функция eye

eye(n)возвращает единичную матрицу размера


nxn

eye(m,n) или eye([m n]) возвращают матрицу


размера mxn с единицами по диагонали и нулями в
остальных ячейках.

eye(size(A)) возвращает единичную матрицу того


же размера, что и матрица А

» eye(5)

ans =
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Лабораторная работа № 1
66
Для создания матриц, все элементы которых –
единицы, используется функция ones.

ones(n)- возвращает матрицу размера nxn,


состоящую из единиц.

ones(n,m) или ones([m n]) возвращает матрицу


размера mxn, состоящую из единиц.

ones(size(A)) возвращает массив единиц той же


размерности, что и у А.

Пример:

» ones(4)

ans =

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

Функция zeros действует так же, как и


предыдущая, но создает матрицу, все элементы которой
нули.

Пример:

» s=zeros(3,2)

s=
Лабораторная работа № 1 67
0 0

0 0

0 0

Функция linspace формирует линейный массив


равноотстоящих узлов. Это подобно оператору :, но дает
прямой контроль над числом точек.

linspace(a,b) возвращает линейный массив из 100


точек, равномерно распределенных между a и b

linspace(a,b,n) генерирует n точек, равномерно


распределенных от a до b.

Пример:

» linspace(7,12,5)

ans =

7.0000 8.2500 9.5000 10.7500 12.0000

Функция logspace формирует вектор


равноотстоящих в логарифмическом масштабе узлов.

logspace(a,b) возвращает линейный массив из 50


точек, равноотстоящих в логарифмическом масштабе
между декадами 10a и 10b

logspace(a,b,n) генерирует n точек между


a b
декадами 10 и 10

Лабораторная работа № 1
68
logspace(a,pi) возвращает точки в интервале
между 10a и pi

Все аргументы функции logspace должны быть


скалярными величинами.

Пример:

» L=logspace(1,2,14)

L=

Columns 1 through 7

10.0000 11.9378 14.2510 17.0125 20.3092 24.2446


28.9427

Columns 8 through 14

34.5511 41.2463 49.2388 58.7802 70.1704 83.7678


100.0000

Существует множество других функций,


информацию о которых можно найти в файлах помощи
или специальной литературе по MATLAB. Так же
некоторые операции над матрицами будут рассмотрены в
лабораторной работе № 9 "Элементы линейной алгебры в
среде MATLAB".

Существует возможность объединения нескольких


матриц в одну.

Пример:
Лабораторная работа № 1 69
Создадим 3 матрицы

» F=eye(2);

» A=ones(2);

» D=zeros(2);

Построим матрицу, содержащую 4 матрицы:

» V=[F A;D F]

V=

1 0 1 1

0 1 1 1

0 0 1 0

0 0 0 1

С помощью оператора : (двоеточие) формируются


подматрицы и подвекторы таким образом:

j:k – то же, что и [j,j+1,…,k]

j:i:k– то же, что и [j,j+I,j+2i,…,k]

A(:,j) - это j-ый столбец из А

A(i,:) – это i-ая строка из А

A(:,:) – эквивалент двумерного массива

A(j:k) – это A(j),A(j+1),…,A(k)

Лабораторная работа № 1
70
Иногда возникает необходимость удалить
отдельные столбцы или строки матрицы для этого
используются пустые квадратные скобки [].

Пример:

Дана матрица М

» M=[1 2 3;4 5 6;7 8 9]

M=

1 2 3

4 5 6

7 8 9

Удалим второй столбец

» M(:,2)=[]

M=

1 3

4 6

7 9

Удалим вторую строку

» M(2,:)=[]

M=
Лабораторная работа № 1 71
1 3

7 9

3. ПОНЯТИЕ О МНОГОМЕРНЫХ МАССИВАХ.


Многомерные массивы характеризуются
размерностью более двух. Таким массивам можно дать
наглядную интерпретацию. Так, матрицу (двумерный
массив) можно записать в виде строк и столбцов,
состоящих из элементов матрицы. Тогда блокнот с такими
листами можно считать трехмерным массивом, полку с
такими блокнотами – четырехмерным массивом и т.д.

Под размерностью массива подразумевается


число измерений в пространстве, а под размером –
количество элементов в массиве.

Оператор : легко позволяет увеличить


размерность массива. Приведем пример на формирование
трехмерного массива путем добавления новой страницы.

» M=[1 2 3;4 5 6;7 8 9]

M=

1 2 3

4 5 6

7 8 9

Лабораторная работа № 1
72
Для добавления новой страницы сделаем
следующее:

» M(:,:,2)=[10 11 12;13 14 15;16 17 18]

M(:,:,1) =

1 2 3

4 5 6

7 8 9

M(:,:,2) =

10 11 12

13 14 15

16 17 18

Мы получили две страницы.

В многомерных массивах используются те же


правила, что и в двумерных.

Страницы можно удалять так же, как мы удаляли


строки и столбцы. Все функции, рассмотренные нами
ранее, распространяются и на многомерные массивы.

Лабораторная работа № 1 73
4. НЕКОТОРЫЕ СПЕЦИАЛЬНЫЕ ФУНКЦИИ ДЛЯ
МНОГОМЕРНЫХ МАССИВОВ
Для создания многомерных массивов служит
функция конкатенации (объединения) cat:

cat(DIM,A,B) – возвращает результат объединения


двух массивов А и В вдоль размерности DIM.

cat(2,A,B)- возвращает массив [A,B],


объединенный по столбцам

cat(1,A,B) - возвращает массив [A,B],


объединенный по строкам

B=cat(DIM,A1,A2,A3,…) – объединяет множество


входных массивов А1, А2, А3…. вдоль размерности DIM.

Пример:

» M1=[1 2;3 4]

M1 =

1 2

3 4

» M2=[5 6;7 8]

M2 =

5 6

7 8

Лабораторная работа № 1
74
» cat(1,M1,M2)

ans =

1 2

3 4

5 6

7 8

» cat(2,M1,M2)

ans =

1 2 5 6

3 4 7 8

» cat(3,M1,M2)

ans(:,:,1) =

1 2

3 4

ans(:,:,2) =

5 6

7 8

Лабораторная работа № 1 75
Размерность массива, если она больше или равна
двум, возвращает функция ndims(A).

Пример:

» M1=[1 2;3 4];

» M2=[5 6;7 8];

» A=cat(3,M1,M2);

» ndims(A)

ans =

Функция squeeze(A) возвращает массив, в


котором удалены все единичные размерности.

Пример:

» A=ones(1,2,1,3,1); % создали единичный массив


размерностью 5

» D=squeeze(A) % получили двумерный массив

D=

1 1 1

1 1 1

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


1. Что такое массив?
Лабораторная работа № 1
76
2. Как называется одномерный массив?
3. Как называется двумерный массив?
4. Как происходит доступ к конкретному элементу
массива?
5. Как выглядит единичная матрица? Какая функция
ее создает?
6. Какая функция создает матрицу, все элементы
которой единицы?
7. Какая функция создает матрицу, все элементы
которой нули?
8. Как сформировать линейный массив
равноотстоящих узлов?
9. Какие массивы называют многомерными?
10. Чем отличается размерность массива от его
размера?

Лабораторная работа № 1 77
Приложение 3.2

КОНТРОЛЬНЫЙ ПРИМЕР
19. Запустите MATLAB.
20. Как вы уже знаете, простейшим массивом является
вектор. Создать вектор в системе MATLAB очень
просто. Введите в командной строке MATLAB
следующее:
A=[11 12 13 14 15]
После того, как вы нажмете Enter, получите
A=
11 12 13 14 15
Так мы создали вектор A, состоящий из пяти
элементов. Векторы являются одномерными
массивами.
21. Двумерный массив – это матрица. Создать
матрицу также просто, как и вектор. Введем в
командной строке следующее:
B=[11 12 13; 14 15 16; 17 18 19]
После того, как вы нажмете Enter, получите
B=
11 12 13
14 15 16
17 18 19

Лабораторная работа № 1
78
Мы создали матрицу В, состоящую из девяти
элементов. Как видно, создание матриц отличается от
создания векторов использованием символа ;.

Массивы, вектора, матрицы:


[] – формирование массива;
[;] – формирование столбцов массива.

22. Для обращения к любому элементу вектора


используют индексы. Введите:
A(3)
и нажмите Enter. Получите значение третьего
элемента вектора А:
ans =
13
Самостоятельно получите значения элементов
вектора А(5), А(1), А(4) и А(2). Вы должны получить
соответственно:
» A(5)
ans =
15
» A(1)
ans =
11
» A(4)
ans =
14
Лабораторная работа № 1 79
» A(2)
ans =
12
23. Для матриц обращение к элементам происходит
через индекс строки i и индекс столбца j
Например, введем:
B(2,3)
и нажмем Enter. Получим элемент, который
находится во 2-ой строке и 3-ем столбце:
ans =
16
Самостоятельно получите значения элементов
В(1,3), В(2,1), В(3,1) и В(3,3). Вы должны получить
соответственно:
» B(1,3)
ans =
13
» B(2,1)
ans =
14
» B(3,1)
ans =
17
» B(3,3)
ans =

Лабораторная работа № 1
80
19
24. Для изменения значения элемента матрицы
достаточно указать его индексы и новое значение.
Например:
» B(2,3)=100
B=
11 12 13
14 15 100
17 18 19
Самостоятельно измените значения элементов
В(1,3)=51, В(2,1)=260, В(3,1)=33 и В(3,3)=1000. Вы должны
получить соответственно:
» B(1,3)=51
B=
11 12 51
14 15 100
17 18 19
» B(2,1)=260
B=
11 12 51
260 15 100
17 18 19
» B(3,1)=33
B=
11 12 51

Лабораторная работа № 1 81
260 15 100
33 18 19
» B(3,3)=1000
B=
11 12 51
260 15 100
33 18 1000
25. Кроме непосредственного ввода элементов
массива используют специальные функции для
создания массивов. Мы уже знакомились с
конструкцией:
имя_переменной = <начальное_значение> : <шаг> :
<конечное_значение>.
Эта конструкция позволяет формировать вектор-
строку. Введите:
X=10:2:20;
Затем вызовем вектор Х:
»X
X=
10 12 14 16 18 20
Функция linspace(a,b,n) формирует вектор из n
элементов, равномерно распределенных между a и b.
Введите:
Y = linspace (5,8,10);
и нажмите Enter. После вызовем матрицу Y:

Лабораторная работа № 1
82
»Y
Y=
Columns 1 through 7
5.0000 5.3333 5.6667 6.0000 6.3333
6.6667 7.0000
Columns 8 through 10
7.3333 7.6667 8.0000
Как видно, мы создали вектор из 10 элементов,
который начинается с 5 и заканчивается 8.
8. Как и для векторов для создания матриц также
существуют функции. Введите следующее:
C=eye(5);
и нажмите Enter. Эта функция создает единичную
матрицу размера nxn. Вызовем эту матрицу:
»C
»C=
1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Самостоятельно создайте единичную матрицу
С1(4х4). У вас должно получиться:
» C1=eye(4);
C1

Лабораторная работа № 1 83
C1 =
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
9. Введите:
D=ones(5);
И нажмите Enter. Эта функция создает матрицу
размера nxn, все элементы, которой – единицы. Вызовем
эту матрицу:
»D
D=
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
Самостоятельно создайте матрицу D1(4х4). У вас
должно получиться:
» D1=ones(4);
» D1
D1 =
1 1 1 1
1 1 1 1
1 1 1 1

Лабораторная работа № 1
84
1 1 1 1
10. Введите:
E=zeros(5);
и нажмите Enter. Эта функция создает матрицу
размера nxn, все элементы, которой – нули. Вызовем эту
матрицу:
»E
E=
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
0 0 0 0 0
Самостоятельно создайте матрицу E1(4х4). У вас
должно получиться:
» E1=zeros(4);
» E1
E1 =
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
11. Третий способ создания массивов. Имея
несколько массивов, мы можем скомпоновать из них новый
массив. Например, зададим два вектора. Введите:

Лабораторная работа № 1 85
A=[2 3 4];
B=[6 7 8];
Объединим их в новый вектор-строку. Введите:
C=[A B]
и нажмите Enter. Получим новый вектор-строку
C, который содержит шесть элементов:
C=
2 3 4 6 7 8
Теперь введите следующее:
D=[A; B]
Нажмите Enter. Получим новую матрицу D
размером 2х3:
D=
2 3 4
6 7 8
12. Из двух матриц можно создать новую матрицу.
Например, введите:
E=[12 13 14; 21 31 41];
V=[D E; E D]
Нажмите Enter. Получим новую матрицу V
размером 4х6:
V=
2 3 4 12 13 14
6 7 8 21 31 41
12 13 14 2 3 4

Лабораторная работа № 1
86
21 31 41 6 7 8
13. Если надо добавить строку или столбец к
существующей матрице, следует использовать
индексацию. Например, введите:
D(:,4)=[12; 13]
Нажмите Enter. Получим новый, четвертый столбец
в матрице D, а размер стал 2х4:
D=
2 3 4 12
6 7 8 13
Чтобы добавить строку, используем следующее.
Введите:
D(3,:)=[21 43 65 87]
Нажмите Enter. Получим новую, третью строку в
матрице D, а размер стал 3х4:
D=
2 3 4 12
6 7 8 13
21 43 65 87
Вообще, если мы присвоим значение элементу
матрицы, чьи индексы превосходят размеры самой
матрицы, то система MATLAB автоматически увеличит
размер матрицы. Например, введите:
D(5,5)=[100]

Лабораторная работа № 1 87
Нажмите Enter. Получим новую матрицу D
размером 5х5:
D=
2 3 4 12 0
6 7 8 13 0
21 43 65 87 0
0 0 0 0 0
0 0 0 0 100
14. Используя понятие пустого массива, можно легко
удалять строки и столбцы матрицы. Введите:
D(1,:)=[]
Нажмите Enter.
D=
6 7 8 13 0
21 43 65 87 0
0 0 0 0 0
0 0 0 0 100
Как видно, мы удалили первую строку в матрице D.
Удалим второй столбец в матрице D. Введите:
D(:,2)=[]
Нажмите Enter. Получим:
D=
6 8 13 0
21 65 87 0
0 0 0 0

Лабораторная работа № 1
88
0 0 0 100
Самостоятельно удалите 3, 4 строки и 4 столбец
матрицы D. У вас должно получиться:
удаляем 4 столбец:
» D(:,4)=[]
D=
6 8 13
21 65 87
0 0 0
0 0 0
удаляем 3 и 4 строки:
» D(3:4,:)=[]
D=
6 8 13
21 65 87
15. Кроме одномерных массивов – вектор и
двухмерных – матрица в среде MATLAB
существует понятие многомерные массивы,
размерность которых больше чем 2. Например,
создадим двумерный массив A размером 3х3:
» A=ones(3)
A=
1 1 1
1 1 1
1 1 1

Лабораторная работа № 1 89
Чтобы сделать массив А трехмерным, сделаем
следующее. Введите:
A(:,:,2)=[2 2 2; 2 2 2; 2 2 2]
Нажмите Enter. Получим:
A(:,:,1) =
1 1 1
1 1 1
1 1 1
A(:,:,2) =
2 2 2
2 2 2
2 2 2
Матрица А стала трехмерной размером 3х3х2. Для
того чтобы показать третью размерность MATLAB выводит
матрицу А постранично, каждая страница имеет размер
3х3. Добавим еще одну страницу:
» A(:,:,3)=[3 3 3; 3 3 3; 3 3 3]
A(:,:,1) =
1 1 1
1 1 1
1 1 1
A(:,:,2) =
2 2 2
2 2 2
2 2 2

Лабораторная работа № 1
90
A(:,:,3) =
3 3 3
3 3 3
3 3 3
Теперь наш массив имеет три страницы, каждая
размером 3х3, общий размер 3х3х3. Наш массив мысленно
можно представить в форме куба со сторонами 3х3х3.
Самостоятельно, используя массивы В и С
создайте трехмерный массив D размером 2х2х3:
89 45 34 17
C B
0 11 51 22

У вас должно получиться:


» B=[34 17; 51 22];
» C=[89 45; 0 11];
» D=B;
» D(:,:,3)=[C]
D(:,:,1) =
34 17
51 22
D(:,:,2) =
0 0
0 0
D(:,:,3) =
89 45
0 11

Лабораторная работа № 1 91
16. Завершите работу в MATLAB. Для этого в меню
Файл выполните команду Выход из MATLAB.

Приложение 3.3

ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
В соответствии со своим вариантом выполнить:
1. Создать два вектора А и В.
2. Создать двумерный массив D, строки
которого вектора A, B, A+B.
3. Создать массив С такого же размера, что и
D.
4. Из массивов D и С создать трехмерный
массив F.
5. В массиве F заменить элемент с указанным
адресом на число1000.
Варианты заданий:
Адрес
элемента
№ A B C
столбец
строка

слой
1 3 4 6 8 6 78 9 1 по
5
1 диагонали 1 1 1
0
остальные 0
78 65 90 1 76 54 0 54
2 все эл-ты 1 2 2 2
66 2

Лабораторная работа № 1
92
7 6 9 0 4 12 54 4 6
3 все эл-ты 0 3 3 1
8
6 90 8 3 0 4 1 по 8 6
4 диагонали 1 4 2
1 43
остальные 0
7 6 9 87 23 5 9 7
5 все эл-ты 1 2 5 1
4 1
7 7 5 3 21 3 4 2
6 все эл-ты 0 3 1 2
87 93
7 4 62 8 4 6 8 1 9 1 по
7 диагонали 1 2 1
0
остальные 0
3 6 55 2 74 3 6 8
8 все эл-ты 1 2 3 2
1 99
21 4 5 2 84 2 4 5
9 все эл-ты 0 3 4 1
7 0
32 5 4 1 99 6 3 1 1 по
10 диагонали 1 5 2
8 4
остальные 0
4 5 7 2 9 0 7 3 6
11 все эл-ты 1 2 1 1
88
17 34 2 6 13 6 8 15
12 все эл-ты 0 3 2 2
76 8
54 3 2 8 0 8 7 45 1 по
13 диагонали 1 3 1
6 2
остальные 0
14 6 8 7 2 1 0 -5 7 4 0 все эл-ты 1 2 4 2

Лабораторная работа № 1 93
32 -6 6 4 8 4 6 9 2
15 все эл-ты 0 3 5 1
5
7 5 -13 7 1 по
4 7 9 4 3
16 диагонали 1 1 2
8
остальные 0
67 9 -3 5 63 4 0 5
17 все эл-ты 1 2 2 1
6 0
7 8 -15 4 7 8 3 2
18 все эл-ты 0 3 3 2
7 67
45 -67 5 4 0 5 4 8 3 1 по
19 диагонали 1 4 1
0
остальные 0
5 8 6 7 - 6 4 32 7
20 все эл-ты 1 2 5 2
1 8
2 34 5 9 -48 6 4 0
21 все эл-ты 0 3 1 1
7 0
43 76 59 6 6 -17 54 8 1 по
22 диагонали 1 2 2
1 5
остальные 0
23 5 8 4 -8 9 4 2 6 8 9 все эл-ты 1 2 3 1
23 8 9 5 -12 6 7 9
24 все эл-ты 0 3 4 2
0 3
65 9 4 5 0 0 6 5 1 1 по
25 диагонали 1 5 1
5
остальные 0
-7 5 8 4 7 4 7 -76 0
26 все эл-ты 1 2 1 2
3

Лабораторная работа № 1
94
3 5 7 9 2 22 54 7 9
27 все эл-ты 0 3 2 1
5
5 7 68 -4 43 6 7 8 1 по
28 диагонали 1 3 2
3 2
остальные 0
4 6 8 95 -13 5 6 76
29 все эл-ты 1 2 4 1
4 2
67 -9 8 34 3 6 7 2 1
30 все эл-ты 0 3 5 2
5

ЛАБОРАТОРНАЯ РАБОТА № 4
ОСНОВНЫЕ ПОНЯТИЯ МАССИВОВ ЗАПИСЕЙ В СРЕДЕ
MATLAB
1. ЦЕЛЬ РАБОТЫ
Получить элементарные понятия по массивам
записей, научиться создавать их и выполнять
простейшие операции с массивами записей

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Создайте структуру. Выполнить в соответствии с
вариантом заданным преподавателем из приложения № 4.3.

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.


Работа выполняется в порядке, указанном на
странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
7. Основная: [3], [7], [10], [11], [12], [13];

Лабораторная работа № 1 95
Приложение 4.1

ТЕОРИЯ ВОПРОСА " Основные понятия массивов


записей в среде MATLAB"
1. СТРУКТУРА ЗАПИСЕЙ
Записи относятся к сложным типам данных. Они
могут содержать разнородные данные, относящиеся к
некоторому поименованному объекту. Например, объект
типа человек может характеризоваться следующими
данными:
man(I,…) %Имя записи
.name Иван %Имя человека
.surname Петров %Фамилия
.date 1956 %Год рождения
.height 170.5 %Рост
.weight 70.34 %Вес
Лабораторная работа № 1
96
Первые два столбца представляют структуру
записи. Как нетрудно заметить, каждая i-запись состоит из
ряда полей, имеющих имена, например, man(i).name,
man(i).date и так далее. Поля могут иметь данные любого
типа от пустого поля [] до массивов. Приведенная выше
запись имеет размер 1х1. MATLAB характеризуется
возможностью создания массивов записей, что позволяет
создавать мощные массивы данных.
Поле структуры записи может содержать другую
вложенную структуру или массив структур. Это позволяет
создавать вложенные структуры, и даже многомерные
массивы структур.

2. СОЗДАНИЕ ЗАПИСЕЙ И ДОСТУП К ИХ


КОМПОНЕНТАМ.
Для задания записей на языке MATLAB можно
использовать операторы присваивания, что иллюстрирует
следующий пример:
» man.name=’Иван’;
» man.surname=’Петров’;
» man.date=’1956’;
» man.height=’170.5’;
» man.weight=’70.34’;
Здесь построена базовая запись без индексного
указателя. Теперь можно просмотреть полученную запись,
просто указав ее имя:
» man
man=
name: ’Иван’
Лабораторная работа № 1 97
surname: ’Петров’
date: 1956
height: 170.5000
weight: 70.3400
Компоненты записи можно вызвать по имени и
менять их значения. При этом имя компонента состоит из
имени записи и имени поля, разделенных точкой. Это
поясняют следующие примеры:
» man.date
ans=
1956
» man.date=1964
man=
name: ’Иван’
surname: ’Петров’
date: 1964
height: 170.5000
weight: 70.3400
Для создания массива записей вводится их
индексация. Например, вектор записей можно создать,
введя индекс в скобках после имени записи. Так, для
создания новой, второй записи можно поступить
следующим образом:
»man(2).name=’Петр’;
»man(2).surname=’Сидоров’;
»man(2).date=1959;
»man(2)
ans=
name: ’Петр’
surname: ’Сидоров’
date: 1959
height: []
weight: []
Лабораторная работа № 1
98
» man(2).surname
ans=
Сидоров
» length(man)
ans=
2
Обратите внимание на то, что не все поля данной
записи заполнены. Поэтому значением двух последних
компонентов записи 2 оказываются пустые массивы. Число
записей позволяет найти функция length.

3. ФУНКЦИЯ СОЗДАНИЯ ЗАПИСЕЙ STRUCT.


Для создания структур записей используется
следующая функция:
struct(’field1’,VALUES1,’field2’,VALUES2,…) –
возвращает созданную данной функцией запись,
содержащую указанные в параметрах поля 'fieldn’ с их
значениями ’VFLUESn’.
struct(OBJ) – конвертирует объект OBJ в
эквивалентную структуру.
Пример:
»S=struct('student','Иванов','group','2','estimate','good'
)
S=
student: 'Иванов'
group: '2'
estimate: 'good'

Лабораторная работа № 1 99
4. КОНТРОЛЬ ПОЛЕЙ И ЗАПИСЕЙ – ФУНКЦИИ ISFIELD И
ISSTRUCT.
Выполнение операций с полями и элементами
полей проводится по тем же правилам, что и при работе с
обычными массивами. Однако существует ряд функций,
позволяющих работать с записями.
Приведенные ниже функции служат для
тестирования полей и структур записей:
isfield(S,’field’) – возвращает логическую 1, если
‘field’ является именем поля структуры S.
isstruct(S) – возвращает логическую 1, если S-
структура, и 0 в ином случае.
Пример:
» isfield(man,’name’)
ans=
1
» isfield(man,’family’)
ans=
0
» isstruct(man)
ans=
1
» isstruct(many)
??? Undefined function or variable ’many’.

» isstruct(’many’)
ans=
0

Лабораторная работа № 1
100
5. ФУНКЦИЯ ВОЗВРАТА ИМЕН ПОЛЕЙ –
FIELDNAME.
Следующая функция позволяет вывести имена
полей заданной записи.
fieldname(S) – возвращает имена полей записи S в
виде массива ячеек.
Пример:
» fieldname(man)
ans=
’name’
’surname’
’date’
’height’
’weight’
6. ФУНКЦИЯ ВОЗВРАТА СОДЕРЖИМОГО ПОЛЕЙ
ЗАПИСИ – GETFIELD.
В конечном счете, работа с записями сводится к
выводу и использованию содержимого полей. Для
возврата содержимого поля записи S служит функция:
getfield(S,’field’) – возвращает содержимое поля
записи S, что эквивалентно S.field.
getfield(S,{I,j},’field’,{k})–эквивалентно
F=S(i,j).field(k).
Пример:
» getfield(man(2),’name’)
ans=
Петр

Лабораторная работа № 1 101


7.МАССИВЫ ЯЧЕЕК.
Массив ячеек – наиболее сложный тип данных в
системе MATLAB. Это массив, элементами которого
являются ячейки, содержащие любой тип массивов,
включая массивы ячеек. Отличительным атрибутом
массивов ячеек является задание их содержимого в
фигурных скобках {}. Создавать массивы ячеек можно с
помощью оператора присваивания.
Существует два способа присваивания данных
отдельным ячейкам.
Первый способ – индексация ячеек.
А(1,1)={`Курить вредно !`}
А(1,2)={[1 2;3 4]}
A(2,1)={76}
A(2,2)={0:0.1:1}
В этом примере заданы четыре элемента: строка
символов, матрица, число и одномерный массив.
Создадим файл-сценарий с именем ww
А(1,1)={`Курить вредно !`}
А(1,2)={[1 2;3 4]}
A(2,1)={76}
A(2,2)={0:0.1:1}
В этом примере заданы четыре элемента: строка
символов, матрица, число и одномерный массив из 11
чисел. Теперь можно вызвать этот массив.
» ww
A=
'Курить вредно' [2x2 double]
[ 13] [1x11 double]
Лабораторная работа № 1
102
» A(1,1)
ans =
'Курить вредно'
» A(2,1)
ans =
[13]
При индексации содержимого массив ячеек
задается следующим образом:
A{1,1}='Курить вредно';
A{1,2}=[1 2 ;3 4];
A{2,1}=13;
A{2,2}=0:0.1:1;
Рассмотрим массив в командном режиме:
» ww
»A
A=
'Курить вредно' [2x2 double]
[ 13] [1x11 double]
Остальную обширную информацию на эту тему
можно узнать в рекомендуемой литературе.

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


1. Что такое запись?
2. Что такое поле записи, и какие данные могут
содержать поля?
3. Как происходит доступ к компонентам записи?
4. Как создается массив записи?
5. Для чего служит функция struct?
6. Что собой представляет массив ячеек?

Приложение 4.2

КОНТРОЛЬНЫЙ ПРИМЕР
26. Запустить MATLAB.

Лабораторная работа № 1 103


27. Предположим, что мы имеем “Дневник наблюдений
за погодой” (далее “Дневник”). Дневник состоит из
записей. Назовем запись Weather (погода).
Создадим эту запись:
weather (погода)
Она содержит следующие поля:
day день недели
press давление
temp температура утром, днем и
вечером
3 Создадим первую запись структуры с помощью
функции создания записей
»weather=struct('day','понед','press',780,'temp',[25 30
27])
Выведем первую запись структуры
weather =
day: 'понед'
press: 780
temp: [25 30 27]
4 Создадим вторую запись с помощью оператора
присваивания
» weather(2).day='вторник';
» weather(2).press=775;
» weather(2).temp=[22 26 20];
5 Теперь выведем вторую запись структуры:
» weather(2)
ans =
day: 'вторник'
press: 775
temp: [22 26 20]
6 Узнаем, каков вид структуры сейчас:
Лабораторная работа № 1
104
» weather
weather =
1x2 struct array with fields:
day
press
temp
Мы имеем структуру из двух записей с
полями: day, press, temp, причем temp – это массив
из трех чисел.
Теперь создайте самостоятельно запись на среду,
давление 780, температуру: утром 23, днем 31,
вечером 26.
Получим запись:
» weather(3)
ans =
day: 'среда'
press: 780
temp: [23 31 26]
7 Протестируем полученную структуру. Узнаем,
является ли day именем поля
» isfield(weather,'day')
ans =
1
Мы убедились, что является.
Самостоятельно узнайте, являются ли полем
структуры temp и вторник. Получим ответ: в первом
случае является, а во втором – нет.
8 Узнаем содержимое поля press 1-ой записи.
» getfield(weather(1),'press')
ans =
780
Лабораторная работа № 1 105
или другим способом:
» weather(1).press
ans =
780
Найдем среднюю температуру за понедельник:
» ST=sum(weather(1).temp)./3
ST =
27.3333
Найдите среднюю температуру за среду
У вас должно получится:
ST =
26.6667
9 Присвоим другое значение давлению за
понедельник:
setfield(weather(1),'press',680)
ans =
day: 'понед'
press: 680
temp: [25 30 27]
Теперь поменяйте температуру за среду на 20, 25,
15
У вас должно получится
ans =
day: 'среда'
press: 780
temp: [20 25 15]
10 В записи на вторник удалим запись о давлении:
» rmfield(weather(2),'press')
ans =
day: 'вторник'
temp: [22 26 20]
Самостоятельно удалите день недели из записи 3

Лабораторная работа № 1
106
У вас должно получиться:
ans =
day: 'среда'
press: 780
11 Завершите работу в MATLAB для этого в меню Файл
выполните команду Выход из MATLAB.

Приложение 4.3.

ИНДИВИДУАЛЬНЫЕ ЗАДАНИЯ

По таблице, в соответствии с вариантом:

1. Создайте первую запись структуры с помощью


функции создания записей.
2. Следующие записи создайте с помощью
присваивания.
3. Выведите вид полученной структуры.
4. Найдите среднее арифметическое последних
полей массива записей.

технические показатели
Вариант 1
зерносушилок
мощность
марка тип электропривод
а
стационарная,
1 СЗШ-16 107
шахтная
стационарная,
2 СЗСБ-8А 30.4
барабанная
3 СКПБ-1,8 передвижная 8.6
Лабораторная работа № 1 107
барабанная

технические данные ламп


Вариант 2
накаливания
световой
тип лампы мощность
поток
1 В 220/235-15 15 85
2 Б 220/240-60 60 600
3 Г 220/240-300 300 4010

удельная норма расхода


Вариант 3
электроэнергии на орошение
культура Поволжье Северный Украина
Кавказ
1 пшеница 2000 1800 1800
2 кукуруза 3500 3200 2900
картофел 3400 3100 3400
3
ь

Вариант 4 ток холостого хода электродвигателей


электродвигатель мощность сила тока
1 АО2-11-4 0.6 0.97
2 АО2-62-4 17.0 8.76
3 АО2-72-6 22.0 14.0

технические показатели
Вариант 5
электродвигателей
электродвигате мощность КПД
ль
1 Да71А2С 0.37 74.5
2 Да80В2С 1.1 79.5
3 Да90L2С 2.2 82

Лабораторная работа № 1
108
смазки для подшипников
Вариант 6
электродвигателей
наименовани t0 t0 при
среда
е каплепадения работе
сухие
1 консталин-1 130 115
помещения
ЦИАТИМ- открытый
2 170 120
201 воздух
ЦИАТИМ- высокие
3 150 120
203 нагрузки

сила тока на провода при прокладке в


Вариант 7
воздухе
сечение
двухжильны трехжильны
токопроводяще одножильные
е е
й жилы
1 1.5 23 19 19
2 6 50 50 42
3 35 140 115 95

сила тока на провода при прокладке в


Вариант 8
земле
сечение
токопроводяще двухжильные трехжильные
й жилы
1 1.5 33 27
2 6 70 60
3 35 210 180

Вариант 9 провода марки АПРТО


число
сечение диаметр диаметр
проволок в
жилы проволоки жилы
жиле
Лабораторная работа № 1 109
1 2.5 1 1.76 1.76
2 6 7 1.04 3.12
3 50 19 1.81 9.05

технические данные охлаждаемых


Вариант 10
прилавков
марка хладопроизв мощность
поверхность
холодильног о- электродви-
охлаждения
о агрегата дительность гателя
1 ФАК-0.7 700 3.88 0.6
2 ФАК-1.1 1100 5.18 1.0
3 ФАК-1.5 1500 7.76 1.7

технические показатели пищеварочных


Вариант 11
котлов
вместимост удельная время до
тип
ь мощность закипания
КПЭ- 20 270 50
1
20
КПЭ- 60 117 60
2
60
3 КПЭ-250 250 120 60

технические показатели жарочных


Вариант 12
шкафов
мощност максимальная продолжитель-
тип
ь t 0С ность разогрева
1 ЭШ-3М 16.2 280 100
2 ШК-2А 9.0 350 500
3 ШК-3М 11 300 400

зависимость времени нагрева воды от


Вариант 13
мощности кипятильника
объем воды мощность время нагрева
Лабораторная работа № 1
110
кипятильника воды
1 0.25 0.3 6
2 1.5 0.7 20
3 5 1.6 25

Вариант 14 электрический водонагреватель-термос


тип вместимость мощность
1 ВЭТ-200 200 5.4
2 ВЭТ-400 400 10.5
3 ВЭТ-800 800 16.5

технические показатели батарей


Вариант 15
птичников
вместимость
марка батареи мощность
птичника
1 БКМ-3 60 тыс. 17.4
2 КББ-3 66 тыс. 15.2
3 КБР-2 16 тыс. 17.4

Вариант 16 технические показатели зерносушилок


мощность
марка тип
электропривода
стационарная,
1 СЗШ-16 107
шахтная
стационарная,
2 СЗСБ-8А 30.4
барабанная
передвижная
3 СКПБ-1,8 8.6
барабанная

Вариант 17 технические данные ламп накаливания


тип лампы мощность световой поток
1 В 220/235-15 15 85
2 Б 220/240-60 60 600
3 Г 220/240-300 300 4010
Лабораторная работа № 1 111
удельная норма расхода электроэнергии
Вариант 18
на орошение
культура Поволжье Северный Украина
Кавказ
1 пшеница 2000 1800 1800
2 кукуруза 3500 3200 2900
3 картофель 3400 3100 3400

Вариант 19 ток холостого хода электродвигателей


электродвигате мощность сила тока
ль
1 АО2-11-4 0.6 0.97
2 АО2-62-4 17.0 8.76
3 АО2-72-6 22.0 14.0

технические показатели
Вариант 20
электродвигателей
электродвигате мощность КПД
ль
1 Да71А2С 0.37 74.5
2 Да80В2С 1.1 79.5
3 Да90L2С 2.2 82

смазки для подшипников


Вариант 21
электродвигателей
t0
наименован t0 при
каплепадени среда
ие работе
я
консталин- сухие
1 130 115
1 помещения
циатим- открытый
2 170 120
201 воздух
Лабораторная работа № 1
112
циатим- высокие
3 150 120
203 нагрузки

сила тока на провода при прокладке


Вариант 22
в воздухе
сечение токо-
двухжильны трехжильны
проводящей одножильные
е е
жилы
1 1.5 23 19 19
2 6 50 50 42
3 35 140 115 95

сила тока на провода


Вариант 23
при прокладке в земле
сечение
токопроводящей двухжильные трехжильные
жилы
1 1.5 33 27
2 6 70 60
3 35 210 180

Вариант 24 провода марки АПРТО


число
сечение диаметр диаметр
проволок в
жилы проволоки жилы
жиле
1 2.5 1 1.76 1.76
2 6 7 1.04 3.12
3 50 19 1.81 9.05

технические данные
Вариант 25
охлаждаемых прилавков
марка поверхност мощность
хладопроизво
холодильног ь электро-
дительность
о агрегата охлаждения двигателя
Лабораторная работа № 1 113
1 ФАК-0.7 700 3.88 0.6
2 ФАК-1.1 1100 5.18 1.0
3 ФАК-1.5 1500 7.76 1.7

технические показатели
Вариант 26
пищеварочных котлов
время
вместимост удельная
тип разогрева до
ь мощность
закипания
1 КПЭ-20 20 270 50
2 КПЭ-60 60 117 60
3 КПЭ-250 250 120 60

технические показатели жарочных


Вариант 27
шкафов
продолжител
максимальн
тип мощность ьность
ая t0С
разогрева
1 ЭШ-3М 16.2 280 100
2 ШК-2А 9.0 350 500
3 ШК-3М 11 300 400

зависимость времени нагрева воды от


Вариант 28
мощности кипятильника
мощность время нагрева
объем воды
кипятильника воды
1 0.25 0.3 6
2 1.5 0.7 20
3 5 1.6 25

Вариант 29 электрический водонагреватель-термос


тип вместимость мощность
1 ВЭТ-200 200 5.4
2 ВЭТ-400 400 10.5
Лабораторная работа № 1
114
3 ВЭТ-800 800 16.5

технические показатели батарей


Вариант 30
птичников
вместимость
марка батареи мощность
птичника
1 БКМ-3 60 тыс. 17.4
2 КББ-3 66 тыс. 15.2
3 КБР-2 16 тыс. 17.4

ЛАБОРАТОРНАЯ РАБОТА №5
ГРАФИКА. ОСНОВНЫЕ ФУНКЦИИ В СРЕДЕ MATLAB.
1. ЦЕЛЬ РАБОТЫ
Научиться использовать графические операторы в
среде MATLAB.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Вывести в одном окне графики двух функций.
Выполнить в соответствии с вариантом заданным
преподавателем из приложения № 5.3.

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.


Работа выполняется в порядке, указанном на
странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
8. Основная: [3], [7], [10], [11], [12], [13];
9. Дополнительная: [14].

Лабораторная работа № 1 115


Приложе
ение 5.1

ТЕОРИЯ В
ВОПРОСА
А " Графика
а. Основные
е функции в среде
MATLAAB "
ОПИСАННИЕ ГРАФИ
ИЧЕСКОГО
О ОКНА
Гра е окно MATLAB – это
афическое обычное
о
масштаби
ируемое и перемещаемое окно Windows-
W
приложения. ное
Главн меню
ю этого окна ана
алогично
главному меню окна
а командно
ого режима
а работы системы
с
MATLAB.

1. ГРАФИ
ИКИ ДВУМЕ
ЕРНЫХ ФУ
УНКЦИЙ
Для
я отображе ций одной переменной y  x 
ения функц
используютт графики в прямоуугольной системе
обычно и
координатт. При этом
м строят две
д оси: го ризонтальн
ную Х и
вертикаль
ьную Y и задаютс
ся коорди
инатами x и y,
определяю
ющими узл и y  x  . Этти точки
ловые точкки функции
соединяюттся отреззками пря
ямых. По
оскольку MATLAB
M
представл
ляет собой матричн
ную систе
ему, совоккупность
точек y  x  задаеттся вектор
рами X и Y один
накового
размера.
манда
Ком p
plot(X,Y)
строит гграфик ф
функции
y x  . Ко
оординаты точек
берутся из ве
екторов

Лабораторная рработа № 1
116
одинакового размера X и Y. Если X и Y - матрица, то
строятся графики по данным матрицы.
Пример:
%Построить график функции sin(x) и cos(x) на отрезке
[0, 3]
X=linspace(0,3,20);
» Y=[sin(X);cos(X)]
» plot(X,Y)
Чтобы график функции был достаточно гладкой
кривой, необходимо большое количество точек.
plot(Y) строит график кривой y i  , где значения y
берутся из вектора Y, а I представляет собой индекс
соответствующего элемента.
plot(X,Y,S) аналогичен предыдущей команде, но
можно задавать тип линий графика с помощью строковой
константы S.
При этом значения константы могут быть
следующими:

Цвет линии Тип точки Тип линии


Y Желтый . точка - сплошная
Фиолетов двойной
m o окружность :
ый пунктир
штрих-
c голубой x крест -.
пунктир

Лабораторная работа № 1 117


штрихова
r красный + плюс --
я
g зеленый * звездочка
b синий S квадрат
w белый D ромб
k треугольник
V
(вниз)
треугольник
^
(вверх)
черный треугольник
<
(влево)
треугольник
>
(вправо)
P пятиугольник

H шестиугольник

plot(X1,Y1,S1,X2,Y2,S2,X3,Y3,S3…)–эта команда строит на


одном графике ряд линий, представленных данными вида
(X,Y,S), где X и Y–векторы, а S–строки. С помощью такой
конструкции возможно построение графика функции
линией, цвет которой отличается от цвета узловых точек.
Пример:
X=linspace(0,3,20) 1

0.9

Y=sin(X)
0.8

0.7

0.6

0.5

Лабораторная работа № 1
118 0.4

0.3

0.2

0.1

0
0 0.5 1 1.5 2 2.5 3
plot(X,Y,'-r',X,Y,'+b')
Сначала строим график функции красным цветом, а
потом график этой же функции, но только узлы синего
цвета.

2. ГРАФИКИ ФУНКЦИЙ В ЛОГАРИФМИЧЕСКОМ


МАСШТАБЕ
Для построения графиков функций, изменяющихся
в широких пределах, нередко используются
логарифмические масштабы. Команды, используемые в
этих случаях:
loglog(…) синтаксис команды аналогичен
предыдущей. Логарифмический масштаб используется как
для оси Y, так и для оси X.
Пример:
x=logspace(-1,3)
loglog(x,exp(x)./x)
grid on
300
10

250
10

200
10

150
10

100
10

50
10

0
10
-1 0 1 2 3
10 10 10 10 10

Лабораторная работа № 1 119


Здесь представлен график функции y  e x
x

grid on-это значит включена сетка. Неравномерное


расположение линий координатной мерной сетки
указывает на логарифмический масштаб осей.
В некоторых случаях предпочтителен
полулогарифмический масштаб графиков, когда по одной
оси масштаб линейный, а по другой логарифмический. В
этом случае используются следующие команды:
semilogx(…) - строит график функции в
логарифмическом масштабе (основание 10) по оси X и
линейном по оси Y.
semilogy(…) - строит график функции в
логарифмическом масштабе (основание 10) по оси Y и
линейном по оси X.
Запись параметров выполняется аналогично
предыдущим функциям.

3. ГРАФИКИ ФУНКЦИЙ В ПОЛЯРНОЙ СИСТЕМЕ


КООРДИНАТ
В полярной системе координат любая точка
представляется как конец радиус-вектора, исходящего из
начала системы координат, имеющего длину R и угол t.
Для построения графика функции R(t) используются
приведенные ниже команды, угол t обычно меняется от 0
до 2 .

Лабораторная работа № 1
120
polar(t,R) строит график в полярной системе
координат, представляющий собой положение конца
радиус-вектора с длиной R и углом t.
polar(t,R,S) позволяет задавать стиль построения с
помощью строковой константы S как в команде plot.
Пример:
t=0:pi/100:2*pi
polar(t,sin(5*t))
90
1
120 60

0.8

0.6
150 30

0.4

0.2

180 0

210 330

240 300

270

Здесь построен график функции


sin(5t) в полярной системе координат.

4. УГЛОВЫЕ ГИСТОГРАММЫ
Угловые гистограммы находят применение в
индикаторах радиолокационных станций (РЛС), для
отображения «розы ветров» и при построении других

Лабораторная работа № 1 121


специальных графиков. Для этого используется команда
типа rose(…):
rose(T) – строит угловую гистограмму для 20
интервалов и данных вектора T.
rose(T,N) – строит угловую гистограмму для N
интервалов в пределах угла от 0 до 2*pi по данным
вектора T.
rose(T,X) – строит угловую гистограмму по данным
вектора T со спецификацией в векторе X.
Пример:
» % Пример построения угловой гистограммы

» rose(1:100,12)
90
10
120 60

6
150 30

180 0

210 330

240 300

270

Функция H=rose(…)
возвращает вектор длин элементов гистограммы.

Лабораторная работа № 1
122
[T,R]=rose(…) – график не строит, но возвращает
векторы T и R, которые нужны команде polar(T,R) для
построения подобной гистограммы.
В MATLAB имеется возможность строить и другие
двухмерные графики об этом можно узнать в специальной
литературе, а так же в файлах помощи.

5. КОНТУРНЫЕ ГРАФИКИ
Контурные графики отображают на плоскости
функции двух переменных вида z(x, y). Их можно
представить в виде совокупности линий равного уровня,
которые получаются, если трехмерная поверхность
пересекается рядом параллельных плоскостей. При этом
контурный график представляет совокупность
спроектированных на плоскость y(x) линий пересечения
поверхности z(x, y) плоскостями.
contour(Z) – строит контурный график по данным
матрицы z с автоматическим заданием диапазона
изменения x и y.

contour(X,Y,Z) – строит контурный график по


данным матрицы Z с указанием спецификаций для X и Y.
contour(Z,N) и contour(X,Y,Z,N)- дает построения
аналогичные ранее описанным, с заданием N линий
равного уровня (по умолчанию N=10).

Лабораторная работа № 1 123


contour(Z,V) и contour(X,Y,Z,V) – строят линии
равного уровня для высот, указанных значениями
элементов вектора V.
contour([v,v]) или contour(X,Y,Z[v,v]) – вычисляет
одиночный контур для уровня v.
contour(…,’linespec’) – позволяет использовать
перечисленные выше команды с указанием спецификации
линий, которыми идет построение.
Пример построения контурного графика
поверхности, заданной функцией peaks:
» % Построение контурного графика объекта peaks
» z=peaks(27);
» contour(z,15)

25

20

15

10

5 10 15 20 25

Построенный на этом примере график имеет


заданный объект. Функция peaks задана в системе в
готовом виде.
КОМАНДЫ ОФОРМЛЕНИЯ ГРАФИКОВ
Лабораторная работа № 1
124
После того, как график уже построен, MATLAB
позволяет выполнить его форматирование или
оформление в нужном виде.

6. УСТАНОВКА ТИТУЛЬНОЙ НАДПИСИ


Для установки над графиком титульной надписи
используется команда
title(’string’) – установка титульной надписи на 2D-
и 3D-графиках, заданной строковой константой ’string’.

7. УСТАНОВКА ОСЕВЫХ НАДПИСЕЙ


Для установки надписей возле осей x, y и z
используются команды
xlabel(’string’) ylabel(’string’) zlabel(’string’)
Пример:
» % Построение 3D-фигуры
» %с титульной надписью и
» % надписью осей
»[X,Y]=meshgrid([-3:0.1:3]);
» Z=sin(X)./(X.^2+Y.^2+0.3);
» surfc(X,Y,Z)
» colormap(gray)
» shading interp
» colorbar
»title('График
трехмерной поверхности')
» xlabel('Ось X')
Лабораторная работа № 1 125
» ylabel('Ось Y')
» zlabel('Ось Z')

8. ВВОД ТЕКСТА В ЛЮБОЕ МЕСТО ГРАФИКА


Часто возникает необходимость добавления текста
в определенное место графика, например, для
обозначения той или иной кривой графика. Для этого
используется команда text:
text(X,Y,’string’) - добавляет в двумерный график
текст, заданный строковой константой ’string’, в позицию
начала текста с координатами (X, Y). Если X и Y заданы
как одномерные массивы, то надпись помещается во все
позиции [x(i), y(i)].
text(X,Y,Z’string’) – добавляет в трехмерный
график текст, заданный строковой константой ‘string’, в
позицию заданную
координатами X,Y и Z.
Пример:
» % Построение
графика с текстовой
надписью внутри окна
» x=-15:0.1:15;
» plot(x,sin(x)./(x+eps))
» xlabel('Ось X')
» ylabel('Ось Y')
» text(-5,-0.3,'График функции sin(x)/x')
Лабораторная работа № 1
126
Функция text возвращает вектор-столбец свойств
объекта text, поддерживаемого объектом axes.
Пары X, Y или X, Y, Z-тройки для 3D должны
следовать за параметрами/значениями пар (троек), чтобы
точно определить дополнительные свойства текста. Пары
X, Y или X, Y, Z-тройки для 3D могут быть опущены
полностью, а все свойства точно определяются при
использовании пар (троек) параметров/значений.
Используйте get(H), где H – текстовый указатель,
чтобы просмотреть список свойств текстовых объектов и
их текущие значения. Используйте set(H), чтобы
просмотреть список свойств текстовых объектов и
допустимые значения свойств.

9. ВВОД ТЕКСТА НА ГРАФИК С ПОМОЩЬЮ МЫШИ


gtext(’string’) – задает выводимый на график текст
в виде строковой константы ’string’ и выводит на график
перемещаемый мышью маркер в виде двух
перпендикулярных линий. Установив маркер (пересечение)
в нужное место, для вывода текста достаточно нажать
любую клавишу мышки.
gtext(C) – позволяет аналогичным образом
устанавливать несколько надписей из массива строковых
переменных C.
Пример:

Лабораторная работа № 1 127


» % 3D-график с надписью внутри окна,
вставляемой
» % с помощью мышки
» x=-15:0.1:15;
» plot(x,sin(x)./(x+eps))
» gtext('Функция sin(x)/x')
При исполнении этого примера вначале можно
увидеть построение графика функции, вторым этапом –
выведение перекрещивающихся перпендикулярных линий,
перемещаемых мышкой.
После того, как перекрестие установлено в
определенное место графика, достаточно нажать любую
клавишу, и на этом месте появится надпись.
Высокая точность позиционирования надписи и
быстрота процесса делает данный способ нанесения
надписей на графики одним из наиболее удобных

Лабораторная работа № 1
128
.

Лабораторная работа № 1 129


10. НАЛОЖЕНИЕ НЕСКОЛЬКИХ ГРАФИКОВ В ОДНОМ
ОКНЕ
Во многих случаях желательно построение ряда
наложенных друг на друга графиков в одном и том же окне.
Для этого используются варианты команды hold:
hold on – обеспечивает продолжение вывода
графиков в текущее графическое окно, что позволяет
добавлять последующие графики к уже существующему.
hold off – отменяет режим продолжения
графических построений.
hold – работает как переключатель,
последовательно включая режим продолжения
графических построений или отменяя его.
Пример:
»% построение трех
графиков в одном
»% окне с
применением команды hold
» x=-5:0.1:5;
» рlot(x,sin(x));
» hold on
» plot(sin(x),cos(x))
» plot(2*sin(x),cos(x))
» plot(4*sin(x),cos(x))
» hold off

Лабораторная работа № 1
130
11. ВЫВОД ПОЯСНЕНИЯ
Пояснение в виде отрезков линий со справочными
надписями, размещаемое внутри графика или около него,
называется легендой. Для создания легенды
используются различные варианты команды legend:
legend(string1,string2,string3…) – добавляет к
текущему графику легенду в виде указанных в списке
параметров строк.
legend(H,string1,string2,string3…) – помещает
легенду на график, используя определенные строки как
метки для соответствующих дескрипторов.
legend(AX,…) – помещает легенду на оси с
дескриптором AX.
legend(M) – помещает легенду по осям, используя
данные из матрицы M со строковыми данными.
legend OFF – устраняет ранее выведенную
легенду.
legend – возобновляет текущую легенду, если
присутствуют многочисленные легенды.
legend(legendhandle) – обновляет точно указанную
легенду.
legend(…,Pos) – помещает легенду в точно
определенное место, заданное позицией:
0 = лучшее место, выбираемое автоматически
1 = верхний правый угол

Лабораторная работа № 1 131


2 = верхний левый угол
3 = нижний левый угол
4 = нижний правый угол
-1 = справа от графика
Чтобы перенести легенду, установите на нее
курсор, нажмите левую клавишу мыши и, не отпуская
клавишу, перетащите легенду в необходимую позицию,
после чего отпустите клавишу.
Команда legend может использоваться с двумерной,
трехмерной и специальной графикой. Двойным щелчком
левой клавиши мыши можно вывести легенду на
редактирование.
Пример:
» % Пример построения графика с легендой в его
окне
» x=-2*pi:0.1*pi:2*pi;
» y1=sin(x);
» y2=sin(x).^2;
» y3=sin(x).^3;
» plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')
» legend('Функция 1','Функция 2','Функция 3');

Лабораторная работа № 1
132
1

Фу н к ц и я 1
0.8 Фу н к ц и я 2
Фу н к ц и я 3
0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-8 -6 -4 -2 0 2 4 6 8

Данный пример строит график трех функций с


легендой в поле графика.
Незначительная модификация команды legend
(применение дополнительного параметра –1) позволяет
строить график трех функций с легендой вне поля
графика.
Пример:
» % Пример построения графика с легендой вне его
окна
» x=-2*pi:0.1*pi:2*pi;
» y1=sin(x);
» y2=sin(x).^2;
» y3=sin(x).^3;
» plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')
» legend('Функция 1','Функция 2','Функция 3',-1);

Лабораторная работа № 1 133


1

0.8

0.6
Фу н к ц и я 1
Фу н к ц и я 2
0.4
Фу н к ц и я 3

0.2

-0.2

-0.4

-0.6

-0.8

-1
-8 -6 -4 -2 0 2 4 6 8

12. МАРКИРОВКА ОСЕЙ ГРАФИКОВ


Обычно графики выводятся без указания
наименований осей, но следующие команды меняют эту
ситуацию.
axis(Xmin,Xmax,Ymin,Ymax) - установка
масштабов по осям X и Y для текущего двумерного
графика.
axis(Xmin,Xmax,Ymin,Ymax,Zmin,Zmax) -
установка масштабов по осям X Y и Z для текущего
трехмерного графика.
axis auto – установка параметров осей по
умолчанию
axis tight – устанавливает соответствие длины осей
и максимального значения данных по осям.
axis off – убирает с осей их обозначения и маркеры.

Лабораторная работа № 1
134
axis on – восстанавливает введенные ранее
обозначения осей и маркеры.
Существует еще множество параметров этой
команды. О них можно узнать в файлах помощи и
справочной литературе.
Пример:
% Задание масштаба по осям X и Y
x=-5:0.1:5
plot(x,sin(x))
axis([-10 10 -1.5 1.5])
1.5

0.5

-0.5

-1

-1.5
-10 -8 -6 -4 -2 0 2 4 6 8 10

При построении графиков часто используют сетку.


Делается это командой:
grid on - добавляет сетку к текущему графику.
grid off - отключает сетку.
grid - последовательно включает и выключает
сетку.

Лабораторная работа № 1 135


13. РАЗБИЕНИЕ ГРАФИЧЕСКОГО ОКНА
Бывает, что в одном окне нужно расположить
несколько окон с различными графиками без наложения
друг на друга. Для этого применяются варианты команды
subplot:
subplot – создает новые объекты axes (подокна).
subplot(m,n,p) или subplot(mnp) - разбивает
графическое окно на mxn подокон, при этом m – число
подокон по горизонтали, n – число подокон по вертикали и
p – номер окна, в которое будет выводиться текущий
график.
subplot(’position’,[left bottom width height]) –
создает подокно с нормализованными координатами (в
пределах от 0,0 до 1,0).
subplot(111) и clf reset – удаляют все подокна и
возвращают графическое окно в обычное состояние.

Пример:
» % Построение в одном окне четырех
» % графиков в разных подокнах

» x=-5:0.1:5;
» subplot(2,2,1),plot(x,sin(x))
» subplot(2,2,2),plot(sin(5*x),cos(2*x+0.2))
» subplot(2,2,3),contour(peaks)

Лабораторная работа № 1
136
» subplot(2,2,4),surf(peaks)

Следует отметить, что для всех графиков возможна


индивидуальная установка дополнительных объектов,
например, титульных надписей, надписей по осям и так
далее.

14. МАРКИРОВКА ЛИНИЙ РАВНОГО УРОВНЯ


Контурные графики плохо приспособлены для
количественных оценок, если их линии не маркированы. В
качестве маркеров используются крестики, рядом с
которыми располагаются значения высот. Для
маркирования контурных графиков используются команды
группы clabel:
clabel(CS,H) – маркирует контурный график с
данными в контурной матрице CS высотами, заданными в
массиве H. Метки вращаемы и вставлены внутри
контурных линий.

Лабораторная работа № 1 137


clabel(CS,H,V) – маркируется только тот контурный
уровень, который указан в векторе V. По умолчанию
маркируются все известные контуры. Позиции меток
располагаются случайным образом.
clabel(CS,H,’manual’) – маркирует контурные
графики с установкой положения с помощью мыши.
Нажатие клавиши Enter или клавиши мыши завершает
установку маркера. При отсутствии мыши для перехода с
одной линии уровня к другой используется клавиша
пробела, а для перемещения надписи используются
клавиши перемещения курсора.
clabel(CS), clabel(CS,V), clabel(CS,’manual’) –
дополнительные
возможности маркировки
контурных графиков.
Пример:

» % Построение
контурного графика с
маркированными линиями

» [X,Y]=meshgrid([-3:0.1:3]);
» Z=sin(X)./(X.^2+Y.^2+0.3);
» C=contour(X,Y,Z,10);

Лабораторная работа № 1
138
» colormap(cool)
» clabel(C)
3

2
-0.0792

0.238

-0.555
-0.713 0.0792
-0.3960.555
0 -0.238
0.396 0.713

-1

-2

-0.0792

0.0792
-3
-3 -2 -1 0 1 2 3

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


1. Куда выводятся графики, созданные в среде
MATLAB?
2. Функция plot.
3. Варианты использования функции plot.
4. Каким способом задаются цвет линии, тип линии и
тип точки?
5. Как создать график в логарифмическом масштабе
(полулогарифмическом масштабе)?
6. Для чего нужна команда logspace?
7. Как создать график в полярной системе координат?
8. Как построить угловую гистограмму?
9. Как построить контурные графики?
10. Как вывести титульные надписи?
11. Как сделать осевые надписи?
12. Как ввести текст в любое место графика?
13. Как ввести текст с помощью мыши?
14. Как расположить несколько графиков в одном окне?
15. Как вывести легенду?
16. Как установить масштаб по осям?
17. Как включить и выключить сетку?
Лабораторная работа № 1 139
18. Как вывести несколько графиков в одном
графическом окне без наложения?
19. Как промаркировать линии разного уровня?

Приложение 5.2

КОНТРОЛЬНЫЙ ПРИМЕР
28. Запустите MATLAB.
29. Мы уже знакомы с функцией plot, с помощью
которой строили графики различных функций.
Изучим ее более детально. Введем в командной
строке следующее:
» x=-pi:0.1:pi;
» y=sin(x);
» plot(x,y)
Результатом будет график функции sin(x), который
нарисован голубой сплошной линией.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

Как вы уже знаете, такие атрибуты как цвет линии,


тип линии и тип точки можно изменять.
Изменим тип линии. Для этого введем:
Лабораторная работа № 1
140
» plot(x,y,'--')
Результатом будет штриховая линия.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

Изменим, тип точки. Для этого введем:


» plot(x,y,'x')
Получим в узловых точках маркер в виде
крестика.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3

Иногда нужно рисовать график сплошной линией,


но при этом точки построения отметить маркером.
Это сделать просто, введите:
» plot(x,y,'+k',x,y,'k')
Лабораторная работа № 1 141
Получили график сплошной черной линией с
маркерами черного цвета.

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3

30. Для удобства на графике можно включить сетку.


Введем:
» grid on
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3

А если введем:
» grid off
то сетка выключится.

Лабораторная работа № 1
142
31. Чтобы вывести заголовок графика, введем
следующую команду:
title('График функции sin(x)')
и нажмем Enter. Получим следующее:
Г р а фи к фу н к ц и и sin(x)
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

32. Теперь подпишем оси. Введем команды:


» xlabel('Ось X')
» ylabel('Ось Y')
Получим:

Лабораторная работа № 1 143


Г р а фи к фу н к ц и и sin(x)
1

0.8

0.6

0.4

0.2

Ос ь Y
0

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4
Ос ь X

33. Часто бывает нужно расположить два графика в


одном графическом окне. Для этого нужно
использовать команду hold on. Введем следующее:
» plot(x,y,'-k')
» y1=cos(x);
» hold on
» plot(x,y1,'-.k')
» plot(x,y1,'ok')
» plot(x,y,'xk')
» grid on
» xlabel('Ось X')
» ylabel('Ось Y')
» title('Графики функций sin(x) и cos(x)')
Дадим пояснения. Сначала функция sin(x) была
нарисована черной сплошной линией, затем была
вычислена функция cos(x). После этого черным
штрих–пунктиром построена функция cos(x), обе
функции промаркированы: sin(x)–черным крестиком,
Лабораторная работа № 1
144
а cos(x)–черным кружочком. Была включена сетка,
подписаны оси и введено название графика.
Г р а фи к и фу н к ц и й sin(x) и cos(x)
1

0.8

0.6

0.4

0.2

Ос ь Y
0

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4
Ос ь X

34. Если аргумент функции изменяется в широком


диапазоне, то графики лучше строить в
логарифмическом масштабе. Введите:
» x=logspace(-3,2);
» y=x.^2;
» loglog(x,y)
4
10

2
10

0
10

-2
10

-4
10

-6
10
-3 -2 -1 0 1 2
10 10 10 10 10 10

Мы построили график функции у=х2 в


логарифмическом масштабе при изменении х в
Лабораторная работа № 1 145
диапазоне от 0,001 до 100, что в обычном
масштабе сделать достаточно трудно.
Согласитесь, график функции у=х2 в виде прямой
выглядит достаточно необычно, но это связано с
логарифмическим масштабом. Полулогарифмический
масштаб дает более знакомый вид. Введите:
» x=logspace(-3,2,10);
» y=x.^2;
» semilogx(x,y,'k',x,y,'xk')
» grid on
10000

9000

8000

7000

6000

5000

4000

3000

2000

1000

0
-3 -2 -1 0 1 2
10 10 10 10 10 10

Мы получили график той же функции, но ось х


имеет логарифмический масштаб, а ось у обычный
линейный. Количество точек расчета равно 10. Линии
сетки включены.

35. Кроме линейных и логарифмических систем


координат существует полярная система
координат. Координаты точки в такой системе
Лабораторная работа № 1
146
задаются через угол поворота и длину радиус-
вектора. Введем следующее:
» t=0:0.1:2*pi;
» R=sin(t).^2;
» polar(t,R)
Получим график функции R=sin2(t) в полярной
системе координат. Сравните то же самое в линейной
системе координат.
» plot(t,R)
90
0.99985
120 60 1

0.74988 0.9

150 0.49992 30 0.8

0.7
0.24996
0.6

180 0 0.5

0.4

0.3
210 330
0.2

0.1
240 300
0
270 0 1 2 3 4 5 6 7

36. Завершите работу в MATLAB для этого в меню


Файл выполните команду Выход из MATLAB.

Приложение 5.3
Индивидуальные задания

1. В соответствии с вариантом вывести в одном


окне графики функций f(x) и g(x). f(x) вывести сплошной
линией, а g(x) вывести штриховой линией.
2. Промаркировать оси.
3. Для четных вариантов включить сетку.
Лабораторная работа № 1 147
4. В верхнем правом углу окна вывести легенду.
5. Вывести заголовок графика в виде «Графики
функций f(x) и g(x)»

f(x) g(x)
интерва
№ цвет вид цвет
вид функции л
линии функции линии
x x2 x [-2  : 2 
1. sin x  cos желтая голубая
2 6 ]
3
sin x  sin( 3  x) фиолет x  4 x  3 [-2  : 2 
2. красная
3 овая 200 ]
1
 x5  4x  3 [-2  : 2 
3. 60cosx голубая зеленая
x4 8 ]
 sin(2x 3)  4
sin 4 x   6   x2 x [-2  : 2
4. красная синяя
 cos2 x   6  6 ]
1 3
x  4x  3 [-2  : 2
5.  sin x зеленая черная
200 cos x 200 ]
sin x  cos x 5
x  4x  3 [-2  : 2
6. Синяя желтая
x  10 x4  8 ]
x2 x фиолето- [-2  : 2
7. sin x  cos x черная
6 вая ]
3
x  4x  3 [-2  : 2
8. cos 2 x  cos x  2 желтая голубая
200 ]
sin x x
 sin 2 фиолет x 5  4 x  3 [-2  : 2
9. 200 cos x 2 красная
овая x4  8 ]
x2 x [-2  : 2
10. x sin x голубая зеленая
6 ]

Лабораторная работа № 1
148
x x3  4x  3
11. sin x  cos красная синяя [0: 4  ]
2 200
sin x  sin( 3  x) 5
x  4x  3
12. зеленая черная [0: 4  ]
3 x4  8
1
 x2 x
13. 60cosx синяя желтая [0: 4  ]
 sin(2x 3)  4 6
sin4 x   6  x 3  4 x  3 фиолето-
14. черная [0: 4  ]
 cos2 x   6 200 вая
1 x 5  4x  3
15.  sin x желтая голубая [0: 4  ]
200 cos x x4  8
sin x  cos x фиолет x2 x
16. красная [0: 4  ]
x 3 овая 6
x3  4x  3
17. sin x  cos x голубая зеленая [0: 4  ]
200
x 5  4x  3
18. cos 2 x  cos x  2 красная синяя [0: 4  ]
x4  8
sin x x
 sin 2 x2 x
19. 200 cos x 2 зеленая черная [0: 4  ]
6
синяя x3  4x  3
20. x sin x желтая [0: 4  ]
200
x x 5  4 x  3 фиолето-
21. sin x  cos черная [-  : 3  ]
2 x4  8 вая
sin x  sin( 3  x) x2 x
22. желтая голубая [-  : 3  ]
3 6
1
 фиолет x 3  4 x  3
23. 60cosx красная [-  : 3  ]
овая 200
 sin(2x 3)  4

Лабораторная работа № 1 149


sin4 x   6  x 5  4x  3
24. голубая зеленая [-  : 3  ]
 cos2 x   6 x4  8
1 x2 x
25.  sin x красная синяя [-  : 3  ]
200 cos x 6
sin x  cos x x3  4x  3 [-  : 3  ]
26. зеленая черная
x  10 200
x 5  4x  3
27. sin x  cos x синяя желтая [-  : 3  ]
x4  8
x2 x фиолето- [-  
28. cos 2 x  cos x  2 черная :3 ]
6 вая
sin x x
 sin 2 x3  4x  3
29. 200 cos x 2 голубая красная [-  : 3  ]
200

x 5  4x  3
30. x sin x зеленая желтая [-  : 3  ]
x4  8

ЛАБОРАТОРНАЯ РАБОТА № 6
ТРЕХМЕРНАЯ ГРАФИКА В СРЕДЕ MATLAB
1. ЦЕЛЬ РАБОТЫ
Получить представление о создании трехмерных
объектов в среде MATLAB.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Построить трехмерный график функции.
Выполняется в соответствии с заданием преподавателя из
приложения № 6.3.

Лабораторная работа № 1
150
3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.
Работа выполняется в порядке, указанном на
странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
10. Основная: [3], [7], [10], [11], [12], [13];
11. Дополнительная: [14].

Приложение 6.1

ТЕОРИЯ ВОПРОСА “Трехмерная графика в среде Matlab”


1. УСТАНОВКА ПАЛИТРЫ ЦВЕТОВ
Поскольку графика MATLAB обеспечивает
получение цветных изображений, в ней есть ряд команд по
управлению цветом и различными световыми эффектами.
Среди них важное место занимает установка палитры
Лабораторная работа № 1 151
цветов. Она задается однострочной матрицей MAP из трех
элементов, определяющих значения интенсивности
красного (red), зеленого (green) и синего (blue) цветов. Их
интенсивность задается в относительных единицах от 0.0
до 1.0. Например:
[0 0 0] задает черный цвет, [1 1 1] – белый цвет, [0
0 1] – синий цвет. При изменении интенсивности цветов в
указанных пределах возможно задание любого цвета.
Таким образом, цвет соответствует общепринятому
формату RGB.
Для установки палитры цветов применяются
варианты команды colormap:
colormap(’default’) – устанавливает палитру по
умолчанию, при которой распределение цветов
соответствует радуге (красный, желтый, зеленый, голубой,
синий, фиолетовый).
colormap(MAP) – устанавливает заданную MAP-
палитру.
C=colormap – создает матрицу палитры цветов C.
М-файл c именем colormap устанавливает
свойства цветов для текущей фигуры.
Команда help graph3d наряду с прочим выводит
полный список характерных палитр, используемых
графической системой MATLAB:
hsv – цвета радуги.

Лабораторная работа № 1
152
hot – чередование черного, красного, желтого и
белого цветов.
gray – линейная палитра в оттенках серого цвета.
bone – серые цвета с оттенком синего.
copper – линейная палитра с оттенками меди.
pink – розовые цвета с оттенками пастели.
white – палитра белого цвета.
flag – чередование красного, белого, синего и
черного цветов.
lines – палитра с чередованием цветов линий.
colorcube – расширенная палитра RGB.
jet – разновидность палитры HSV.
prism – призматическая палитра цветов.
cool – оттенки голубого и фиолетового цветов.
autumn – оттенки красного и желтого цветов.
spring – оттенки желтого и фиолетового цветов.
winter – оттенки синего и зеленого цветов.
summer – оттенки зеленого и желтого цветов.

2.СЕТОЧНЫЕ 3D-ГРАФИКИ С ФУНКЦИОНАЛЬНОЙ


ОКРАСКОЙ
Наиболее представительными и наглядными
являются сеточные графики трехмерных поверхностей с
заданной функциональной окраской. В названии этих
команд присутствует слово mesh.

Лабораторная работа № 1 153


me
esh(X,Y,Z,C
C) – выв
водит в гграфическо
ое окно
сетчатую поверхностть Z(X,Y) с цветами уузлов повер
рхности,
заданных массивом C.
mesh(X,Y
Y,Z) – анало
ог предшес
ствующей ккоманды при C=Z,
при это
ом использзуется функциональна а, при
ая окраска
котторой цвет задается высотой
в по
оверхности
и.
имер:
При
» % Пример построения
п я 3D-поверххности с
функциона
альной заккраской яче
еек
» [X
X,Y]=meshg
grid([-3:0.5:3]);
»Z
Z=X.^2+Y.^2
2;
»m
mesh(X,Y,Z))

Лабораторная рработа № 1
154
Фун
нкция pea
aks(N) воззвращает матричный
й образ
поверхноссти с рядо
ом пиков и впадин . Такую функцию
ф
удобно исспользоватть для про
оверки раб
боты граф
фических
команд тр
рехмерной графики.
При
имер:
» % Пример ния поверххности, описанной
р построен
функцией peaks
» z=peaks(25));
»m
mesh(z)

обенно наглядное пр
Осо редставлен
ние о трех
хмерных
поверхносстях д
дают графики,
г исполь
ьзующие
функциона
альную за
акраску ячеек сеток.. Наприме
ер, цвет
окраски п
поверхностти z(x,y) может бы
ыть поста
авлен в
Лабораторная рработа № 1 155
соответствие с высотой z поверхности, с выбором для
малых высот темных тонов, а для больших – светлых.
Для построения таких поверхностей используются
варианты команды класса surf(…):
surf(X,Y,Z,C) – строит цветную параметрическую
поверхность по данным матриц X, Y и Z и цветом,
задаваемым массивом C.
surf(X,Y,Z) – аналогична предшествующей команде,
где C=Z, так что задается высотой той или иной ячейки 3D-
поверхности.
surf(x,y,Z) и surf(x,y,Z,C) – с двумя векторными
аргументами заменяют первые два матричных аргумента и
должны иметь длину length(x)=n и length(y)=m, где
[m,n]=size(Z). В этом случае вершины областей
поверхности представлены тройками (x(j), y(i), Z(i,j)). Где x
соответствует столбцам Z, а y соответствует строкам.
surf(Z) и surf(Z,C) – используют x=1:n и y=1:m. В
этом случае высота Z – однозначно определенная
функция, заданная геометрически прямоугольной сеткой.
surf возвращает свойства объекта surface.
Команды axis, caxis, colormap, hold, shading и
viem задают координатные оси и свойства поверхности,
которые могут использоваться для большей
эффективности показа поверхностей и фигуры.
Пример:

Лабораторная работа № 1
156
» % Посстроение объемной
й парабо
олы с
альной окр
функциона раской ячее
ек
» [X
X,Y]=meshg
grid([-3:0.15
5:3]);
»Z
Z=X.^2+Y.^2
2;
» surf(X,Y,Z)

ожно заметтить, что, благодаря


Мо я функцион
нальной
окраске, гграфик пов
верхности гораздо
г бо
олее выраззителен,
чем при по
остроении без такой окраски (п ричем, даж
же в том
случае, ко
ода цветно
ой графикк печатаетсся в черно
о-белом
виде).
% Построени
ие 3D-пове
ерхности с функцион
нальной
окраской я
ячеек типа
а grayscale и выводом
м шкалы цветовых
оттенков с плавными
и перехода
ами
Лабораторная рработа № 1 157
[X,,Y]=meshgrrid([-3:0.1:3]);
Z=
=sin(X)./(X.^^2+Y.^2+0.3
3);
surf(X,Y,Z)
ol)
colormap(coo
shading interp
p
colorbar

мере кома
В этом прим анда colorrmap(cool) задает
окраску ттонами си
ине-фиолетовых цве
етов, а команда
к
shading interp обе
еспечиваетт устране
ение изобр
ражения
сетки и задает интерполяц
и цию для оттенков цветов
объемной поверхноссти.
Обычно применение интерполя ции для окраски
ым поверх
придает трехмерны хностям и фигурам
м более
Лабораторная рработа № 1
158
реалистичный вид, но фигуры каркасного типа дают более
точные количественные данные о каждой точке.

3. ПОСТРОЕНИЕ 3D-ПОВЕРХНОСТИ И ЕЕ ПРОЕКЦИИ


Для повышения представительности 3D-
поверхностей можно использовать дополнительный
график линий равного уровня, получаемый путем проекции
поверхности на опорную плоскость графика (под
поверхностью). Для этого используется команда:
surfc(…) – аналогична команде surf, но
обеспечивает дополнительное построение контурного
графика проекции фигуры на опорную плоскость.
Пример:
» % Построение графика 3D-поверхности и ее
проекции на опорную плоскость
» [X,Y]=meshgrid([-3:0.1:3]);
» Z=sin(X)./(X.^2+Y.^2+0.3);
» surfc(X,Y,Z)

Лабораторная работа № 1 159


Расссмотрим еще
е один пример
п при
именения команды
к
surfc для построения поверхно
ости, описы
ываемой функцией
ф
ем для окраски интер
peaks c применение рполяции цветов
ц и
ием шкалы цветов:
построени
При
имер:
» % Построе
ение фигу
уры peaks с интерпо
оляцией
цветов и и
их шкалой
» [X grid([-3:0.1:3]);
X,Y]=meshg
»Z
Z=peaks(X,Y
Y);
» surfc(X,Y,Z)
» shading interp
» colorbar

Лабораторная рработа № 1
160
И зздесь нетр
рудно заметить, что
о график сложных
с
поверхносстей с яцией
интерполя цве
етовых оттенков
о
выглядит более реал
листичным
м, чем граф
фик сеточно
ого вида
и график б
без интерполяции цве
етов.

? ВОПРООСЫ ДЛЯ САМОКОН


С НТРОЛЯ
1. Чтоо представляют собойй сеточные е графики
тре
ехмерной поверхност
п и, и какой ккомандой они
о
созздаются?
2. Дляя чего пред
дназначена
а функцион нальная окраска
гра
афика?
3. С п
помощью, какой
к функции строиттся 3D-
повверхность??
4. Каккой команд ится шкала цветов?
дой выводи

Приложе
ение 6.2
Лабораторная рработа № 1 161
КОННТРОЛЬНЫ
ЫЙ ПРИМЕ
ЕР
37. Зап
пустите MA
ATLAB.
38. Посстроим тре
ехмерную параболу
п z =x2+y2. Для
я этого
сна
ачала сгене
ерируем дв
вухмерную сетку, где x и y
изм е от –2 до 2 с шагом 0,5:
меняются в диапазоне
» [xx,y]=meshgrid([-2:0.5:2
2]);
Расссчитаем функцию
ф =x2+y2:
z=
» z=x.^2+y.^2;;
И, н
наконец, по
остроим ее
е:
»m
mesh(x,y,z)

Для
я проверки
и работы графически
г их команд удобно
цией peaks((N). Эта фуункция генерирует
пользоватться функц
двухмернуую матриц
цу nxn, в которой зн
начения вззяты по
закону Гаууссовского распредел
ления. Введ
дем:
» z=peaks(10));
»m
mesh(z)
Пол
лучим сетч
чатый граф
фик с пикам
ми и впадин
нами:

Лабораторная рработа № 1
162
39. Кро
оме сеточн
ных графикков мы мож
жем использовать
пов
верхности с функцион
нальной за
акраской. Введите:
» surf(z)
лучим пове
Пол ерхность:

40. Исп
пользовани
ие команды
ы shading in
nterp позво
оляет
усттранить изо
ображение сетки:
» shading interp

Лабораторная рработа № 1 163


41. Цве
етовую окр
раску можно менять. Д
Для этого
исп
пользуют ко
оманду colormap.
» colormap(gra
ay)
ы использо
Мы овали лин
нейную пал
литру в оттенках
о
серого.

42. Исп
пользовани
ие команды
ы colorbar п
позволяет
покказать, как зависит цв
вет окраски
и от высоты
ы нашей
пов
верхности.
» colorbar

Лабораторная рработа № 1
164
43. Зав
вершите ра
аботу в MA
ATLAB. Для
я этого в ме
еню
Файл выполните команд
ду Выход и
из MATLAB..

Приложе
ение 6.3

ВИДУАЛЬН
ИНДИВ НОЕ ЗАДААНИЕ
Посстроить трехмерны
ый граф ик функкции в
соответствии с вариантом. Все графикки должны быть с
альной оккраской. Координатн
функциона К ные оси должны
быть про
омаркирова
аны. Цветовая гам
мма подб
бирается
самостояттельно.

интерввал тип
№ функци
ия
x y рафика
гр
1 z  x 2  y 2  2 xy [0; 4] [[-2; 3] сетточный
z  y sin x  x sin y повеерхност
2 [-2; 2] [[-2; 2]
ь
3  
z  y 3  3xy  x 2 cos(xy) [-3;3] [[-3;3] сетточный
x y пове
ерхност
4 z  [-4; 4] [[-4; 4]
y  12 x  12 ь
5 z  y sin x [-4; 4] [[0; 3] сетточный

Лабораторная рработа № 1 165


sin y поверхност
6 z [0; 1] [-3; 3]
cos x ь
y
7 ze x [-4; 4] [0; 3] сеточный
z  x2  x  y2  y поверхност
8 [-5; 5] [-5; 5]
ь
9 z  e  x sin y [0; 4] [-3; 3] сеточный
z  y sin 3 x  x sin 5 x поверхност
10 [-2; 2] [-2; 2]
ь
2 2 поверхност
11 z  x  y  2 xy [0; 4] [-2; 3]
ь
12 z  y sin x  x sin y [-2; 2] [-2; 2] сеточный
 3
13 z  y  3xy  x cos( xy)
2
 [-3;3] [-3;3]
поверхност
ь
x y
14 z   [-4; 4] [-4; 4] сеточный
y  12 x  12
z  y sin x поверхност
15 [-4; 4] [0; 3]
ь
sin y
16 z  [0; 1] [-3; 3] сеточный
cos x
y поверхност
17 z  e x [-4; 4] [0; 3]
ь
18 z  x 2  x  y 2  y [-5; 5] [-5; 5] сеточный
x поверхност
19 z  e sin y [0; 4] [-3; 3]
ь
20 z  y sin 3 x  x sin 5 x [-2; 2] [-2; 2] сеточный
2 2 поверхност
21 z  x  y  2 xy [-5; 3] [0; 5]
ь
22 z  y sin x  x sin y [-4; 2] [-4; 2] сеточный
 3
23 z  y  3xy  x cos( xy)
2
 [-1;3] [-3; 1]
поверхност
ь
x y
24 z   [-6; 4] [-4; 6] сеточный
y  12 x  12
z  y sin x поверхност
25 [-4; 4] [1; 4]
ь
Лабораторная работа № 1
166
sin y
26 z  [1; 2] [0; 5] сеточный
cos x
27 z  e  y x [-1; 6] [0; 2] сеточный
2 2 поверхност
28 z  x  x  y  y [0; 7] [-7; 0]
ь
29 z  e  x sin y [0; 4] [-3; 3] сеточный
z  y sin 3 x  x sin 5 x поверхност
30 [-2; 2] [-2; 2]
ь

ЛАБОРАТОРНАЯ РАБОТА № 7
СОЗДАНИЕ М-СЦЕНАРИЕВ В СРЕДЕ MATLAB

1. ЦЕЛЬ РАБОТЫ
Ознакомиться с понятием М–сценария и его
структурой. Научиться создавать М–сценарии.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Создать М-сценарий построения графика функции.
Выполнить в соответствии с вариантом заданным
преподавателемиз приложения № 7.3.

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.


Работа выполняется в порядке, указанном на
странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
12. Основная: [3], [7], [10], [11], [12], [13];
13. Дополнительная: [14].

Лабораторная работа № 1 167


Приложение 7.1

ТЕОРИЯ ВОПРОСА " Создание М-сценариев в среде


MATLAB”

Работа в программном режиме не является


программированием. Программированием будет задание
последовательности действий, записанное в виде М-
файла. Для создания М-файлов может использоваться как
встроенный редактор, так и любой редактор,
поддерживающий коды ASCII. Подготовленный и
записанный на диск М-файл становится частью системы и
его можно вызывать как из командной строки, так и из
другого М-файла. Есть два типа М-файлов: файл-
сценарий и файл-функция. В процессе своего создания
они проходят синтаксический контроль с помощью
встроенного в систему MATLAB редактора и отладчика М-
файлов.

1.СТРУКТУРА И СВОЙСТВА ФАЙЛА-СЦЕНАРИЯ


Файл-сценарий, именуемый также Script-файлом,
является просто записью серии команд без входных и
выходных параметров. Он имеет следующую структуру:

%Основной комментарий
%Дополнительный комментарий
Тело файла с любыми выражениями
Лабораторная работа № 1
168
Свойства файлов-сценариев:
 они не имеют входных и выходных
аргументов
 работают с данными из рабочей области
 в процессе выполнения не компилируются
 представляют собой зафиксированную в
виде файла последовательность операций,
полностью аналогичную той, что
используется в сессии.

Основной комментарий выводится при исполнении команд


lookfor и help имя каталога. Полный комментарий
выводится при исполнении команды help имя файла.

Пример:
%Plot with color red
%Строит график синусоиды линией красного цвета
%с выведенной масштабной сеткой в интервале
[xmin,xmax]

x=xmin:0.1:xmax;
plot(x,sin(x),'r')

grid on

Лабораторная работа № 1 169


Пусть файл записан под именем f1. В командном
окне задаются конкретные значения для xmin и xmax.
Затем запускается файл и получаем рисунок.
Комментарий вызывается командой help f1. Командой type
f1 можно вывести полный листинг файла.
Переменные, используемые в файлах–сценариях,
являются глобальными, то есть они действуют одинаково в
командах сессии и внутри программного блока, которым
является Файл-сценарий.

2.СТРУКТУРА И СВОЙСТВА M-ФАЙЛОВ-ФУНКЦИЙ.


M-файл-функция является типичным объектом
языка программирования системы MATLAB.
Одновременно файл является полноценным модулем с
точки зрения структурного программирования, поскольку
содержит входные и выходные параметры и использует
Лабораторная работа № 1
170
аппарат локальных переменных. Структура модуля с
одним выходным параметром выглядит следующим
образом:
function var=f_name(Список_параметров)
% Основной комментарий
% Дополнительный комментарий
Тело файла с любыми выражениями
var=выражение

M-файл-функция имеет следующие свойства:

 он начинается с объявления типа function,


после которого указывается имя переменной var –
выходного параметра, имя самой функции и список
ее входных параметров;

 функция возвращает свое значение и может


использоваться в виде name(список параметров)
в математических выражениях;

 все переменные, имеющиеся в теле файла-


функции, являются локальными, то есть действуют
только в пределах тела функции;

 файл-функция является самостоятельным


программным модулем, который общается с
другими модулями через свои входные и выходные
параметры;

Лабораторная работа № 1 171


 правила вывода комментариев те же, что у
файлов-сценариев;

 файл-функция служит средством расширения


системы MATLAB;

 при обнаружении файла функции он


компилируется и затем исполняется, а созданные
машинные коды хранятся в рабочей области
системы MATLAB.

Последняя конструкция var=выражение вводится, если


требуется, чтобы функция возвращала результат
вычислений. Если M-файл-функция завершается строкой с
точкой с запятой (;), то для возврата значения функции
используется программный оператор return.
Если выходных параметров больше, то они указываются в
квадратных скобках после слова function. При этом
структура модуля имеет вид:
function[ var1,var2,…]=f_name(Список_параметров)
% Основной комментарий
% Дополнительный комментарий
Тело файла с любыми выражениями
var1=выражение
var2=выражение
…………….
Эту функцию нельзя использовать непосредственно
в математических выражениях, поскольку она возвращает
не единственный результат, а множество результатов – по

Лабораторная работа № 1
172
числу выходных параметров. Поэтому данная функция
используется как отдельный результат программ вида:

function[ var1,var2,…]=f_name(Список_параметров)

После применения переменные выхода var1,


var2,… становятся определенными и их можно
использовать в последующих математических выражениях
и иных сегментах программы. Если функция используется
в виде f_name(Список_параметров), то возвращается
значение только первого выходного параметра –
переменной var.

3. ВЫВОД СООБЩЕНИЯ ОБ ОШИБКЕ


Часто в ходе вычислений возникают ошибки. При
появлении ошибки вычисления могут завершиться
досрочно с выводом сообщения об ошибке. Однако, не все
ошибки вызывают остановку вычислений, некоторые
сопровождаются только выдачей предупреждения.
Такие ситуации должны учитываться, отмечаться
как ошибочные и по возможности устраняться. Для вывода
сообщения об ошибке служит команда:

error(’Сообщение об ошибке’)
при исполнении которой вычисления прерываются,
и выдается сообщение об ошибке, заданное в апострофах.
Пример:
function f=sd(x)

Лабораторная работа № 1 173


if x==0 error(' Ошибка - деление на 0'),end
f=sin(x)./x
Для выявления ситуации об ошибке использован
оператор условного перехода. Он будет описан ниже.
Результат выполнения этой функции:

» sd(1)
f=
0.8415
ans =
0.8415
» sd(0)
??? Error using ==> sd
Ошибка - деление на 0
»
Если остановка программы при появлении ошибки
не желательна, то может использоваться команда вывода
предупреждающего сообщения.

warning(‘ предупреждающее сообщение’).


Эта команда выводит стоящее в апострофах
сообщение, но не препятствует дальнейшей работе
программы.
В общем случае программы могут содержать
обработчики ошибок, направляющие вычисление в нужное
русло. Описание таких средств можно найти в справочных
пособиях по MATLAB.

Лабораторная работа № 1
174
4. ДИАЛОГОВЫЙ ВВОД-ВЫВОД
Для ввода используется функция:

переменная=input(‘текст’)
При выполнении этой программы вначале
выводится запрос в виде строки, затем происходит
останов работы программы и ожидается ввод значения
переменной. Ввод как обычно подтверждается нажатием
Enter.
Пример:

%вычисление длинны окружности


r=input('введите радиус окружности R=')
S=2*pi*r
При выполнении этой программы вначале
выводится запрос в виде строки, затем ожидается ввод
значения радиуса, затем происходит вычисление и
выводится длина окружности S.

» введите радиус окружности R=5


r=
5
S=
31.4159
С помощью команды

disp(‘строка символов‘) или disp (переменная)


можно вывести надпись или значение переменной.

Пример:

Лабораторная работа № 1 175


%вычисление длины окружности
r=input('введите радиус окружности R=');
disp('длина окружности');disp(2*pi*r)

Это другой вариант предыдущей программы.


В окне управления работа этой программы будет
выглядеть так:

» введите радиус окружности R=6


длинна окружности
37.6991
5. УПРАВЛЯЮЩИЕ СТРУКТУРЫ.
Помимо программ с линейной структурой,
инструкции которых исполняются строго по порядку,
существует множество программ, структура которых
нелинейна. При этом ветви программ могут выполняться в
зависимости от определенных условий. Для создания
таких программ необходимы специальные управляющие
структуры.

6.УСЛОВНЫЙ ОПЕРАТОР.
Условный оператор if в общем виде записывается
следующим образом:
if условие
инструкции1
elseif условие
инструкции2
Лабораторная работа № 1
176
else
инструкции3
end
Условия записываются в виде:

выражение1 оператор_отношения выражение2


В качестве операторов отношения используются
следующие операторы:

==,<,>,<=,>= или ~=
Допускает несколько частных вариантов условного
оператора:

if условие инструкции end


Пока условие верно (возвращает логическую 1),
выполняются инструкции. При этом оператор end
указывает на конец перечня инструкций. Инструкции в
списке разделяются запятой или точкой с запятой. Если
условие не выполняется (возвращает логический 0), то
инструкции тоже не выполняются.

if условие инструкции1 else инструкции2 end


выполняет инструкции1, если условие истинно и
инструкции2 если оно ложно.

Пример:
x=input(' введите х=');
if x==0 f=sin(x);else f=sin(x)/x;end;
disp(f)
введите х=1
0.8415

Лабораторная работа № 1 177


введите х=0
0
7. ЦИКЛЫ ТИПА FOR-END.
Циклы типа for-end обычно используются для
организации вычислений с заданным числом
повторяющихся циклов. Конструкция такого цикла имеет
вид:

for var=Выражение, Инструкция,..., Инструкция end

Выражение чаще всего записывается в виде s:d:e,


где s – начальное значение переменной цикла variable, d
– приращение этой переменной и e – конечное значение
управляющей переменной, при достижении которого цикл
завершается. Возможна запись в виде: s:e (в этом случае
d=1). Список выполняемых в цикле инструкций
завершается оператором end.
Пример:

» for i=1:5 i^2, end


ans =
1
ans =
4
ans =
9
ans =

Лабораторная работа № 1
178
16
ans =
25
» for x=0:.25:1 x^2, end
ans =
0

ans =
0.0625
ans =
0.2500
ans =
0.5625
ans =
1
Оператор break может использоваться для
досрочного выхода из цикла. Как только он встречается в
программе, цикл прерывается.
Может применяться структура вложенных циклов:

for i=1:3
for j=1:3
A(i,j)=i+j;
end
end
В результате исполнения этого цикла (файл
for_1.m) формируется матрица A:
Лабораторная работа № 1 179
» for_1
»A
A=
2 3 4
3 4 5
4 5 6
Следует отметить, что формирование матриц с
помощью оператора : (двоеточие) обычно занимает
намного меньше времени, чем с помощью цикла. Однако
применение цикла нередко оказывается более наглядным
и понятным.
MATLAB допускает использование в качестве
выражения переменной цикла массив A размера mxn. При
этом цикл выполняется столько раз, сколько столбцов в
массиве A, и на каждом цикле переменная var
представляет вектор, соответствующий текущему столбцу
вектора A:

» A=[1 2 3;4 5 6]
A=
1 2 3
4 5 6
» for var=A; var, end
var =
1
4

Лабораторная работа № 1
180
var =
2
5
var =
3
6
8. ЦИКЛЫ ТИПА WHILE.
Цикл типа while выполняется до тех пор, пока
выполняется Условие:

while Условие
Инструкции
End

Для досрочного выхода из цикла используется


оператор break.
Пример:

% Вычисление длины окружности с диалоговым


вводом радиуса
r=0;
while r>=0,
r=input('Введите радиус окружности r=');
if r>=0 disp('Длина окружности l-'); disp(2*pi*r), end
end
В результате выполнения получится:

Введите радиус окружности r=4


Длина окружности l-
Лабораторная работа № 1 181
25.1327
Введите радиус окружности r=6
Длина окружности l-
37.6991
Введите радиус окружности r=-1
9. КОНСТРУКЦИЯ ПЕРЕКЛЮЧАТЕЛЯ SWITCH-CASE-
OTHERWISE-END.
Для осуществления множественного выбора (или
ветвления) используется конструкция с переключателем
switch:

switch _Выражение
case Выражение
Список инструкций
case{case_Выражение1,case_Выражение2, …}
Список инструкций

otherwise,
Список инструкций
end
Если выражение после заголовка switch имеет
значение логической 1, то выполняется блок операторов
case, в противном случае – список инструкций после
оператора otherwise. Если выполнение блока case
разрешено, то выполняются те списки инструкций, для
которых case_Выражение совпадает со switch
_Выражением. Обратите внимание на то, что
Лабораторная работа № 1
182
case_Выражение может быть числом, константой,
переменной или вектором ячеек.
Применение поясним на примере M-файла
switch_1.m:

switch var
case{1,2,3}
disp('Первый квартал')
case{4,5,6}
disp('Второй квартал')
case{7,8,9}
disp('Третий квартал')
case{10,11,12}
disp('Четвертый квартал')
otherwise
disp('Ошибка в задании')
end
Эта программа в ответ на значения переменной var
– номера месяца – вычисляет, к какому кварталу относится
заданный месяц, и выводит сообщение:

» var=2;
» switch_1
Первый квартал
» var=4; switch_1
Второй квартал
» var=7; switch_1

Лабораторная работа № 1 183


Третий квартал
» var=11; switch_1
Четвертый квартал
» var=0; switch_1
Ошибка в задании
10. СОЗДАНИЕ ПАУЗЫ В ВЫЧИСЛЕНИЯХ.
Для остановки программы используется оператор
pause. Он используется в следующих формах:
pause - останавливает вычисления до нажатия
любой клавиши.
pause(N) – останавливает вычисления на N секунд.
pause on – включает режим создания пауз.
pause off – выключает режим создания пауз.
Пример:
for i=1:10;
[x,y]=meshgrid([-3:0.1:3]);
z=(-1)^i*sqrt(x.*x+y.*y);
surf(x,y,z)
colormap(copper)
shading interp
pause(2);
end
» pause_1

Лабораторная работа № 1
184
При исполнении этой программы команда pause(2)
обеспечивает показ чередующихся рисунков – построений

3D-поверхностей функций z  x 2  y 2 и z   x2  y2 со

временем показа две секунды. Поверхности сменят друг


друга 10 раз.

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


1. Какие М–файлы вы знаете?
2. Что такое М–сценарий (его назначение)?
3. Какова структура М–сценария?
4. Каковы свойства М–сценария?
5. Для чего служит основной комментарий?
6. Для чего служит дополнительный комментарий?
7. Как запускается М–сценарий?
8. Какие сообщения об ошибках вы знаете?
9. Что такое ошибка и предупреждение?
10. Какая команда выдает сообщение об ошибке?
11. Для чего нужна команда help?

Приложение 7.2

КОНТРОЛЬНЫЙ ПРИМЕР
44. Запустите MATLAB.
45. В меню Файл выполните команду Создать, а затем –
М-файл.
Загрузится Редактор/Отладчик. Основное
назначение Редактора/Отладчика–создание
программ в системе MATLAB. Программы в системе
MATLAB называются М-файлы. Существует две
основные формы М-файлов: М–сценарии и М–
Лабораторная работа № 1 185
функции. М-файлы–это обычные текстовые
файлы, которые создаются с помощью текстового
редактора, каковым и является
Редактор/Отладчик.
Сценарий является самым простым типом М-
файла – у него нет входных и выходных
аргументов. Сценарий полезен для
автоматизации последовательности MATLAB-
команд, которые необходимо многократно вводить
из командной строки.
Любой сценарий должен иметь следующую
структуру:
первая строка комментария
омментарий
тело сценария
% М-файл sinus – построение синусоиды
x=-pi:0.01:pi;
y=sin(x);
plot (x,y)
Как видно любой сценарий начинается с первой
строки комментария – это обязательная часть. В
ней желательно дать краткое пояснение назначения
сценария. Остальные строки комментария можно
опустить.
После комментария идет тело сценария. В теле

Лабораторная работа № 1
186
сценария записываются операторы языка, функции
и т.д., которые выполняют вычисления.

Комментарии всегда начинаются с


символа - %.

46. .Создадим М-сценарий.


Для этого введем следующее:
% М-сценарий - построение графика функции sin(x)
% значения аргумента x должны быть в радианах
x1=input('Введите начальное значение x, xнач=');
x2=input('Ведите конечное значение x, xкон=');
x3=input('Введите шаг изменения x, dx=');
x=x1:x3:x2;
y=sin(x);
plot(x,y)
Как видно наш М-сценарий содержит следующие
блоки: комментарий (строки 1 и 2), ввод данных
(строки 3, 4, 5), расчет функции (строки 6 и 7) и
графический вывод (строка 8).

Организация интерактивного ввода


(запроса):
имя_переменной=input('строка запроса').
' ' – апострофы для ввода строковых
переменных.

Лабораторная работа № 1 187


47. Чтобы М-сценарий можно было использовать его
необходимо сохранить на диске.
В меню Файл выполним команду Сохранить.
Появится окно под названием Сохранить как. В этом
окне в поле Имя файла введем название нашего М-
сценария, например grafsin. Затем щелкнем
мышкой по кнопке Сохранить.
48. М-сценарии используют в Окне управления
MATLAB. Для перехода в Окно управления нужно
использовать сочетание клавиш Alt+Tab (Alt –
удерживаем, а Tab – один раз нажимаем).
В окне управления введем имя нашего М-
сценария, т.е.:
grafsin
и нажмем на клавишу Enter. Должно получиться
следующее:
Введите начальное значение x
После этого запроса следует ввести число которое
соответствует начальному значению x, например:
Введите начальное значение x, xнач=-2*pi
и нажать на клавишу Enter. Должно получиться:
Введите начальное значение x, xнач=-2*pi
Ведите конечное значение x, xкон=
Опять вводим число и т.д. Получаем:
Введите начальное значение x, xнач=-2*pi

Лабораторная работа № 1
188
Введите конечное значение x, xкон=2*pi
Ведите шаг изменения x, dx=0.01
и график:

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-8 -6 -4 -2 0 2 4 6 8

49. Любой М-сценарий можно изменить.


Используя клавиши Alt+Tab, вернитесь в
Редактор/Отладчик. Затем в строке 7 замените
функцию sin(x) на cos(x).
% М-сценарий - построение графика функции sin(x)
% значения аргумента x должны быть в радианах
x1=input('Введите начальное значение x, xнач=');
x2=input('Ведите конечное значение x, xкон=');
x3=input('Введите шаг изменения x, dx=');
x=x1:x3:x2;
y=cos(x);
plot(x,y)
Чтобы использовать этот сценарий его надо
сохранить. Сохраним его под другим именем,
например grafcos. Для этого в меню Файл выполним
команду Сохранить как.
Лабораторная работа № 1 189
50. Вернемся в Окно управления и введем:
garfcos
и проделаем тоже, что и в п.5. После чего получим:
Введите начальное значение x, xнач=-2*pi
Введите конечное значение x, xкон=2*pi
Ведите шаг изменения x, dx=0.01

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-8 -6 -4 -2 0 2 4 6 8

51. Сохраненный на диске М-сценарий можно открыть


для редактирования.
Для этого в меню Файл нужно использовать команду
Открыть.
Откройте М-сценарий grafsin.
В нижней части окна Редактора/Отладчика есть
закладки–названия, которые соответствуют
названиям М-сценариев. Щелкая мышкой по этим
закладкам, мы можем переходить от одного М-
сценария к другому. Попробуйте это.
52. М-сценарий, с которым работа закончена, можно
закрыть.
Для этого в меню Файл используем команду
Лабораторная работа № 1
190
Закрыть.
Закройте оба М-сценария.
53. Для завершения работы в Редакторе/Отладчике
в меню Файл используют команду Выход из
Редактора/Отладчика.
54. Завершите работу в MATLAB. Для этого в меню
Файл выполните команду Выход из MATLAB.

Приложение 7.3
Индивидуальное задание

Создать М-сценарий построения графика функции


на интервале [a,b] с шагом x. Вид функции, интервал и
шаг в зависимости от варианта задания в таблице.
№ Вид функции a b x
1 y  0.4 x -5 4 0,1
2 y  2 x -8 5 0,2
x
 1 
3 y   
 -4 5 0,1
 2
4 y 3   x -2 5 0,1
5 y  0.3  x -3 4 0,2
x
1
6 y   -3 5 0,2
7
7 y  1.3 2 x -1 6 0,2
3 x
8 y  0.7 -4 4 0,2

Лабораторная работа № 1 191


9 y  3x  2 -6 3 0,2
x
1
10 y    3 -8 8 0,3
2
11 y  2 x 1 -7 5 0,1
x2
12 y 3 5 7 0,2
2 x
13 y2 3 -10 10 0,4
x2
1
14 y   2 -5 8 0,1
3
15 y  log x 0.01 10 0,1
2

16 y  log x  1 0.01 15 0,1


2

17 y  lgx  1  1 0.01 20 0,1


18 y  ln x  1  1 0.01 25 0,2
1
19 y 0.01 30 0,2
log x
2
1
20 y 0.01 20 0,1
ln x
y  cos x 
21 2 2
15

22 y  1  cos x  3
20
 
23 y  cos 2 x 3
2 30

24 y  sin x 0 2
70

25 y  sin 3 x  2
80
1 3 
26 y  sin 2 x   
2 2 100
y  tgx  
27 0
2 100
Лабораторная работа № 1
192
y  tg 2 x
  
28 
4 3 150
    
29 y  tg  x   
 4 4 3 150
  
30 y  2 sin  3 x    2  2
 4 80

ЛАБОРАТОРНАЯ РАБОТА № 8
УПРАВЛЯЮЩИЕ СТРУКТУРЫ В СРЕДЕ MATLAB

1. ЦЕЛЬ РАБОТЫ
Ознакомиться с управляющими структурами и научится
их применять.

2. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
Построить график функции. Задание выполнить для
двух конструкций: while…end и for…end.. В зависимости
от условия z построить график функции. Задание
выполнить для двух конструкций: if…end и switch…end.
Выполнить в соответствии с вариантом заданным
преподавателемиз приложения № 8.3..

3. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ.


Работа выполняется в порядке, указанном на странице 7.

4. РЕКОМЕНДУЕМАЯ ЛИТЕРАТУРА
14. Основная: [3], [7], [10], [11], [12], [13];
15. Дополнительная: [14].

Лабораторная работа № 1 193


Лабораторная работа № 1
194
Приложение 8.1

ТЕОРИЯ ВОПРОСА ”Управляющие структуры в среде


MATLAB
изложена в лабораторной работе №7.

ВОПРОСЫ ДЛЯ САМОКОНТРОЛЯ


12. Для чего нужны управляющие структуры в среде
MATLAB?
13. Перечислите управляющие структуры.
14. Принципы работы условного оператора.
(if...end)
15. Какие бывают варианты условного оператора?
16. Принципы работы оператора (switch... end)
17. Принципы работы оператора (while... end)
18. Принципы работы оператора (for... end)
19. В чем различие между while... end и for... end?
20. Что такое цикл?
21. Оператор принудительного выхода из цикла.
22. Как организовать диалоговый ввод-вывод?
23. Как организовать паузу в вычислениях?

Приложение 8.2

КОНТРОЛЬНЫЙ ПРИМЕР
55. Запустите MATLAB.
56. В меню Файл выполните команду Создать, а затем
– М-файл. Загрузится Редактор/Отладчик.
57. Как вы уже знаете, для управления
последовательностью выполнения операторов в
системе MATLAB используют четыре управляющие
конструкции.

Лабораторная работа № 1 195


Первая конструкция:
if... elseif... else... end
Возможны следующие варианты:
if... end или if... else... end.
Создадим М-сценарий с использованием такой
управляющей конструкции.
% М-сценарий - использование управляющих
конструкций
% if... elseif... else... end
disp('Выберите график, какой функции Вы хотите
построить')
disp('1 - sin(x)')
disp('2 - sin(x)^2')
disp('3 - sin(x^2)')
a=input('и введите соответствующую цифру от 1 до 3');
disp(' ')
x1=input('Введите начальное значение x, xнач= ');
x2=input('Ведите конечное значение x, xкон= ');
x3=input('Введите шаг изменения x, dx= ');
x=x1:x3:x2;
if a==1
disp('Cтроим график функции sin(x)')
y=sin(x);
elseif a==2
disp('Cтроим график функции sin(x)^2')
y=sin(x).^2;
else
disp('Cтроим график функции sin(x^2)')
y=sin(x.^2);
end
plot(x,y)

Вывод информации на экран:


disp('<текстовая строка>').

Лабораторная работа № 1
196
58. Чтобы М-сценарий можно было использовать, его
необходимо сохранить на диске. Для этого в меню
Файл выполним команду Сохранить и сохраним
наш М-сценария, например под именем prog_if.
59. Перейдем в Окно управления MATLAB, используя
сочетание клавиш Alt+Tab. В окне управления
введем имя нашего М-сценария, т.е.:
prog_if
и нажмем на клавишу Enter. Должно получиться
следующее:
Выберите график функции, которую Вы
хотите построить
sin(x)
sin(x)
sin(x^2)
и введите соответствующую цифру
Например, введем 3 и нажмем Enter. Затем, поочередно
отвечая на запросы, получим:
Введите начальное значение x, xнач= -pi
Ведите конечное значение x, xкон= pi
Введите шаг изменения x, dx= 0.1
Cтроим график функции sin(x^2)

Лабораторная работа № 1 197


1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

60. Вторая управляющая конструкция:


switch... case... otherwise... end
Создадим новый М-сценарий.
% М-сценарий - использование управляющих
конструкций
% switch... case... otherwise... end
disp('Выберите график функции, которую Вы хотите
построить')
disp('1 - sin(x)')
disp('2 - sin(x)^2')
disp('3 - sin(x^2)')
a=input('и введите соответствующую цифру ');
disp(' ')
x1=input('Введите начальное значение x, xнач= ');
x2=input('Ведите конечное значение x, xкон= ');
x3=input('Введите шаг изменения x, dx= ');
x=x1:x3:x2;
switch a
case 1
disp('Cтроим график функции sin(x)')
y=sin(x);
case 2
disp('Cтроим график функции sin(x)^2')
y=sin(x).^2;
otherwise
disp('Cтроим график функции sin(x^2)')
y=sin(x.^2);
Лабораторная работа № 1
198
end
plot(x,y)
Чтобы М-сценарий можно было использовать, его
необходимо сохранить на диске. Для этого в меню Файл
выполним команду Сохранить и сохраним наш М-сценария,
например под именем prog_case.
61. Перейдем в Окно управления MATLAB, используя
сочетание клавиш Alt+Tab. В окне управления
введем имя нашего М-сценария, т.е.:
prog_case
и нажмем на клавишу Enter. Должно получиться
следующее:
Выберите график функции, которуюй Вы
хотите построить
sin(x) - 1
sin(x)^2- 2
sin(x^2) - 3
и введите соответствующую цифру
Например, введем 2 и нажмем Enter. Затем,
поочередно отвечая на запросы, получим:
Введите начальное значение x, xнач= -pi
Ведите конечное значение x, xкон= pi
Введите шаг изменения x, dx= 0.1
Cтроим график функции sin(x)^2

Лабораторная работа № 1 199


1

0.9

0.8

0.7

0.6

0.5

0.4

0.3

0.2

0.1

0
-4 -3 -2 -1 0 1 2 3 4

62. Третья управляющая конструкция:


while... end
Создадим новый М-сценарий.
% М-сценарий - использование управляющих
конструкций
% while... end
x1=input('Введите начальное значение x, xнач=');
x2=input('Ведите конечное значение x, xкон= ');
x3=input('Введите шаг изменения x, dx= ');
x=x1;
n=1;
while x<=x2
y=sin(x);
X(n)=x;
Y(n)=y;
x=x+x3;
n=n+1;
end
plot(X,Y)
Чтобы М-сценарий можно было использовать, его
необходимо сохранить на диске. Для этого в меню Файл
выполним команду Сохранить и сохраним наш М-сценария,
например под именем prog_while.

Лабораторная работа № 1
200
Перейдем в Окно управления MATLAB, используя
сочетание клавиш Alt+Tab. В окне управления введем имя
нашего М-сценария, т.е.:
prog_while
и нажмем на клавишу Enter. Затем, поочередно отвечая на
запросы, получим:
Введите начальное значение x, xнач= -pi
Ведите конечное значение x, xкон= pi
Введите шаг изменения x, dx= 0.1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

63. Четвертая управляющая конструкция:


for... end
Создадим новый М-сценарий.
% М-сценарий - использование управляющих
конструкций
% for... end
x1=input('Введите начальное значение x, xнач=');
x2=input('Ведите конечное значение x, xкон= ');
x3=input('Введите шаг изменения x, dx= ');
n=1;
for x=x1:x3:x2
y=sin(x);
X(n)=x;
Лабораторная работа № 1 201
Y(n)=y;
n=n+1;
end
plot(X,Y)
Чтобы М-сценарий можно было использовать его
необходимо сохранить на диске. Для этого в меню Файл
выполним команду Сохранить и сохраним наш М-сценария,
например под именем prog_for.
Перейдем в Окно управления MATLAB используя
сочетание клавиш Alt+Tab. В окне управления введем имя
нашего М-сценария, т.е.:
prog_for
и нажмем на клавишу Enter. Затем, поочередно отвечая на
запросы, получим:
Введите начальное значение x, xнач= -pi
Ведите конечное значение x, xкон= pi
Введите шаг изменения x, dx= 0.1
1

0.8

0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
-4 -3 -2 -1 0 1 2 3 4

64. Завершите работу в MATLAB Для этого в меню


Файл выполните команду Выход из MATLAB.

Лабораторная работа № 1
202
Приложение 8.3.
Индивидуальные задания

Создать М-сценарий с использованием управляющих


структур.

1. Построить график функции на интервале [a,b] с шагом


x. Вид функции, интервал и шаг в зависимости от варианта в
таблице. Задание выполнить для двух конструкций: while…end
и for…end.

Вид функции a b
x
0,
1. sinx - 
1
- 0,
2. cosx 
 1
- 0,
3. 0.4 x 4
5 1
 2 0,
4. sin 3x
1
 0,
tgx 0 2
5.
1

 3 

tg 2 x 4 4 15
6.

Лабораторная работа № 1 203


  
  
7. tg  x   4 3 150
 4

- 
8. 1 cos x  20

0. 1 0,
9. log x
2

01 0 1
3 
1  
10. sin 2 x  2 100
2

1 0. 3 0,
11. log 2 x 01 0 2
0. 2 0,
12. lgx  1  1
01 0 1

1
x2
- 0,
13.   2 8
 3 5 1
0. 1 0,
14. log 2 x  1
01 5 1
- 1 0,
15. 22  x  3
10 0 4
  
  
16. y  tg  x   4 3 150
 4

  

y  tg 2 x 4 3 150
17.

Лабораторная работа № 1
204
y  ln x  1  1 0. 2 0,
18.
01 0 3
- 1 0,
19. y  2 2 x  3
10 0 2
- 1 0,
20. y  0.3 x
3 0 2
- 0,
y  1  cos x 
21.
 1
- 0,
y  cos 2 x 
22.
 1
- 0,
23. y  sin 3 x 
 1

1 - 0,
24. y  sin 2 x  
2  1
- 0,
25. y  sin x 4 
 1
 1 - 0,
y  sin 2 x  
26.  2 
 1

- 0,
y  tgx 
27.
 1
- 0,
y  tg 2 x 
28.
 1
 
29. y  tg  x   -  0,
 4

Лабораторная работа № 1 205


 1
  - 0,
y  2 sin  3 x 
30.  4 
 1

2. В зависимости от условия z построить график


функции на интервале [a,b] с шагом x. Вид функции, интервал
и шаг в зависимости от варианта в таблице. Задание выполнить
для двух конструкций: if…end и switch…end.

Условие a b
x
- 0
 2 ,1
 z  1 sin 2 x
 -  0
 z  2 sin x
2
1.
 z  3 cosx   ,2

-  0
2 ,5
0
-
,1
z  1 x 2 2
 0
z  2 x
2
2. - 4
 ,2
z  3 x 1 6
0
0
,5

Лабораторная работа № 1
206
- 0
 2 ,1
 z  1 sin x
 -  0
 z  2 sin x  cos x
3.  z  3 cosx
   ,2
-  0
2 ,5
- 0
2 ,1
z  1 x 2  x  3 2
 - 0
4.  z  2 sin x 
  ,2
z  3 x
3
1
- 0
2 ,5
0
-
,1
z  1 3 x 2 2
 0
z  2 x
3
5. - 4
z  3 2x  6 ,2
 1 6
0
0
,5
- 0
 2 ,1
 z  1 sin x
 -  0
 z  2 sin x  2ctgx
6.  z  3 cosx
   ,2
-  0
2 ,5

Лабораторная работа № 1 207


0
0
,1
 z  1 lgx - 6 - 2
 0
7.  z  2 sin x  
 ,2
z  3 x  x  5
4
- 1
0
2
,5
- 0
 2 ,1
 z  1 sin 2 x
 -  0
 z  2 tgx
2
8.
 z  3 ctgx   ,2

-  0
2 ,5
- 0

 z  1 sin 2 ( x   6) 
2 ,1

 z  2 sin x
2 -  0
9.  z  3 cos( x   3)
   ,2
-  0
2 ,5
- 0
 2 ,1
 z  1 sin 3 x  4
 -  0
 z  2 sin x
4
10.
   ,2
 z  3 cos x
2

-  0
2 ,5

Лабораторная работа № 1
208
0
-
,1
z  1 x 2 2
 0
z  2 e
x
11. - 4
 x ,2
z  3 x 1 6
0
0
,5
0
-
,1
z  1 x  6 2 2
 0
12. z  2 x - 4
 z  3 ln x ,2
 1 6
0
1
,5
- 0
 2 ,1
 z  1 x  3  sin 3x
 -  0
 z  2 sin x
2

13. 
 z  3 e sin x
x
  ,2
-  0
2 ,5
0
-
,1
z  1 x 2 2
 0
z  2 x
2
14. - 4
 z  3 lnx ,2
 1 6
0
2
,5

Лабораторная работа № 1 209


- 0
3 ,1
z  1 x 2
 - 0
 z  2 sin x
2
15. 
  ,2
z  3 x
5
5
- 0
2 ,5
0
-
2 ,1
 z  1 x cos x 
  0
16.  z  2 sin x 2 x -
z  3 1  ,2
 
0
,5
- 0
 2 ,1
 z  1 sin x
 0  0
 z  2 x ln x
2
17.
z  3 5x  9 .5 2 ,2

- 4 0
2 ,5
0
,1
 z  1 ln 2 x 2 2
 0
 z  2 log 2 x
2
18. 1 4
 ,2
 z  3 x
3
0 6
0
,5

Лабораторная работа № 1
210
- 0
 2 ,1
 z  1 sin x
 -  0
 z  2 sin x
2
19.
 z  3 tgx   ,2

-  0
2 ,5
0 0
.2 ,1
 z  1 ln 2 x 2
 - 0
20.  z  2 sin x
2

 z  3 ctg2 x  ,2
 
- 0
2 ,5
- 0
 2 ,1
 z  1 sin x
 2 x -  0
21. z  2 x e
 1 1 ,2
z  3 x
-3

- 2 0
2 ,5
0
- ,1
z  1 x 2
 2 0
 z  2 lnx
2
22. 4
 1 ,2
z  3 x
3
6
0 0
,5

Лабораторная работа № 1 211


- 0
 2 ,1
 z  1 sin x
 -  0
23.  z  2 sin x cos x
 z  3 cosx   ,2

-  0
2 ,5
0
-
,1
z  1 x  6 2 2
 0
z  2 x  3
2
24. - 4
 ,2
z  3 e
x
1 6
0
0
,5
- - 0
 sin x   ,1
z  1 x  4
 - - 0
 z  2 sin x
2
25.
 cosx   ,2
z  3
 x5 - - 0
2 2 ,5
- 0
3 ,1
z  1 x 2
 - 0
26.  z  2 sin x 
  ,2
z  3 e
cosx

- 0
2 ,5

Лабораторная работа № 1
212
- 0
 2 ,1
 z  1 xtgx
 -  0
 z  2 sin x
2
27.
 z  3 ctgx   ,2

-  0
2 ,5
- 0
1 ,1
z  1 x 2
 - 0
z  2 3 
sin x
28.
  ,2
z  3 2
cosx

- 0
2 ,5
- - 0
  ,1
z  1 x x
 - - 0
z  2 x
sin x
29.
 z  3 cosx   ,2

- - 0
2 2 ,5
- 0
 2 ,1
 z  1 sin x
 -  0
 z  2 sin x
5 2
30.
   ,2
 z  3 cos x
3

-  0
2 ,5

Лабораторная работа № 1 213


Лабораторная работа № 1
214

Вам также может понравиться