Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

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




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

Двумерные массивы (матрицы)

Для хранения матрицы используется двумерный массив. При вво­де матрицы ее можно рассматривать как вектор-столбец из двух элементов, каждый из которых является вектор-строкой, следо­вательно, строки при наборе отделяются точкой с запятой.

Пример ввода матрицы размером 2´3

A = [3, 1, -1; 2, 4, 3];

Доступ к элементам матриц осуществляется при помощи двух индексов - номеров строки и столбца, заключенных в круглые скобки. Например А(2,1) означает обращение к элементу матрицы расположенному во второй строке и первом столбце.

Элементы матриц могут входить в состав выражений, например

A = C(1, 1) * C(2, 2) + C(2, 3);

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

Поскольку векторы и матрицы хранятся в двумерных массивах, то приме­нение математических функций к матрицам и поэлементные операции про­изводятся так же, как для векторов.

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

C = A.*B;

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

Управляющие конструкции языка программирования MATLAB, которые могут быть использованы при написании, как программ, так и функций.

 

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

 

Цикл for

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

 

for count = start: step: final

команды MATLAB

end

 

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

Если шаг цикла равен 1,то его можно не указывать.

 

Пример. Пусть требуется вычислить точки семейства кривых для xÎ[0.2π], которое задано функцией , зависящей от параметры а, для значений параметра а от -0.1 до 0.1 с шагом 0,02.

 

Листинг 3.1. Файл-программа для расчета значений функции

 

х = 0: pi/30: 2*pi; % вычисление вектора значений аргумента

% перебор значений параметра в цикле

for а = -0.1: 0.02: 0.1

% вычисление вектора значений функции для текущего значения параметра

у = ехр(-а*х).*sin(x);

end

 

Пример. Пусть требуется вычислить значение суммы

Алгоритм вычисления суммы использует накопление результата, т. е. сначала сумма равна нулю, затем в переменную k заносился единица, вычисляется 1/k! (т. е. 1/1!), добавляется к S и результат снова заносится в S. Далее k увеличивается на единицу, и процесс продолжается, пока последним слагаемым не станет 1/N!.

 

Листинг 3.2. Файл-программа для вычисления суммы

 

% обнуление S для накопления суммы

S = 0;

N=10;

% накопление суммы в цикле с шагом 1

for k = 1: N

S = S + 1/factorial(k);

end

 

Цикл while

 

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

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

команды MATLAB

end

 

Пример. Требуется найти сумму ряда для заданного х (синус разложением в ряд):

Суммировать до бесконечности не возможно, но можно накапливать сумму с заданной точностью. Известно, что дня знакопеременного ряда теоретически достаточно удерживать слагаемые, превышающие по модулю заданную точность, например 10-10. Однако суммирование таких рядов с ограниченной точностью вычислений может привести к потере значащих цифр и, в конечном итоге, к неверному результату. Значение k, обеспечивающее малость текущего слагаемого, заранее неизвестно, поэтому циклом for воспользоваться не удастся. Следовательно, необходимо использовать цикл while, который работает, пока выполняется условие цикла.

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

Текст программы, вычисляющей сумму ряда на основе рекуррентного соотношения приведен в листинге 3.3.

 

Листинг 3.3 Файл-функция, вычисляющая синус разложением в ряд

 

% вычисление первого слагаемого суммы для k=0

k = 0;

x = 0.5;

u = x;

s = u;

while abs(u) > 1.0e-l0

k = k + 1;

u = u*х^2/(2*k) /(2*к + 1);

s = s + u;

end

 

У цикла while, в отличие or for, нет переменной цикла, поэтому необходимо до начала цикла переменной k присвоить единицу, а внутри цикла увеличивать ее на единицу.

 

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

 

Таблица 3.3 Операции отношения

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

 

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

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

или эквивалентным образом с применением логической операции "И"

(х >= -1) & (х < 2).

Основные логические операции и операторы приведены в таблице 3.4.

 

Таблица 3.4 Логические выражения и примеры их применения

Тип выражения Выражение Логический оператор Логическая операция
Логическое "И" x<3 и k=4 and (x < 3, k==4) (х<3) & (k == 4)
Логическое "ИЛИ" х = 1 или 2 or (x == 1, x == 2) (x ==1) | (x == 2)
Отрицание "НЕ" a ¹ 1.9 not (a == 1.9) ~(a == 1.9)

 

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

 




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


Дата добавления: 2014-01-06; Просмотров: 1300; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.014 сек.