Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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




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

Пример ввода матрицы размером 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)

 

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

 

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

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

 

Условный оператор if

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

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

 

if условие

команды MATLAB

end

 

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

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

В данном примере перед вычислением функции следует произнести проверку значения аргумента х и вывести в командное окно предупреждение, если модуль х меньше единицы (листинг 3.4).

 

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

 

% проверка аргумента

if abs(x) < 1

warning (‘результат комплексный’)

end

% вычисление функции

F = sqrt(x^2 – 1);

 

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

 

Пример. Вычисление кусочно-заданной функции

В данном примере число ветвей равно трем. Во второй ветви достаточно только проверить, что х<π, условие x≥-π уже выполнено (иначе бы отработала первая ветвь, и оператор if закончил работу). В последней ветви нет смысла проверять никакие условия, она работает, если все предыдущие условия неверны, что как раз соответствует х≥-π.

 

Листинг 3.5 Файл-функция вычисления кусочно-заданной функции

 

if x < - pi

y = sin(x) – 1;

elseif x< pi

y = x/pi;

else

y = -cos(x);

end

 

Оператор switch

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

Оператор switch удобно применять тогда, когда есть соответствие между дискретными значениями некоторой переменной и последующими действиями. Для определения ветви программы в зависимости от выполнения более сложных условий, например а>0, приходится использовать оператор if.

 





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


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 1168 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Чтобы получился студенческий борщ, его нужно варить также как и домашний, только без мяса и развести водой 1:10 © Неизвестно
==> читать все изречения...

2457 - | 2338 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.