Операторы отношения и их функции
ЭЛЕМЕНТАРНЫЕ МАТЕМАТИЧЕСКИЕ ВЫЧИСЛЕНИЯ
Арифметические операторы и функции
Арифметические операторы наиболее распространены и известны. Каждый оператор имеет аналогичную по назначению функцию. Так оператору матричного умножения «*» соответствует функция mtimes(Ml, M2). Примеры применения арифметических операторов приводились ранее. В табл. 3.1 представлен список арифметических операторов и их синтаксис.
Таблица 3.1
Функция | Название и символ обозначения оператора | Синтак-сис | Функция | Название и символ обозначения оператора | Синтак-сис |
Plus | Плюс + | М1 + М2 | Minus | Минус – | М1 – М2 |
Uplus | Унарный плюс + | +М | Uminus | Унарный минус – | –М |
Mtimes | Матричное умножение * | М1*М2 | Times | Поэлементное умножение массивов .* | А1.*А2 |
Mpower | Возведение матрицы в степень ^ | М1^х | Power | Поэлементное возведение массива в степень .^ | А1.^х |
Mrdivide | Деление матриц слева направо / | М1/М2 | Rdivide | Поэлементное деление массивов слева направо ./ | А1./А2 |
Mldivide | Обратное (справа налево) деление матриц \ | M1\M2 | Ldivide | Поэлементное деление массивов справа налево .\ | А1.\А2 |
Kron | Тензорное умножение Кронекера kron | kron(X, Y) |
В системе Matlab одним из основных положений программирования является соответствие функций операторам и командам, позволяющее одновременно использовать элементы как операторного, так и функционального программирования. В математических выражениях имеется приоритет исполнения. В Matlab приоритет логических операторов выше, чем арифметических, приоритет возведения в степень выше приоритетов умножения и деления, приоритет умножения и деления выше приоритета сложения и вычитания. Для изменения приоритета операций в математических выражениях используются круглые скобки. Степень вложения скобок не ограничивается.
Вычисление произведений
Три функции перемножают элементы матриц (примеры в табл. 3.2):
• prod(A) возвращает произведение элементов массива, если А – вектор, или вектор-строку, содержащую произведения элементов каждого столбца, если А – матрица; prod (A, dim) возвращает матрицу (массив размерности два) с произведением элементов массива А по столбцам (dim = 1), по строкам (dim = 2), по иным размерностям в зависимости от значения скаляра dim;
• cumprod(A) возвращает произведение с накоплением. Если А – вектор, то cumprod(A) возвращает вектор, содержащий произведения с накоплением элементов вектора А. Если А – матрица, то cumprod(A) возвращает матрицу того же размера, что и А, содержащую произведения с накоплением для каждого столбца матрицы А (первая строка – без изменений, во второй строке – произведение первых двух элементов каждого столбца, в третьей строке – элементы второй строки матрицы-результата умножаются на элементы третьей строки матрицы входного аргумента по столбцам и т. д.); cumprod(A, dim) возвращает произведение с накоплением элементов по строкам или столбцам
матрицы в зависимости от значения скаляра dim;
Таблица 3.2
Матрица | Операция | Матрица | Операция |
»A = [1234; 2457; 6] A = | »B = prod(A) B = | »A = [1 2 3;4 5 6;7 8 9] A = 1 2 3 4 5 6 7 8 9 | »В = cumprod(A) B = 1 2 3 4 10 18 28 80 162 |
• cross(U, V) возвращает векторное произведение векторов U и V в трехмерном пространстве, т. е. W = U ´ V (U и V – обязательно векторы с тремя элементами); cross(U, V, dim) возвращает векторное произведение U и V по размерности, определенной скаляром dim. Здесь U и V – многомерные массивы, которые должны иметь одну и ту же размерность, причем размер векторов в каждой размерности size(U, dim) и size(V, dim) должен быть равен 3.
Суммирование элементов
Определены следующие функции суммирования элементов массивов (примеры в табл. 3.3):
• sum(A) возвращает сумму элементов массива, если А – вектор, или вектор-строку, содержащую сумму элементов каждого столбца, если А – матрица; sum(A, dim) – сумму элементов массива по столбцам (dim = 1), строкам (dim = 2) или иным размерностям в зависимости от значения скаляра dim;
Таблица 3.3
Матрица | Операция | Матрица | Операция |
»A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 | »B = sum(A) B = 34 34 34 34 | »A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 | »В = cumsum(A,1) B = 16 2 3 13 21 13 13 21 30 20 19 33 34 34 34 34 |
• cumsum(A) выполняет суммирование с накоплением. Если А – вектор, то cumsum(A) возвращает вектор, содержащий результаты суммирования с накоплением элементов вектора А. Если А – матрица, то cumsum(A) возвращает матрицу того же размера, что и А, содержащую суммирование с накоплением для каждого столбца матрицы А; cumsum(A, dim) выполняет суммирование с накоплением элементов по размерности, определенной скаляром dim. Например, cumsum(A, 1) выполняет суммирование по столбцам.
Операторы отношения и их функции
Над массивами можно выполнять операции отношения для сравнения двух величин, векторов или матриц одинакового размера:
A < B , A <= B , A > B , A >= B (только для действительных частей), A = = B, A ~ =B (равно/не равно – для действительных и мнимых частей), которые порождают массив с единицами (истина) и нулями (ложь) той же размерности. Все операторы отношения имеют 2 операнда, например x и y, и записываются, как показано в табл. 3.4. Примеры использования даны в табл. 3.5.
Таблица 3.4
Функция | Название | Оператор | Пример |
Eq | Равно | = = | x = = y |
Ne | He равно | ~ = | x ~ = y |
Lt | Меньше чем | < | x < y |
Gt | Больше чем | > | x > y |
Le | Меньше или равно | <= | x <= y |
Ge | Больше или равно | >= | x >= y |
Таблица 3.5
Дано | Равно | He равно | Больше | Меньше | Больше или равно | Меньше или равно | |
»d = [4 3] d = 4 3 | »f = [2 3] f = 2 3 | »d = = f ans = 0 1 | »d ~ = f ans = 1 0 | »d > f ans = 1 0 | »d < f ans = 0 0 | »d >= f ans = 1 1 | »d <= f ans = 0 1 |
Если один из операндов – скаляр, происходит сравнение всех элементов второго операнда-массива со значением этого скаляра.
Логические операции
Аналогично реализуются и логические операции. Логические операторы и соответствующие им функции (табл. 3.6) служат для реализации поэлементных логических операций над элементами одинаковых по размеру массивов: отрицания ~A, конъюнкции (И) A&B, дизъюнкции (ИЛИ) A|B и т. д. Аргументами логических операторов могут быть числа и строки. Если аргумент – число, логический нуль соответствует числовому нулю, а любое отличное от нуля число – логической единице. Для строк действует правило – каждый символ строки представляется своим ASCII-кодом.
Таблица 3.6
Функция | Название |
And | Логическое И (AND) & |
Or | Логическое ИЛИ (OR) | |
Not | Логическое НЕ (NOT) ~ |
Хоr | Исключающее ИЛИ (EXCLUSIVE OR) |
Any | Верно, если не все элементы вектора равны нулю |
All | Верно, если все элементы вектора не равны нулю |
Таблица 3.7
Дано | Логическое И | Логическое ИЛИ | Логическое НЕ (NOT) |
»d = [1 1 1] d = 1 1 1 »f = [0 0 1] f = 0 0 1 | »d & f ans = 0 0 1 | » d½f ans = 1 1 1 | »~f ans = 1 1 0 |
Исключающее ИЛИ | Верно, если не все элементы вектора равны нулю | Верно, если все элементы вектора не равны нулю | |
»xor(d,f) ans = 1 1 0 | »any(f) ans = | »all(f) ans = |
Примеры использования логических операций приведены в табл. 3.7.