- •Информатика
- •Часть II
- •Предисловие
- •Лабораторная работа № 1
- •1.1.3. Некоторые из основных приемов работы в MatLab
- •1.2. Порядок выполнения работы
- •1.3. Контрольные вопросы и задания
- •2.1.2. Разветвляющиеся алгоритмы Реализацию программы для этого типа алгоритма рассмотрим на примере. Пусть необходимо вычислить значение следующей функции:
- •Другим оператором ветвления является switch. У него следующий синтаксис
- •А равно двум или трём
- •2.1.3. Циклические алгоритмы Для многократного выполнения некоторой последовательности операторов MatLabрасполагает двумя видами циклов:
- •2.2. Порядок выполнения работы
- •2.4. Контрольные вопросы и задания
- •3.2. Порядок выполнения работы
- •Контрольные вопросы и задания
- •4.1.3. Интерполяция таблично заданной функции двух независимых переменных
- •4.1.4. Сплайн-интерполяция
- •4.2. Порядок выполнения работы
- •Литература
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, то выполняются опрераторы1.
Если оно совпадает с одним из результатов списка {значение выражения2, значение выражения3, ...}, то выполняются операторы2.
Если оно не совпадает ни с одним из значений выражений, то выполняется операторы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 установлен следующий приоритет (порядок выполнения) операций:
~ (логическое НЕТ);
.’ (транспонирование), ^ (возведение в степень, в том числе поэлементно), унарный плюс и унарный минус;
* (умножение, в том числе поэлементное), / (деление, в том числе поэлементное);
+ (сложение), - (вычитание);
== (равно), ~= (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно);
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) записано её аналитическое выражение.
Порядок выполнения задания следующий:
Формируем М-файл функцию fz(x) − см. рис. 2.7.
Рис. 2.7. Окно редактора М-файла с функцией fz(x)
2. Формируем две М-файл функции a(k) и b(k), вычисляющие соответственно значения коэффициентов и − см. рис. 2.8.
Рис. 2.8. Окно редактора М-файла с функциями a(k) и b(k)
Определяем функцию f(x). Для этого следует ввести клавиатуры символы f(x), нажать комбинацию клавиш <Shift>+<:>, затем следует щелкнуть по кнопке панели программирования. В открывшейся панели следует щелкнуть по кнопке Add Line , после чего, используя кнопки if этой же панели, кнопку |x| панели “калькулятор”, а также кнопки и > панели равенств и отношений строится определение функции f(x).
Задаем диапазон изменения k (аналогично тому, как это делалось выше при построении таблицы функции).
Определяем ak, bk и S(x,n). Здесь следует использовать панель “операций математического анализа”, а для ввода в рабочий документ, например, выражения ak:= следует нажать клавиши: a[k и комбинацию клавиш <Shift>+<:>.
В заключении строим график функции S(x,n), что также было рассмотрено ранее.