Операции отношения и логические операции над числами

      Комментарии к записи Операции отношения и логические операции над числами отключены

В первой части настоящей главы были рассмотрены арифметические операции над операндами типа 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 шире, чем в традиционных языках программирования в силу того, что операндами являются не только числа (скаляры), но и векторы, матрицы, массивы. Операнды также могут быть символьными выражениями.

Операциинадмножествами