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

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

Для сравнения величин используются операции отношения (таблица 1.16). Операторы отношения всегда выполняются поэлементно. Сравнивать можно только массивы одинаковой размерности. Для векторов и прямоугольных массивов, оба операнда должны быть одинакового размера, за исключением случая, когда один из них скаляр. В этом случае MATLAB сравнивает скаляр с каждым элементом массива. Результатом выполнения операция отношения есть 1, если отношение истинно (True) и 0 – если ложно (False).

Операторы отношения, как правило, применяется для изменения последовательности выполнения операторов программы. Поэтому они чаще всего используются в теле операторов if, for, while, switch.

Таблица 1.16. Операции отношения

Функция

Оператор (синтаксис)

Равно

= = (х = у)

Не равно

~ = (х у)

Меньше

< (х < у)

Больше

> (х > у)

Меньше или равно

< = (х < = у)

Больше или равно

> = (х > = у)

Пример.

>> A = [2 7 6; 9 0 -1; 3 0.5 6];

>> B = [8 0.2 0; -3 2 5; 4 -1 7];

>> А< B % поэлементное сравнение двух матриц

ans =

1

0

0

% значения 1 соответствую случаю aij<bij,

0 – в противном случае

0

1

1

1

0

1

Для работы с массивами полезной бывает функция find, которая определяет индексы элементов массива, которые удовлетворяют заданному логическому условию (элементы матрицы просматриваются по столбцам). Как правило, она используется для создания шаблонов сравнения и создания массивов индексов. Функция возвращает вектор индексов тех элементов, которые удовлетворяет заданному условию.

Синтаксис.

find( х <условие> ) – определение элементов, удовлетворяющих заданому условию.

Пример.

Всем элементы матрицы магического квадрата 4х4, которые больше 8, присвоим значение 100.

>> A = magic(4) % формируем матрицу А – магический квадрат

A =

16

2

3

13

5

11

10

8

9

7

6

12

4

14

15

1

>> k = find(A > 8); % определяем номера элементов, удовлетворяющих

условию аij>8

k = 1

3

6

8

10

12

13

15

>> A(k) = 100 % элементам, удовлетворяющим условию аij>8

присваивается значение 100

A =

100

2

3

100

5

100

100

8

100

7

6

100

4

100

100

1

Функция вида: [i, j] = find(x) позволяет получить индексы ненулевых элементов прямоугольного массива.

Функция вида:[i, j, s] = find(x) возвращает кроме того и их значения в виде вектора s.

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

Аргументами логических операторов могут быть числа и строки. При аргументах-числах логический нуль соответствует числовому нулю, а любое отличное от нуля число воспринимается как логическая единица. Для строк действует уже отмеченное правило – каждый символ строки представляется своим ASCII-кодом. В таблице 1.17 приведены логические операции в порядке уменьшения приоритета.

Таблица 1.17. Логические операции

Функция

Оператор

Логическое НЕ

~ ; not (not (a, b))

Логическое И

&;and (and (a, b))

Логическое ИЛИ

|;or (or (a, b))

Исключающее ИЛИ

xor (xor (a, b))

Верно, если все элементы вектора равны нулю

any (any (a))

Верно, если все элементы вектора не равны нулю

all (all (a))

Примеры.

Пусть задано два вектора А и В.Продемонстрируем выполнение логических операций.

>> А=[1 2 3]; В=[1 0 4]; 

  1. >> and(A,B) 

ans = 1    0    0

  1. >> оr(А,В)

ans = 1    1     1 

  1. >> А&В 

ans = 1    0    0 

  1. >> А|В 

ans= 1     1     1

  1. >> not(А)

 ans = 0    0    0 

  1. >> not(B) 

ans = 0     1     0 

  1. >> ~B 

ans= 0    1    0 

  1. >> xor(A,B)

 ans = 0     1     0 

  1. >> any(A) 

ans = 1

  1. >> all([0 0 0])

 ans = 0

  1. >> all(B) 

ans = 0

  1. >> and('abc','012') 

ans = 1     1     1

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

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

  • (a*b) <  (c*d) – объединение арифметических и логических команд;

  • (A & B) == (C | D)объединение логических команд и операции сравнения "равно" – ==.

  • x = (b ~= 0) && (a/b > 18.5) – объединение логических команд и операции "больше" – >.

Контрольные вопросы

  1. Какие арифметические операции предусмотрены в среде MATLAB?

  2. В чем разница между записью матричных и поэлементных арифметических операций? Для каких арифметических операций эта разница существенна, а для каких нет?

  3. Какие операции отношения предусмотрены в среде MATLAB и, какими символами они задаются?

  4. Какие логические операции предусмотрены в среде MATLAB и, какими символами они задаются?

  5. Какой преоритет имеют арифметические, логические операции и операции отношения?

  6. Приведите пример построения сложного логического выражения. содержащего операции различного типа.

  7. Какие элементарные функции реализованы в среде MATLAB?

  8. Как можно определить назначение стандартной функции по ее имени?

  9. Какие стандартные функции, связанные с арифметическими операциями предусмотрены в среде MATLAB?

Упражнения.

1. Задайте матрицу А размерности 3х3 и вектор-столбец b, состоящий из чисел 1,2,3. Выполните умножение матрицы на вектор: 1) по правилам матричных операций; 2) используя поэлементное умножение на b[2].

Результаты выведите на экран и сравните.

2. Вычислите значения арифметических выражений:

, , .

Округлите результат до целого и найдите абсолютную и относительную погрешности.

3. Вычислите значения арифметических выражений:

; 2) ; 3)

при ; ; ; ; ; .

4. Решите систему линейных уравнений:

а) используя матричное уравнение ;

б) методом Крамера.

5. Для всех значений параметра х, заданого на отрезке с шагом 0,05π значение функции .

6. Разложите на сомножетели числа: 24567; ln(123456).

(Примечание. Значением логарифма явлеется действителтное число, поэтому его нужно округлить до целого, а затем выполнять разложение).

7. В группе 15 человек.для дежурства выделяются 3 человека. сколькими способами можно это сделать?

(Подсказка. Воспользуйтесь формулой сочетаний: ).

8. Задан вектор v=(2,3; -1,7; 3.1; 7,4;-6,1; 0.9; 1.6; -1.8). Используя логические операции выбирите все положительные значения менше 3.

9. Пусть задано две матрицы одинаковой размерности. Проверте, появляются ли отрицательные элементы в результате их суммирования.

10. Пусть задана некоторая матрица А. Проверте, содержит ли она нулевые и отрицательные элементы. элементы

11. После выступления трех спортсменов судейская коллегия из 7 человек выставила им баллы. Используя логические операции, определите – мнения каких судей сошлись.

12. Определить отрицательные значения функции при с шагом 0,05.