Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2009.doc
Скачиваний:
14
Добавлен:
27.03.2015
Размер:
2.01 Mб
Скачать

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

.

Вычисления f(x,y) могут быть выполнены, как показано на рис. 2.3.

Рис. 2.3. Окно редактора М-файла с функцией f(x,y)

В системе MatLab условный оператор if имеет две формы (см. таблицу 2.1). Примером использования сложной формы оператора if является функция, представленная на рис. 2.4, а вызвать её можно так, как показано ниже

>> ifdemo(5)

а не равно нулю, единице или двум

Функции disp используется для вывода сообщения на дисплей.

Таблица 2.1

Простая

Сложная

if условие

операторы

end

if условие1

операторы

elseif условие2

операторы

elseif условие3

операторы

. . . . . . . . . . . .

else

операторы

end

if условие

операторы

else

операторы

end

Рис. 2.4. Окно редактора М-файла с функцией ifdemo(a)

Другим оператором ветвления является switch. У него следующий синтаксис

switch выражение

case значение выражения1

операторы1

case {значение выражения2, значение выражения3, ...}

операторы2

. . . . . . . . . . . . . . . . .

otherwise

операторыN

end

Работает оператор switch следующим образом.

  1. Находится значение выражения.

  2. Если оно совпадает со значением выражения1, то выполняются опрераторы1.

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

  4. Если оно не совпадает ни с одним из значений выражений, то выполняется операторыN.

Пример. Рассмотренный выше пример с использованием оператора switch будет иметь вид, показанный на рис. 2.5, а результат её вызова показан ниже

>> switchdemo(2)

А равно двум или трём

Рис. 2.5. Окно редактора М-файла с функцией switchdemo(a)

Для конструирования условных выражений в MatLab используются следующие операции сравнения: == − равно, ~= − не равно, > − больше, < − меньше, >= − больше или равно, <= − меньше или равно. К логическим операциям относятся: A&B and(A,B) − логическое И, A|B or(A,B) − логическое ИЛИ, ~A not(A) − логическое НЕТ, xor(A) − исключающее ИЛИ.

В MatLab установлен следующий приоритет (порядок выполнения) операций:

  1. ~ (логическое НЕТ);

  2. .’ (транспонирование), ^ (возведение в степень, в том числе поэлементно), унарный плюс и унарный минус;

  3. * (умножение, в том числе поэлементное), / (деление, в том числе поэлементное);

  4. + (сложение), - (вычитание);

  5. == (равно), ~= (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно);

  6. A&B and(A,B) (логическое И), A|B or(A,B) (логическое ИЛИ), xor(A) (исключающее ИЛИ).

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

2.1.3. Циклические алгоритмы Для многократного выполнения некоторой последовательности операторов MatLabрасполагает двумя видами циклов:

  • for – его целесообразно использовать, если заранее известно число итераций в цикле;

  • while – его следует использовать, если цикл должен завершиться при выполнении некоторого условия и число итераций заранее не известно.

Синтаксис оператора for следующий:

for count=start:step:final

операторы

end

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

У оператора while следующий синтаксис:

while условие

операторы

end

Если условие истинно, то выполняются операторы, в противном случае выполнение оператора while завершается.

На рис. 2.6 представлено окно редактора М-файла с функцией count(x,n), результатом выполнения которой являются два числа F и W − значения суммы

,

вычисляемые с использованием циклов for и while соответственно. Результат вызова упомянутой функции показан ниже

>> [F W]=count(1,6)

F =

23.5071

W =

23.5071

В MatLab имеются ещё два оператора, используемые вместе с рассмотренными операторами цикла. Первый из них (break) прерывает выполнение операторов цикла, а второй (continue) − влечёт за собой прекращение выполнения операторов текущей итерации и переход на следующую (т.е или на проверку условия, если у нас оператор while, или на выполнение count=start:step:final − если у нас оператор for).

Рис. 2.6. Окно редактора М-файла с функцией count(x,n)

Разложение функций в ряд Фурье чрезвычайно широко используется в радиотехнике. Периодическая с периодом на отрезкефункция , где n − любое целое число, называется абсолютно интегрируемой на отрезке , если существует интеграл. Каждой абсолютно интегрируемой на отрезкефункцииf(x) можно поставить в соответствие её тригонометрический ряд Фурье:

.

Коэффициенты тригонометрического ряда Фурье вычисляют по формулам Эйлера-Фурье:

.

Справедливо следующее утверждение. Если функция f(x) кусочно-гладкая на отрезке , то её тригонометрический ряд ФурьеS(x) сходится в каждой точке этого отрезка. Выражение вида

называется n-ой частичной суммой ряда Фурье. При этом , еслиf(x) непрерывна в точке и , еслиf(x) терпит разрыв первого рода (скачок) в точке .

Пример. Построим графики при n=12 для периодической с периодом функцииf(x), заданной следующим графиком на

f(x)

2

0

- -/2 /2 x

Справа от графика функции f(x) записано её аналитическое выражение.

Порядок выполнения задания следующий:

  1. Формируем М-файл функцию fz(x) − см. рис. 2.7.

Рис. 2.7. Окно редактора М-файла с функцией fz(x)

2. Формируем две М-файл функции a(k) и b(k), вычисляющие соответственно значения коэффициентов и − см. рис. 2.8.

Рис. 2.8. Окно редактора М-файла с функциями a(k) и b(k)

  1. Определяем функцию f(x). Для этого следует ввести клавиатуры символы f(x), нажать комбинацию клавиш <Shift>+<:>, затем следует щелкнуть по кнопке панели программирования. В открывшейся панели следует щелкнуть по кнопке Add Line , после чего, используя кнопки if этой же панели, кнопку |x| панели “калькулятор”, а также кнопки и > панели равенств и отношений строится определение функции f(x).

  2. Задаем диапазон изменения k (аналогично тому, как это делалось выше при построении таблицы функции).

  3. Определяем ak, bk и S(x,n). Здесь следует использовать панель “операций математического анализа”, а для ввода в рабочий документ, например, выражения ak:= следует нажать клавиши: a[k и комбинацию клавиш <Shift>+<:>.

  4. В заключении строим график функции S(x,n), что также было рассмотрено ранее.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]