Главная страница

Учебное пособие для студентов высших учебных заведений


Скачать 5.41 Mb.
НазваниеУчебное пособие для студентов высших учебных заведений
Дата10.03.2022
Размер5.41 Mb.
Формат файлаpdf
Имя файлаmatlab.pdf
ТипУчебное пособие
#390741
страница10 из 44
1   ...   6   7   8   9   10   11   12   13   ...   44

1.5.5. Задания
Задание 1.9. Постройте в графическом окне MatLAB график функции из
задания 1.5. Распечатайте этот график на листе бумаги.
Задача 1.10. Постройте в графическом окне MatLAB графики амплитудно- частотной (модуля ЧПФ) и фазочастотной (аргумента ЧПФ) характеристик функ- ции из задания 1.7. Распечатайте полученный график на листе бумаги.
1.5.6. Вопросы
1. Какие функции MatLAB осуществляют вывод графиков на экран?
2. Какими функциями обеспечивается снабжение графика координатны- ми линиями и надписями?
3. Что такое "график вектора" и как его построить?
4. Как вывести график в виде столбцовой диаграммы?
5. Как построить гистограмму?
6. Можно ли построить несколько графиков в одной системе координат и в одном графическом окне?
7. Как вывести несколько отдельных графиков в разных графических ок- нах?
8. Как построить несколько отдельных графиков в одном графическом окне в разных графических полях?

1.6. Операторы управления вычислительным процессом
86
1.6. Операторы управления вычислительным процес-
сом
Вообще говоря, операторы управления необходимы, главным образом, для организации вычислительного процесса, который записывается в виде некоторого текста программы на языке программирования высокого уровня. При этом к опе- раторам управления вычислительным процессом обычно относят операторы без- условного перехода, условных переходов (разветвления вычислительного процес- са) и операторы организации циклических процессов. Тем не менее, система
MatLAB построена таким образом, что эти операторы могут быть использованы при роботе MatLAB и в режиме калькулятора.
В языке MatLAB отсутствует оператор безусловного перехода и, в соот-
ветствии с этим, нет понятию метки. Это обстоятельство затрудняет организа- цию перехода вычислительного процесса к любому предшествующему или сле- дующему оператору программы.
Все операторы цикла и условного перехода построены в MatLAB в виде со- ставного оператора, который начинается одним из служебных слов if, while,
switch или for и заканчивается служебным словом end. Операторы между этими словами воспринимаются системой как части одного сложного оператора. Поэто- му нажатие клавиши при переходе к следующей строке не приводит в этом случае к выполнению этих операторов. Выполнение операторов начинается лишь тогда, если введена "завершающая скобка" сложного оператора в виде слова
end, а затем нажата клавиша . Если несколько составных операторов тако- го типа вложены друг в друга, вычисления начинаются лишь тогда, когда записан конец end наиболее охватывающего (внешнего) составного оператора. Отсюда следует возможность осуществления даже в режиме калькулятора довольно слож- ных и объемных (состоящих из многих строк и операторов) вычислений, если они охвачены сложным оператором.
1.6.1. Оператор условного перехода
Конструкция оператора перехода по условию в общем виде такова:
if <условие>
<операторы1>
else
<операторы2>
end
Работает оператор так. Сначала проверяется, выполняется ли указанное ус- ловие. Если оно выполнено, программа выполняет совокупность операторов, ко- торая записанная в делении <операторы1>. Если условие не выполнено, выполня- ется последовательность операторов <операторы2>.
Сокращенная форма условного оператора имеет вид:
if <условие>
<операторы>

1.6. Операторы управления вычислительным процессом
87
end
Действие оператора в этом случае аналогично, за исключением того, что при невыполнении заданного условия выполняется оператор, следующий за опе- ратором end.
Легко заметить недостатки этого оператора, вытекающие из отсутствия оператора безусловного перехода: все части программы, которые выполняются
в зависимости от условия, должны размещаться внутри операторных скобок if
и end.
В качестве условия используются выражения типа:
<имя переменной1> <операция сравнения> <имя переменной2>
Операции сравнения в языке MatLAB могут быть такими:
<
- меньше;
>
- больше;
<=
- меньше или равно;
>=
- больше или равно;
= =
- равно;

=
- не равно.
Условие может быть составным, т. е. состоять из нескольких простых усло- вий, объединенных знаками логических операций. Знаками логических операций в языке MatLAB являются:
& - логическая операция “И” (“AND”);
| - логическая операция “ИЛИ” (“OR”);
- логическая операция “НЕТ” (“NOT”).
Логическая операция “Исключительное ИЛИ” может быть реализована с помощью функции xor(А,В), где А и В - некоторые условия.
Допустима еще одна конструкция оператора условного перехода:
if <условие1>
<операторы1>
elseif <условие2>
<операторы2>
elseif <условие3>
<операторы3>
else
<операторы>
end
Оператор elseif выполняется тогда, когда <условие1> не выполнено. При этом сначала проверяется <условие2>. Если оно выполнено, выполняются <опе- раторы2>, если же нет, <операторы2> игнорируются, и происходит переход к сле- дующему оператору elseif, т. е. к проверке выполнения <условия3>. Аналогич- но, при выполнении его выполняются <операторы3>, в противном случае проис- ходит переход к следующему оператору elseif. Если ни одно из условий в опера- торах elseif не выполнено выполняются <операторы>, размещенные за операто-

1.6. Операторы управления вычислительным процессом
88
ром else. Так может быть обеспечено разветвление программы по нескольким на- правлениям.
1.6.2. Оператор переключения
Оператор переключения имеет такую структуру:
switch <выражение, скаляр или строка символов>
case <значение1>
<операторы1>
case <значение2>
<операторы2>
. . .
otherwise
<операторы>
end
Он осуществляет разветвление вычислений в зависимости от значений не- которой переменной или выражения, сравнивая значение, полученное в результа- те вычисления выражения в строке switch, со значениями, указанными в строках со словом case. Соответствующая группа операторов case выполняется, если зна- чение выражения совпадает со значением, указанным в соответствующей строке
case. Если значение выражения не совпадает ни с одним из значений в группах
case, выполняются операторы, которые следуют за словом otherwise.
1.6.3. Операторы цикла
В языке MatLAB есть две разновидности операторов цикла - условный и
арифметический.
Оператор цикла с предусловием имеет вид:
while <условие>
<операторы>
end
Операторы внутри цикла выполняются лишь в случае, если выполнено ус- ловие, записанное после слова while. При этом среди операторов внутри цикла обязательно должны быть такие, которые изменяют значения одной из перемен- ных, указанных в условии цикла.
Приведем пример вычисления значений синуса при 21 значении аргумента от 0.2 до 4 с шагом 0.2:
» i = 1;
» while i <= 20
x = i/5;
si = sin(x);
disp([x,si])
i = i+1;
end
0.2000 0.1987 0.4000 0.3894 0.6000 0.5646

1.6. Операторы управления вычислительным процессом
89
0.8000 0.7174 1.0000 0.8415 1.2000 0.9320 1.4000 0.9854 1.6000 0.9996 1.8000 0.9738 2.0000 0.9093 2.2000 0.8085 2.4000 0.6755 2.6000 0.5155 2.8000 0.3350 3.0000 0.1411 3.2000
-0.0584 3.4000
-0.2555 3.6000
-0.4425 3. 8000
-0. 6119 4.0000
-0. 7568
Примечание. Обратите внимание на то, какими средствами в указанном примере обеспечен вывод на экран значений нескольких переменных в одну стро- ку. Для этого используется оператор disp. Но, в соответствии с правилами приме- нения этого оператора, в нем должен быть только один аргумент (текст, перемен- ная или матрица). Чтобы обойти это препятствие, нужно несколько числовых пе- ременных объединить в единый объект - вектор-строку, а последнее легко выпол- няется с помощью обычной операции формирования вектора-строки из отдельных элементов
[ x1, x2, ... , x].
Таким образом, с помощью оператора вида:
disp([x1, x2, ... , x]) можно обеспечить вывод результатов вычислений в виде таблицы данных.
Арифметический оператор цикла имеет вид:
for <имя> = <НЗ> : <Ш> : <КЗ>
<операторы>
end,
где <имя> - имя управляющей переменной цикла ("счетчика" цикла); <НЗ> - за- данное начальное значение этой переменной; <Ш> - значение шага, с которым она должна изменяться; <КЗ> - конечное значение переменной цикла. В этом случае
<операторы> внутри цикла выполняются несколько раз (каждый раз при новом значении управляющей переменной) до тех пор, пока значение управляющей пе- ременной не выйдет за пределы интервала между <НЗ> и <КЗ>. Если параметр
<Ш> не указан, по умолчанию его значение принимается равным единице.
Чтобы досрочно выйти из цикла (например, при выполнении некоторого условия) применяют оператор break. Когда программа сталкивается с этим опе- ратором, выполнение цикла досрочно прекращается, и начинает выполняться опе- ратор, следующий за словом end цикла.
Для примера используем предыдущую задачу:
» a = [' i ',' x ',' sin(x) '];
» for i = 1:20
x = i/5;
si = sin(x);

1.6. Операторы управления вычислительным процессом
90
if
i==1
disp(a)
end
disp([i,x,si])
end
В результате получаем i x sin(x)
1.0000 0.2000 0.1987 2.0000 0.4000 0.3894 3.0000 0.6000 0.5646 4.0000 0.8000 0.7174 5.0000 1.0000 0.8415 6.0000 1.2000 0.9320 7.0000 1.4000 0.9854 8.0000 1.6000 0.9996 9.0000 1.8000 0.9738 10.0000 2.0000 0.9093 11.0000 2.2000 0.8085 12.0000 2.4000 0.6755 13.0000 2.6000 0.5155 14.0000 2.8000 0.3350 15.0000 3.0000 0.1411 16.0000 3.2000 -0.0584 17.0000 3.4000 -0.2555 18.0000 3.6000 -0.4425 19. 0000 3.8000 -0. 6119 20.0000 4. 0000 -0. 7568
Так можно обеспечить вывод информации в виде таблиц.
1.6.4. Задания
Задание 1.11.
1. В соответствии с таблицей 1.5 выполнить:
- вычисление точных (используя стандартные функции MatLAB) значений соответствующей функции в диапазоне изменения аргумента от до в равноотстоящих точках этого диапазона, включая его границы;
x
1
x
2
m
- вычисление по указанным степенным рядам приближенных значений функции в тех же точках, ограничиваясь r первыми членами ряда;
- расчет погрешности приближенного определения функции в каждой точке, сравнивая приближенное значение с точным, и построение графика зависимости погрешности от аргумента;
- вычисление приближенных значений функции в тех же точках с относи- тельной погрешностью не более
ε
=0.001; построение графика полученных отно- сительных погрешностей.
Таблица 1.5.
Вар. x1 x2 m r f(x)
Приближенная формула

1.6. Операторы управления вычислительным процессом
91
1 0.2 5
20 4 sin(x)
( )
(
)




1 2
1 2
1
k
k
x
k
!
2 1
10 30 5 cos(x)
1 1
2 2



( )
(
)
k
k
x
k !
3 0.3 3
40 5 exp(x)
1
+

x
k
k
!
4 0.4 4
50 4 ln(1+x)
( )



1 1
k
k
x
k
5 0.5 5
30 3 ln(x)
a
k
k

, где
a
x
x
=
− 1 6
0.6 6
40 4 ln(x)
( )


1
k
k
a
k
, где
a x
= −1 7
0.7 7
50 5 ln(x)
2 2
1 2
1
a
k
k



, где a
x
x
=

+
1 1
8 0.8 8
45 6 ln(x+a) ln( )
a
b
k
k
+



2 2
1 2
1
, где b
x
a x
=
+
2 9
1.1 11 40 3 ctg(x)
1 2
1 2
2
x
x
x
k
+


π
2 10 1.2 12 50 4 cosec(x)
1 2
(
)
x k


π
11 1.3 13 50 5 cosec(x)
1 2
1 2
2
x
x
x
k
k
+

+

( )
π
2 12 1.4 14 60 6 arctg(x)
( )





1 2
1 1
2 1
k
k
x
k
13 1.5 15 45 5 arctg(x)
π
2 1
1 2
1 2
1
+




( )
(
)
k
k
k
x
14 1.6 16 40 4 ln(x)
( )



1 1
k
k
a
r
, где
a
x
= −1 15 0.9 9
50 6 sin(x)
x
x
k
∏ −
(
(
)
)
1 2
2
π
16 1
10 50 4 cos(x)
∏ −

(
(
)
)
1 2
1 2
2 2
x
k
π
17 0.6 5
50 3 ln(x)
a
k
k

, где
a
x
x
=

(
) /
1

1.6. Операторы управления вычислительным процессом
92
18 -0. 9 0.9 45 4 arcctg(x)
π
2 1
2 1
2 1





( )
(
)
k
k
x
k
19 1
20 50 5 sh(x)
x
k
k
2 1
2 1



(
)!
20 1
20 50 5 ch(x)
1 2
2
+

x
k
k
(
)!
21 -0. 9 0.9 50 5 arcth(x)
x
k
k
2 1 2
1



22 1
20 50 5 arcth(x)
1 2
1 2 1
(
)
k
x
k



23 -0. 8 0.8 50 4 arcsin(x0
x
k
x
k
k
k
+
⋅ ⋅
− ⋅
⋅ ⋅


+

1 3 5 2 1
2 4 6 2
2 1
2 1
...(
)
....(
) (
)
24 -0. 8 0.8 50 4 arccos(x
0
{
}
π
2 1 3 5 2 1
2 4 6 2
2 1
2 1

+
⋅ ⋅
− ⋅
⋅ ⋅


+

x
k
x
k
k
k
...(
)
....(
) (
)
25
-5 5
50 6 exp(x)
1
+

x
k
k
!
Задание 1.12.
Вычислить значения функции из задачи 1.5 при значениях аргумента в диапазоне от 0.1 до 100, образующих геометрическую прогрессию со знаменателем, равным квадратному корню из 10, и выведите в командное окно таблицу результатов вычислений.
Задание 1.13.
Вычислить значения модуля ЧПФ и ее аргумента (в градусах) из задачи 1.7 при значениях аргумента в диапазоне от 0.1 до 100, образующих
геометрическую прогрессию со знаменателем, равным квадратному корню из 10, и выведите в командное окно таблицу результатов вычислений.
1.6.5. Вопросы
1.
Какие средства управления ходом вычислительного процесса предусмот- рены в языке MatLAB?
2.
Как можно организовать вычисления по циклу в языке MatLAB?
3.
Как организовать вывод таблицы результатов вычислений в командное окно MatLAB?
4.
Как осуществить сложные (многооператорные) вычисления в режиме калькулятора?

2.1. Функции функций
93
2. Программирование в среде MatLAB
Работа в режиме калькулятора в среде MatLAB, несмотря на довольно зна- чительные возможности, во многих отношениях неудобна. Невозможно повто- рить предшествующие вычисления и действия при новых значениях исходных данных без повторного набора предшествующих операторов. Нельзя возвратиться назад и повторить некоторые действия, или по некоторому условию перейти к выполнению другой последовательности операторов. И вообще, если количество операторов значительно, становится проблемой отладить правильную их работу из-за неминуемых ошибок при наборе команд. Поэтому сложные, с прерывания- ми, сложными переходами по определенным условиям, с часто повторяемыми од- нотипными действиями вычисления, которые, вдобавок, необходимо проводить неоднократно при измененных исходных данных, требуют их специального оформления в виде записанных на диске файлов, т. е. в виде программ. Преиму- щество программ в том, что, так как они зафиксированы в виде записанных фай- лов, становится возможным многократное обращение к одним и тем же операто- рам и к программе в целом. Это позволяет упростить процесс отладки программы, сделать процесс вычислений более наглядным и прозрачным, а благодаря этому резко уменьшить возможность появления ошибок при разработке программ. Кро- ме того, в программах возникает возможность автоматизировать также и процесс изменения значений первоначальных параметров в диалоговом режиме.
2.1. Функции функций
Некоторые важные универсальные процедуры в MatLAB используют в ка- честве переменного параметра имя функции, с которой они оперируют, и поэтому требуют при обращении к ним указания имени М-файла, в котором записан текст некоторой другой процедуры (функции). Такие процедуры называют функциями
функций.
Чтобы воспользоваться такой функцией от функции, необходимо, чтобы пользователь предварительно создал М-файл, в котором вычислялось бы значение нужной функции по известному значению ее аргумента.
Перечислим некоторые из стандартных функций от функций, предусмот- ренных в MatLAB.
1   ...   6   7   8   9   10   11   12   13   ...   44


написать администратору сайта