Управляющие конструкции языка программирования



 

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

 

Операторы цикла

 

Схожие и повторяющиеся действия выполняются при помощи операторов цикла for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, a while— для действий, число которых заранее не известно, но известно условие продолжения цикла.

 

Цикл for

 

Использование for осуществляется следующим образом:

 

for count = start:step:final

команды MATLAB

end

 

Здесь count — переменная цикла, start— ее начальное значение, final — конечное значение, a step — шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Переменная цикла может принимать не только целые, но и вещественные значения любого знака.

 

Цикл while

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

Конечно, до бесконечности действовать не удастся, но можно, например, накапливать сумму с заданной точностью. Значение, обеспечи вающее малость текущего слагаемого, заранее неизвестно, поэтому циклом for воспользоваться не удастся. Выход состоит в применении цикла while который работает, пока выполняется условие цикла:

 

while условие повторения цикла

команды MATLAB

end

 

Условие цикла while может содержать логическое выражение, составленное из операций отношения и логических операций или операторов. Для зада­ния условия повторения цикла допустимы операции отношения, приведен­ные в табл. 1.

 

Табл. 1

Обозначение Операция отношения
== Равенство
< Меньше
<= Меньше или равно
>= Больше или равно
-= Не равно

 

Задание более сложных условий производится с применением логических операторов или операций. Например, условие -1 ≤ x < 2 состоит в одновре­менном выполнении неравенства х ≥ -1 и х < 2 и записывается при помощи логического оператора and

 

and(x >= -1, х < 2).

 

Оператор ветвления if

 

Условный оператор if позволяет создать гибкий разветвляющийся алгоритм, в котором при выполнении определен­ных условий выполняется соответствующий блок операторов или команд MATLAB. Практически во всех языках программирования имеются анало­гичные операторы.

 

Оператор if может применяться в простом виде, для выполнения блока команд при удовлетворении некоторого условия, или в конструкции if-elseif-else для написания разветвляющихся алгоритмов.

 

 

Применение оператора if в самом простом случае выглядит так:

 

if условие

команды MATLAB

end

 

Если условие верно, то выполняются команды MATLAB, размещенные ме­жду if и end, а если условие неверно, то происходит переход к командам, расположенным после end.

Прерывание и продолжение циклов

 

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

При организации циклических вычислений операторами while или for следует позаботиться о том, чтобы внутри цикла не возникало ошибок или нежелательных действий. При возникновении подобных ситуаций используется оператор break.

Внутри цикла может возникнуть ситуация, при которой выполнение остав­шейся части операторов не требуется, а сразу следует перейти к новому ша­гу цикла. В этом случае оказывается удобным оператор continue, который хоть и не является незаменимым, но позволяет обойтись без разветвленной структуры if-elseif-else, что делает текст программы более понятным.

 

Построение графиков в системе MATLAB

Команда plot

 

Команда plotсоздает x-yграфик в линейных осях; если xи yявляются векторами одинаковой длины, то команда plot(x,y)открывает графическое окно и рисует зависимость y(x). Например, можно нарисовать график синуса на интервале от -4 до 4 с помощью команд:

 

x = -4:.01:4;

y = sin(x);

Plot(x,y)

Вектор xявляется набором равноотстоящих точек с шагом 0.01, а y-вектор со значениями функции синуса в этих точках (синус – поэлементная функция). Рисунок при создании открывает отдельное окно. Переход между окнами (возврат в окноMATLABили переход от рисунка к рисунку осуществляется в соответствии с правилами среды, например, с помощью комбинации Alt+Tabили с помощью мыши).

В качестве второго примера можно нарисовать график e−x2 на интервале от -1.5 до 1.5 следующим образом:

 

x =- 1.5:.01:1.5;

y = exp(-x.ˆ2);

Plot(x,y)

Обратите внимание на то, что точка перед ˆ обязательна, поскольку мы хотим, чтобы возведение в степень выполнялось поэлементно. Можно, например, рисовать кривые, заданные параметрически.

Например, можно выполнить такие операторы

 

t=0:.001:2*pi;

x=cos(3*t);

y=sin(2*t);

Plot(x,y)

 

Разметка графика и надписи

 

Команда gridпоместит сетку на график. График может быть снабжен заголовком, именами осей, и на сам график может быть помещен дополнительный текст с помощью команд вывода текста. Аргументами всех этих команд является текстовая строка. Например, команда title(’График’)добавит к вашему графику заголовок. Команда gtext(’Пятно’)позволяет с помощью мыши или клавишного курсора разместить на рисунке индикаторный крест, в месте размещения которого и будет помещен текст после нажатия произвольной клавиши. При необходимости сделать подписи осей используются команды Xlabel(’ПодписьX’), Ylabel(’ПодписьY’).

 

Если выведена неправильная надпись, то можно ее стереть или заменить на другую, повторив такую же команду вывода текста, но с пустой или новой строкой в качестве аргумента.

 

Для изображения нескольких кривых на одном рисунке существуют два способа, которые иллюстрируются следующими примерами.

1)

x=0:.01:2*pi;

y1=sin(x);

y2=sin(2*x);

y3=sin(4*x);

Plot(x,y1,x,y2,x,y3)

 

или, что полностью эквивалентно, формируется матрица Y, содержащая значения изображаемых функций в виде столбцов, и после этого рисунок создается последовательностью команд

 

x=0:.01:2*pi;

Y=[sin(x)’, sin(2*x)’, sin(4*x)’];

Plot(x,Y)

2)

 Другим способом такого рисования является использование команды hold on, которая замораживает текущий график, так что последующие кривые помещаются на этот же график. При этом масштаб и разметка осей изменяются, если новая кривая не вписывается в нарисованные оси. Команда hold offприводит к тому, что любой последующий вызов команды plotсоздает новый рисунок на этом же листе, т.е. предыдущий график стирается.

При выводе графика можно сменить принятый по умолчанию тип точек, с помощью которых рисуется данный график. Например, последовательность команд

 

x=0:.01:2*pi;

y1=sin(x);

y2=sin(2*x);

y3=sin(4*x);

plot(x,y1,’--’,x,y2,’:’,x,y3,’+’)

приведет к тому, что первый график будет нарисован пунктиром, второй–точками, а третий – символами +. В общем случае каждая линия на графике определяется триплетом x,y,s, где xи y-это вектора с координатами, а s–строковая переменная, образованная любыми комбинациями из каких-нибудь приведенных в табл. 2 столбцов.

 

 

Табл. 2

S Цвет S Маркер S Тип линии
y желтый . точка - сплошная
m фиолетовый o кружок : точечная
c голубой x x-метка -. штрих-пунктирная
r красный + плюс - - пунктирная
g зеленый * звездочка    
b синий s квадрат    
w белый d алмаз    
k черный v треугольник (вниз)    
    ^ треугольник (вверх)    
    < треугольник (влево)    
    > треугольник (вправо)    
    p шестиугольник    
    h восьмиугольник    

Изображение функций

Функция fplotпредоставляет альтернативную возможность изображения функций по сравнению с вычислением вектора yпо xи последующим изображением этой кривой с помощью функции plot. Эта функция бывает особенно полезной, когда кривая имеет несколько разных скоростей изменения и заранее не ясно, в скольких и каких точках необходимо вычислять и выводить кривую. Этой функции необходимо передавать строку, описывающую требуемую функцию в виде f(x).

Строка, описывающая f(x), может содержать любые допустимые в MATLABоперации и/или функции. Функция f(x) должна возвращать вектор той же размерности, что и x, или матрицу, каждый столбец которой имеет столько же элементов, сколько и x.

Например, для того чтобы нарисовать кривую y = sin(x)cos(2x) в диапа зоне x от 0 до 5π, необходимо вызвать функцию

 

fplot (’sin(x) .*cos(2x)’, [0 5*pi])

 

Например, для того чтобы нарисовать кривую в диапа зоне x от -10 до 10, необходимо вызвать функцию

fplot('x^2-6*x+14',[-10 10]);

Функция fplotимеет еще два дополнительных (необязательных) аргумента. Один из них – это строка, описывающая тип и цвет линии (аналогично функции plot), а вторая – точность. По умолчанию точность равна 2 · 103, и она определяет, на сколько точек делить интервал, чтобы погрешность от линейной интерполяции не превосходила этой заданной точности. Чем меньше точность, тем дольше вам придется ждать вывода графика на экран.


Дата добавления: 2018-04-15; просмотров: 671; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!