Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Моделювання систем електропостачання...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
961.54 Кб
Скачать

Тема 5. Операторы и функции в matlab

Цель работы: Освоить основные операторы и функции системы MATLAB.

Спецификой MATLAB является то, что большинство операторов и функций относится к матричным операциям. Это может служить причиной серьезных недоразумений. Например, операторы умножения * и деления / вычисляют произведение и частное от деления двух массивов, векторов или матриц. Есть ряд специальных операторов, например, оператор \ означает деление справа налево, а операторы .* и ./ означают почленное умножение и деление массивов. Полный список операторов можно получить, используя команду

» help ops

Арифметические операторы:

» help ops

Operators and special characters.

Arithmetic operators.

Plus - Plus

uplus - Unary plus

minus - Minus

uminus - Unary minus

mtimes - Matrix multiply

times - Array multiply

mpower - Matrix power

power - Array power

Число арифметических операторов в MATLAB значительно расширено и включает в себя матричные и арифметические операции.

Операторы отношения служат для сравнения двух величин, векторов или матриц, все операторы отношения имеют две сравниваемые величины.

Данные операторы выполняют поэлементное сравнение векторов или матриц одинакового размера и логическое выражение принимает значение 1 (True), если элементы идентичны, и значение 0 (False) в противном случае.

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

Функции в общем случае имеют список аргументов (параметров), заключенный в круглые скобки. Например, функция Бесселя записывается как bessel (NU,X). В данном случае список параметров содержит два аргумента: NU в виде числа и X в виде вектора.

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

[Y1, Y2,…]=func(X1, X2,…)

Здесь Y1, Y2, … - список выходных параметров и X1, X2,… - список входных параметров.

Со списком элементарных функций можно ознакомится, выполнив команду help elfun, а со списком специальных функций – команду help specfun.

Функции могут быть встроенными (внутренними) и внешними (М-функциями). Так, встроенными являются наиболее распространенные элементарные функции, например sin(x) и exp(y), тогда как функция sinh(x) является внешней.

В тригонометрических функциях углы измеряются в радианах.

Таблица 1

Функция

Синтаксис

х   модуль

abs(x)

ех – экспонента

exp(x)

 натуральный логарифм

log(x)

 логарифм по основанию 2

log2(x)

 десятичный логарифм

log10(x)

2х  2 в степени х

pow(x)

 квадратный корень

sqrt(x)

arcсos x – арккосинус

acos(x)

arсctg x – арккотангенс

acot(x)

arcсosec x – арккосеканс

acsc(x)

arcсes x – арксеканс

asec(x)

arcsin x – арксинус

asin(x)

arсtg x – арктангенс

atan(x)

сos x – косинус

cos(x)

ctg x – котангенс

cot(x)

sec x – секанс

sec(x)

сosec x – косеканс

csc(x)

sin x – синус

sin(x)

tg x – тангенс

tan(x)

arсch x – арккосинус гиперболический

acosh(x)

arсcth x – арккотангенс гиперболический

acoth(x)

arссosech x – арккосеканс гиперболический

acsch(x)

arсsech x – арксеканс гиперболический

asech(x)

arсsh x – арккосинус гиперболический

asinh(x)

arсtgh x – арктангенс гиперболический

atanh(x)

ch x – косинус гиперболический

cosh(x)

сtgh x – котангенс гиперболический

coth(x)

сosech x – косеканс гиперболический

csch(x)

sech x – секанс гиперболический

sech(x)

sh x – синус гиперболический

sinh(x)

tgh x – тангенс гиперболический

tanh(x)

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

MATLAB поддерживает также множество специальных математических функций.

На практике очень часто необходимо произвести формирование упорядоченных числовых последовательностей. Такие последовательности нужны для создания векторов или назначений абсциссы при построении графиков. Для этого в MATLAB используется оператор : (двоеточие).

Начальное_значение :Шаг: Конечное_значение

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

Начальное_значение < Конечное_значение, если Шаг > 0

Начальное_значение > Конечное_значение, если Шаг < 0

Если шаг не задан, то он принимается равным 1 или -1 в указанных соотношениях.

» 1:5

ans =

2 3 4 5

» i=0:2:10

i =

2 4 6 8 10

» V=0:pi/2:2*pi

» V

V=0 1.578 3.1416 4.7124 6.2832

Как отмечалось ранее, принадлежность MATLAB к матричным системам вносит коррективы в назначение операторов и приводит, при неумелом их использовании, к казусам. Рассмотрим следующий характерный пример:

» x=0:5

x=

1 2 3 4 5

» cos(x)

ans =

1.0000 0.5403 -0.4161 -0.9900 –0.6536 0.2837

» sin(x)/x

ans =

-0.0862

Вычисление массива косинусов здесь прошло корректно. А вот вычисление массива функции sin(x)/x дает «неожиданный» эффект – вместо массива с шестью элементами вычислено единственное значение. Причина «парадокса» здесь в том, что оператор / вычисляет отношение двух матриц, векторов или массивов. Если они одной размерности, то результат будет одним числом, что в данном случае и выдала система. Чтобы действительно получить массив значений sin(x)/x, надо использовать специальный оператор почленного деления массивов – ./. Тогда будет получен массив чисел:

» sin(x)./x

Warning: Divide by zero.

Ans =

NaN 0.8415 0.4546 0.0470 -0.1892 -0.1918

Впрочем, и тут без особенностей не обошлось. Так, при x=0 значение sin(x)/x дает устранимую неопределенность вида 0/0=1. Однако, как и всякая численная система, MATLAB классифицирует попытку деления на 0 как ошибку и выводит соответствующее предупреждение. А вместо ожидаемого численного значения выводится символьная константа NaN, означающая что неопределенность 0/0 – это все же необычное число.

Выражения с оператором : могут использоваться в качестве аргументов функций для получения множественных их значений. Таким образом, оператор : является весьма удобным средством задания регулярной последовательности чисел. Он широко используется при построении графиков.

MATLAB предназначен для проведения сложных операций с векторами и матрицами. При этом по умолчанию предполагается, что каждая переменная – это вектор или матрица. Например, если задано х = 1, то это значит, что х – это вектор с одним элементом, равным 1. Если надо задать вектор из трех элементов, то их значения надо перечислить в скобках, разделяя пробелами.

>>V = [1 2 3]

V =

1 2 3

В данном случае задан вектор-строка. Если разделить элементы точкой с запятой, то получим вектор-столбец.

>>V = [1; 2; 3]

V = 1

2

3

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

>>Т = [1 2 3; 4 5 6; 7 8 9]

Т = 1 2 3

4 5 6

7 8 9

Для указания элемента вектора или матрицы используются выражения вида V(i) или T(i, j). Например:

>>Т (3,2)

ans = 8

Если элементу Т(i, j) нужно присвоить новое значение х, то используют оператор присваивания

Т (3,2) = х;

Выражение Т(i) с одним индексом дает доступ к элементам матрицы, развернутым в один столбец. Такая матрица образуется из исходной, если подряд выписать ее столбцы. Например:

>>Т (3)

ans = 7

>>Т (8)

ans = 6

Наряду с операциями над отдельными элементами матриц и векторов MATLAB позволяет осуществить арифметические операции сразу над всеми элементами. Для этого перед знаком операции ставится точка.

Имеются также ряд специальных функций для задания векторов и матриц – например функции ones и zeros. Эти функции служат для создания одномерных и многомерных массивов. Функция ones создает массив с единичными элементами

>> а = ones (3, 2)

a =1 1

1 1

1 1

Функция zeros создает массив с нулевыми элементами

>> b = zeros (2, 3)

b = 0 0 0

0 0 0

В MATLAB существует 3 типа операторов цикла.

Это оператор : (двоеточие).

Оператор forend который используется для организации цикла с фиксированным числом повторений.

for var = Выражение Операторы end ;

Здесь var – счетчик цикла – любая переменная, обычно это i, j, k, l, m и т. Д. Выражение записывается в виде s : d : e, где s – начальное значение счетчика цикла var, d – шаг изменения и е – конечное значение var. Возможна и запись в виде s : e, тогда d = 1. Список операторов завершается ключевым словом end.

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

Оператор break используется для досрочного прерывания цикла. Возможны вложенные циклы >> for i = 1 : 3 for j = 1 : 3 a (i, j) = i  j ; end ; end ;

В результате выполнения этого цикла формируется матрица а

>>> a

a =

=

1 2 3

2 4 6

3 6 9

Циклы типа while … end выполняются до тех пор, пока выполняется заданное условие. Оператор записывается в виде:

while Логическое условие Операторы end ;