Операции отношения и логические операции над числами
В первой части настоящей главы были рассмотрены арифметические операции над операндами типа double. Вместе с тем, помимо арифметических операций для операндов данного типа определены логические операции и операции отношения.
Рис. 2.12.20. Изображение траектории движения точки на плоскости.
Рис. 2.12.21. Изображение траектории движения точки в пространстве.
Операции отношения.
Операции отношения сравнивают между собой два операнда по величине. Способы записи этих операций представлены в таблице 2.13.1.
В случае истинности операции отношения ее величина (т.е. результат вычисления соответствующего выражения) равна 1, а в противоположном случае – 0. Приведем ниже пример вычислений в командном окне:
x=2; y=4; z=8;
x
ans =
xy
ans =
y~=z
ans =
y==z
ans =
(x
ans =
Значение выражения xy) равно нулю (ложь). Выражение y~=z является истинным, так как значение переменной y равное 4, не равно значению переменной z, равному 8. Последующее выражение y==z не является истинным, вследствие чего его значение равно 0. Далее, в силу истинности выражений x
Операции отношения имеют более низкий приоритет по сравнению с арифметическими операциями, поэтому при вычислении последнего выражения в приведенном выше примере возникла необходимость заключения в скобки операций отношения x
a=1; b=2; c=4;
(ba)+c
ans =
ba+c
ans =
Функции, соответствующие операциям отношения (функции отношения), приведены в таблице 2.13.2. Соответствие функций операторам и ко-
Таблица 2.13.1. Обозначение операций сравнения.
Операция | Обозначениев системе MATLAB | Справочно – обозначениев языке программирования FORTRAN (стандарт Fortran 90 и позднее). |
Меньше | ||
Меньше или равно | ||
Больше | ||
Больше или равно | = | = |
Равно | == | == |
Не равно | ~= | /= |
Таблица 2.13.2. Функции, соответствующие операциям отношения.
Операция | Функцияв системе MATLAB | Пример |
Меньше | lt | lt(x,y) |
Меньше или равно | le | le(x,y) |
Больше | gt | gt(x,y) |
Больше или равно | ge | ge(x,y) |
Равно | eq | eq(x,y) |
Не равно | ne | ne(x,y) |
мандам в системе MATLAB является одним из основных положений программирования, позволяющим одновременно использовать элементы как операторного, так и функционального программирования.
Логические операции.
Логические операции над вещественными числами (логические связки) обозначаются знаками, представленными в таблице 2.13.3.
Представленные в таблице 2.13.3 логические операторы предназначены для выполнения поэлементных логических операций над массивами одинаковых размеров. Заметим, что первые две операции, приведенные в таблице 2.13.2, являются двухоперандными (бинарными), а последняя операция является однооперандной (унарной). Соответственно знак ~ ставится перед операндом, а знакии | ставятся между операндами.
Логические операции трактуют свои операнды как «истинные» (не равные нулю) и «ложные» (равные нулю). Если оба операнда операции «Логическое И» истины (не равны нулю), то результат этой операции равен 1 («истина»), во всех же остальных случаях операция «Логическое И» возвращает значение 0 (ложь). Операция «Логическое ИЛИ» возвращает 0 (ложь) только лишь в случае, когда являются ложными (равными нулю) оба операнда). Операция «Логическое НЕ» инвертирует ложь на истину и наоборот, т.е. если ее операндом является ненулевое число, то эта операция возвращает 0, ну а если операнд нулевой, то тогда значением рассматриваемой операции будет единица.
Таблица 2.13.3. Обозначение логических операций (логических связок).
Операция | Обозначениев системе MATLAB(логическиеоператоры) | Справочно – обозначениев языке программирования FORTRAN (стандарт Fortran 90 и позднее). |
Логическое И | .and. | |
Логическое ИЛИ | | | .or. |
Логическое НЕ | ~ | .not. |
Таблица 2.13.4. Функции, соответствующие логическим операциям.
Операция | Функцияв системе MATLAB |
Логическое И | and |
Логическое ИЛИ | or |
Логическое НЕ | not |
Исключающее ИЛИ | xor |
Таблица 2.13.5. Работа логических операторов и функций.
x | y | xyand(x,y) | x|yor(x,y) | ~x(not x) | xor(x,y) |
Функции, соответствующие операциям сравнения и логическим операторам, приведены в таблице 2.13.4. Соответствие функций операторам и командам в системе MATLAB является одним из основных положений программирования, позволяющим одновременно использовать элементы как операторного, так и функционального программирования.
Более наглядное представление о работе логических операторов дает таблица 2.13.5, где в качестве операндов используются значения 0 и 1.
Помимо перечисленных в таблице 2.13.4, система MATLAB включает следующие функции:
any – возвращает 1, если в заданном векторе есть хотя бы один ненулевой элемент; если аргументом является матрица, результат выдается в виде вектора, элементы которого соответствуют столбцам заданной матрицы;
all – возвращает 1, если среди элементов исходного вектора нет нулевых; если аргументом является матрица, результат выдается в виде вектора, элементы которого соответствуют столбцам заданной матрицы.
Приведем пример:
A=[1 0 4; 5 0 0; 6 0 1]
A =
1 0 4
5 0 0
6 0 1
any(A)
ans =
1 0 1
all(A)
ans =
1 0 0
Приоритет операций.
Логические операции (кроме операции «Логическое НЕ», называемой также «операция отрицания») имеют самый низкий приоритет. Более подробные сведения о приоритете операций (в порядке убывания) в системе MATLAB приведена ниже:
1) Круглые скобки ( );
2) Транспонирование (.’), транспонирование с комплексным сопряжением (’), возведение в степень (^), поэлементное возведение в степень (.^);
3) Унарный плюс (+), унарный минус (-), логическое отрицание (~);
4) Умножение и деление (.*, ./, .\, *, /, \);
5) Сложение и вычитание (+, -);
6) Оператор сечения массива (:);
7) Операции отношения (=, ==, ~=);
8) Логическое И ();
9) Логическое ИЛИ (|);
Отметим, что в одном выражении можно использовать все вышеперечисленные операции (арифметические, логические, операции сравнения), при этом последовательность выполнения операций определяется их расположением внутри выражения, их приоритетом и наличием круглых скобок (круглые скобки используются, в частности, для изменения приоритета операций в математических выражениях, причем степень вложения скобок не ограничивается).
Арифметические операции с комплексными числами реализуются в системе MATLAB точно также как и с вещественными числами (в соответствии с известными математическими правилами). Тоже самом относится и к операциям отношения «равно» и «не равно». Вместе с тем, как известно, операции сравнения комплексных чисел в математике не определены. Тем не менее, в системе MATLAB соответствующие операции с комплексными числами проводятся, но их значения определяются действительными частями рассматриваемых операндов:
x=1+2i; y=5i; z=7i;
xy
ans =
y
ans =
y=z
ans =
Если один из операндов является скаляром, а другой – массивом, то происходит сравнение всех элементов второго операнда-массива со значением первого операнда-скаляра:
M=[-4 1; 0 2]
M =
-4 1
0 2
M0
ans =
0 1
0 1
Таким образом, спектр применения операторов отношения в системе MATLAB шире, чем в традиционных языках программирования в силу того, что операндами являются не только числа (скаляры), но и векторы, матрицы, массивы. Операнды также могут быть символьными выражениями.