- •Раздел 1 Основные понятия среды matlab
- •1. Начало работы в среде matlab
- •1.1. Характеристика среды matlab
- •1.2. Общие положения и правила работы в среде matlab
- •1.3. Работа в командном окне
- •1.4. Правила и особенности ввода математических выражений
- •1.5. Сохранение содержимого рабочего окна
- •2 Системные переменные и типы данных
- •2.1 Системные переменные
- •2.2. Типы данных. Описание основных типов
- •2.3. Комплексные числа
- •2.4. Символьные переменные
- •2.5. Массивы
- •2.5.1 Задание массивов
- •2.5.2 Доступ к элементам массивов
- •2.5.3 Функции обработки массивов
- •2.6 Тип данных структура (struct)
- •2.6.1 Задание структур
- •2.6.2 Функции обработки структур
- •2.7 Тип данных ячейка (сell)
- •2.8 Функции определения типов
- •2.9 Функции для работы со значениями даты и времени
- •2.10 Функции преобразования типов
- •3. Основные операции и математические функции matlab
- •3.1 Основные арифметические операции
- •3.2 Основные элементарные функции
- •Help имя_функции,
- •3.3 Операции отношения и логические операции
- •4 Операторы среды matlab
- •4.1 Условный оператор if
- •4.2 Условный оператор switch
- •4.3 Реализация циклических процессов
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла for
- •Pause – останавливает выполнение программы до момента нажатия любой клавиши на клавиатуре; pause(n) – останавливает выполнение программы на n секунд;
- •Примеры.
- •Как и в случае сценариев, к подпрограмме функции можно обратиться по имени, более того функции могут быть компонентами математических выражений и операндов, а также параметрами других функций.
- •5.4 Создание подпрограмм с переменным списком входных и выходных параметров
- •5.5 Локальные и глобальные переменные
- •5.6 Созданий функций пользователя и указателей на функции. Функции как аргументы функций.
- •5.8 Сообщения об ошибках
- •6 Ввод данных и работа с файлами
- •6.1 Использование рабочей области Workspace
- •6.2 Чтение и запись неформатированных файлов
- •6. 3 Работа с текстовыми и бинарными файлами
- •6.3.1 Команды открытия и закрытия файлов
- •6.3.2 Команды чтения и записи fread и fwrite
- •6.4 Операции над форматированными файлами
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];
>> and(A,B)
ans = 1 0 0
>> оr(А,В)
ans = 1 1 1
>> А&В
ans = 1 0 0
>> А|В
ans= 1 1 1
>> not(А)
ans = 0 0 0
>> not(B)
ans = 0 1 0
>> ~B
ans= 0 1 0
>> xor(A,B)
ans = 0 1 0
>> any(A)
ans = 1
>> all([0 0 0])
ans = 0
>> all(B)
ans = 0
>> and('abc','012')
ans = 1 1 1
Используюя любую комбинацию арифметических, логических операторов и операторов отношения можно строить сложные логические выражения.
Следует помнить, что в MATLAB приоритет логических операторов выше, чем арифметических. Используя скобки, можно управлять последовательностью выполнения операций, например,
(a*b) < (c*d) – объединение арифметических и логических команд;
(A & B) == (C | D) – объединение логических команд и операции сравнения "равно" – ==.
x = (b ~= 0) && (a/b > 18.5) – объединение логических команд и операции "больше" – >.
Контрольные вопросы
Какие арифметические операции предусмотрены в среде MATLAB?
В чем разница между записью матричных и поэлементных арифметических операций? Для каких арифметических операций эта разница существенна, а для каких нет?
Какие операции отношения предусмотрены в среде MATLAB и, какими символами они задаются?
Какие логические операции предусмотрены в среде MATLAB и, какими символами они задаются?
Какой преоритет имеют арифметические, логические операции и операции отношения?
Приведите пример построения сложного логического выражения. содержащего операции различного типа.
Какие элементарные функции реализованы в среде MATLAB?
Как можно определить назначение стандартной функции по ее имени?
Какие стандартные функции, связанные с арифметическими операциями предусмотрены в среде 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.
