В системе MatLab достаточно просто выполняются математические операции над матрицами и векторами. Рассмотрим сначала простые операции сложения и умножения матриц и векторов. Пусть даны два вектора
a = [1 2 3 4 5]; % вектор-строка
b = [1; 1; 1; 1; 1]; % вектор-столбец
тогда умножение этих двух векторов можно записать так
c = a*b; % c=1+2+3+4+5=16
d = b*a; % d – матрица 5х5 элементов
В соответствии с операциями над векторами, умножение вектор-строки на вектор-столбец дает число, а умножение вектор-столбца на вектор-строку дает двумерную матрицу, что и является результатом вычислений в приведенном примере, т.е.
Сложение и вычитание двух векторов записывается так
a1 = [1 2 3 4 5];
a2 = [5 4 3 2 1];
c = a1+a2; % c = [1+5, 2+4, 3+3, 4+2, 5+1];
с = a2-a1; % c = [5-1, 4-2, 3-3, 2-4, 1-5];
Следует обратить внимание, что операции сложения и вычитания можно выполнять между двумя векторами-столбцами или двумя векторами-строками. Иначе MatLab выдаст сообщение об ошибке, т.к. разнотипные векторы складывать нельзя. Так обстоит дело со всеми недопустимыми арифметическими операциями: в случае невозможности их вычисления система MatLab сообщит об ошибке и выполнение программы будет завершено на соответствующей строке.
Аналогичным образом выполняются операции умножения и сложения между матрицами:
A = [1 2 3; 4 5 6; 7 8 9];
B = ones(3);
C = A+B; % сложение двух матриц одинакового размера
D = A+5; % сложение матрицы и числа
E = A*B; % умножение матрицы А на В
F = B*A; % умножение матрицы В на А
G = 5*A; % умножение матрицы на число
Операции вычисления обратной матрицы, а также транспонирования матриц и векторов, записываются следующим образом:
a = [1 1 1]; % вектор-строка
b = a’; % вектор-столбец, образованный
% транспонированием вектора-строки а.
A = [1 2 3; 4 5 6; 7 8 9]; % матрица 3х3 элемента
B = a*A; % B = [12 15 18] – вектор-строка
C = A*b; % C = [6; 15; 24] – вектор-столбец
D = a*A*a’; % D = 45 – число, сумма эл-ов матрицы А
E = A’; % E – транспонированная матрица А
F = inv(A); % F – обратная матрица А
G = A^-1; % G – обратная матрица А
Из приведенного примера видно, что операция транспонирования матриц и векторов обозначается символом ‘ (апостроф), который ставится после имени вектора или матрицы. Вычисление обратной матрицы можно делать путем вызова функции inv() или возводя матрицу в степень -1. Результат в обоих случаях будет одинаковым, а два способа вычисления сделано для удобства использования при реализации различных алгоритмов.
Если в процессе вычислений требуется поэлементно умножить, разделить или возвести в степень элементы вектора или матрицы, то для этого используются операторы:
.* — поэлементное умножение;
./ и . — поэлементные деления;
.^ — поэлементное возведение в степень.
Рассмотрим работу данных операторов на следующем примере.
a = [1 2 3]; % вектор-строка
b = [3 2 1]; % вектор-строка
c = a.*b; % c = [3 4 3]
A = ones(3); % матрица 3х3, состоящая из единиц
B = [1 2 3;4 5 6; 7 8 9]; % матрица 3х3
C = A.*B; % матрица 3х3, состоящая из
D = A./B; % матрица 3х3, состоящая из
E = A.B; % матрица 3х3, состоящая из
F = A.^2; % возведение элементов матрицы А в квадрат
В заключении данного параграфа рассмотрим несколько функций полезных при работе с векторами и матрицами.
Для поиска максимального значения элемента вектора используется стандартная функция max(), которая возвращает найденное максимальное значение элемента и его позицию (индекс):
a = [1 6 3 4];
[v, i] = max(a); % v = 6, i = 2;
Приведенный пример показывает два разных способа вызова функции max(). В первом случае определяется и максимальное значение элемента и его индекс в векторе, а во втором – только максимальное значение элемента.
В случае с матрицами, данная функция определяет максимальные значения, стоящие в столбцах, как показано ниже в примере:
A = [4 3 5; 6 7 2; 3 1 8];
[V, I] = max(A); % V=[6 7 8], I = [2 2 3]
V = max(A); % V=[6 7 8]
Полный синтаксис функции max() можно узнать, набрав в командном окне MatLab команду
Аналогичным образом работает функция min(), которая определяет минимальное значение элемента вектора или матрицы и его индекс.
Другой полезной функцией работы с матрицами и векторами является функция sum(), которая вычисляет сумму значений элементов вектора или столбцов матрицы:
a = [3 5 4 2 1];
s = sum(a); % s = 3+5+4+2+1=15
A = [4 3 5; 6 7 2; 3 1 8];
S1 = sum(A); % S1=[13 11 15]
S2 = sum(sum(A)); % S2=39
При вычислении суммы S2 сначала вычисляется сумма значений элементов матрицы А по столбцам, а затем, по строкам. В результате, переменная S2 содержит сумму значений всех элементов матрицы А.
Для сортировки значений элементов вектора или матрицы по возрастанию или убыванию используется функция sort() следующим образом:
b1 = sort(a); % b1=[1 2 3 4 5]
b2 = sort(a, ‘descend’); % b2=[5 4 3 2 1]
b3 = sort(a, ‘ascend’); % b3=[1 2 3 4 5]
A = [4 3 5; 6 7 2; 3 1 8];
B1 = sort(A); % B1=[3 1 2
% 4 3 5
% 6 7 8]
B2 = sort(A, ‘descend’); % B2=[6 7 8
% 4 3 5
% 3 1 2]
Во многих практических задачах часто требуется найти определенный элемент в векторе или матрице. Это можно выполнить с помощью стандартной функции find(), которая в качестве аргумента принимает условие, в соответствии с которым и находятся требуемые элементы, например:
a = [3 5 4 2 1];
b1 = find(a == 2); % b1 = 4 – индекс элемента 2
b2 = find(a
= 2); % b2 = [1 2 3 5] – индексы без 2
b3 = find(a > 3); % b3 = [2 3]
В приведенном примере символ ‘==’ означает проверку на равенство, а символ ‘
=’ выполняет проверку на неравенство значений элементов вектора а. Более подробно об этих операторах будет описано в разделе условные операторы.
Еще одной полезной функцией работы с векторами и матрицами является функция mean() для вычисления среднего арифметического значения, которая работает следующим образом:
a = [3 5 4 2 1];
m = mean(a); % m = 3
A = [4 3 5; 6 7 2; 3 1 8];
M1 = mean(A); % M1 = [4.333 3.667 5.000]
M2 = mean(mean(A)); % M2 = 4.333
© 2022 Научная библиотека
Копирование информации со страницы разрешается только с указанием ссылки на данный сайт
Видео:MatLab. 3. 2b. Сложение, вычитание и умножение векторовСкачать
Деление (правое и левое).В ML имеются две разновидности операции деления матриц: правое (/) и левое ().
Задание векторов и матриц
Способы задания векторов
Как мы уже знаем, вектор – это одномерный массив данных. Вектор в ML – это матрица из одного столбца или одной строки. Вектор может быть вектором-столбцом или вектором-строкой.
Для задания вектора в системе ML можно воспользоваться одним из приведенных ниже способов.
1.Можно задать значения вектора поэлементно, записав:
Значения элементов записываются через пробел или через запятую.
В результате выполнения этой команды создается вектор-строка:
3.0000 5.0000 0.0000 12.0000
Выводится 0, т.к. по умолчанию установлен формат Short. Для вывода с большей точностью необходимо установить другой формат отображения.
Если при задании вектора значения элементов разделить точкой с запятой, то получим вектор-столбец:
В таком случае элементы вектора для большей наглядности лучше разделять запятой.
2.Если элементы вектора являются арифметической прогрессией, то можно задать вектор так:
В результате будет сформирован вектор со значениями:
0 4 8 12 16 20 24
Шаг должен быть всегда больше нуля. Если шаг равен единице, то его можно не указывать:
Чтобы изменить форму вектора (в данном случае из вектора-строки получить вектор-столбец), можно использовать операцию транспонирования. Для этого надо записать Х’ – тогда вектор примет форму столбца.
3.Также для формирования арифметической прогрессии можно использовать функцию linspace:
linspace ( , , )
0 0.7854 1.5708 2.3562 3.1416
Для доступа к элементу вектора необходимо указать его имя и в круглых скобках номер элемента. Например, D(3). Для обращения к последнему элементу вектора, если неизвестна его длина, можно записать: D(length(D)) или D(end).
length – функция, определяющая размер вектора.
Задание матриц
При задании матриц данные строк записываются через пробел или через запятую. Элементы разных строк разделяются знаком точка с запятой (;) или записываются каждая с новой строки.
>>A=[1 2 3; 4 5 6;7 8 9]
Или
>> A=[1 2 3
4 5 6
7 8 9]
Как мы уже знаем, обращение к элементу матрицы будет иметь следующий вид: ( ), например, А(2,3).
Операции
Как уже говорилось, в ML можно не только выполнять обычные арифметические операции над числами и вычислять значения функций, но и производить операции над векторами и матрицами.
Для матриц Матлаб определяет операции:
Сложение и вычитание матриц
Умножение матрицы на число
Умножение матрицы на матрицу
Над матрицами возможны поэлементные операции и матричные, соответствующими правилам матричного исчисления.
При поэлементном умножении и делении матрицы должны быть одинаковых размеров. При матричных операциях их размеры должны быть согласованы.При умножении матриц число столбцов первой матрицы должно быть равно числу строк второй.Результат операций – матрица.
Все арифметические операции являются “матричными” и осуществляются по правилам матричной алгебры. (В ML возможно как выполнять операции поэлементной обработки, так и использовать операции, соответствующие правилам матричного исчисления.)
Кроме уже известных +, -, *, / и ^, в ML существуют операции транспонирования (ʹ)иобратного деления ().
Видео:Работа с массивами. Вектор столбцы и вектор строки 1. Урок 7Скачать
Действия с векторами и матрицами в MATLAB
РАБОТА В РЕЖИМЕ ПРЯМЫХ ВЫЧИСЛЕНИЙ
1) Вычисляемое выражение набирается, редактируется (если нужно) в командной строке, ввод завершается нажатием клавиши ENTER.
Средства для редактирования в командной строке: клавиши ← и → — перевод курсора вдоль строки, Home, End – быстрый переход к началу и концу строки, ↑ и ↓ — клавиши перелистывания строк (с их помощью в командной строке можно восстановить для редактирования и выполнения ранее выполнявшиеся операторы), клавиши Delete и Backspace (← в верхней строке клавиатуры) – для удаления символа над курсором и слева от него. Кроме того, в командном окне имеется сверху панель инструментов, позволяющая делать стандартные операции копирования, удаления, вставки из буфера обмена и др.
2) Для переноса длинного выражения на другую строку используется многоточие (… — три или более точек в конце строки). При нажатии ENTER курсор переместится в начало следующей строки, где можно продолжать набор оператора.
3) Основные системные переменные:
pi – значение числа π
ans – хранит результат последней выполненной операции (в том числе
и если этот результат – массив чисел). К ней можно обращаться
по имени, что бывает удобно при программировании.
inf — символ машинной бесконечности. Положительная величина,
которая больше чем любое представимое в оперативной памяти
компьютера положительное число, что так же бывает удобно
иметь при составлении алгоритмов.
i- мнимая единица – sqrt(-1). MATLAB выполняет действия в алгебре
комплексных чисел вида z = x+ i*y, где x – вещественная часть,
y – мнимая часть числа.
4) Знаки основных арифметических операций:
‘+ ‘- сложение, ‘-‘ – вычитание , ‘*’ – умножение, ‘/’ – деление слева направо, ’’ – деление справа – налево, ‘^’ – возведение в степень.
Знаки операций применимы к векторным и матричным операндам.
Так, результаты операций A/B и BA могут быть различны. Кроме того, одна из этих операций может быть возможна, в то время как другая – нет. Первая: A/B выполняется как A*inv(B), а вторая: BA – как inv(B)*A. Вспомним, что умножение матриц не обладает свойством коммутативности. Знак умножения, примененный к матричным операндам, выполняет операцию умножения матриц по правилам матричной алгебры.
5)Постановка знака ‘;’в конце вычисляемого выражения не обязательна, его присутствие блокирует вывод на экран компьютера результата выполнения выражения, после которого он поставлен. Установка точки с запятой в конце каждого оператора желательна при написании М-программ, особенно – когда промежуточными результатами являются массивы чисел. (Заметим, правда, что иногда полезно умышленно опустить точку с запятой, если вывод вычисленного значения оператора желателен).
Действия с векторами и матрицами в MATLAB
Перейдем теперь в командное окно MATLAB. Выполните в командном окне предлагаемые далее действия с матрицами. При этом данный текст лучше не закрывать, а свернуть его, нажав на кнопку “-“ в правом верхнем углу окна Microsoft Word. (В этом случае вы сможете восстановить этот текст в процессе работы, активизируя его нажатием левой клавиши мыши на нижней панели)
Задание 1: (действия с векторами)
1) Введите вектор ‘a’ из 9 элементов. С экрана элементы вектора вводятся в квадратных скобках, разделяемые пробелом.
a = [1 2 3 4 6 4 3 4 5] % Вводите свой вектор с другими значениями.
Нажмите ENTER, посмотрите на сообщение на экране.
2) Теперь выполните то же но с точкой с запятой:
a = [1 2 3 4 6 4 3 4 5]; % Используйте клавиши перелистывания ↑ и ↓, чтобы не
% повторять набор заново!!
Нажмите ENTER, посмотрите на сообщение на экране.
3) Прибавьте число 2 к элементам вектора а :
b = a + 2 % Сейчас мы умышленно не ставим точку с запятой, чтобы
% посмотреть на результат
4) Транспонируем вектор b:
C=b’ % Знак транслонирования матрицы – апостроф ‘ (соответствует
% клавише буквы Э на нижнем регистре латиницы)
5) Попробуйте выполнить операцию
D= a+C % убедитесь, что она невозможна, поймите почему (?).
6) Постройте график значений элементов вектора b относительно номера компоненты:
MATLAB может строить графики, используя указываемые ему символы.
Постройте тот же график звездочками:
ГЕНЕРАЦИЯ ВЕКТОРОВ (ранжированных переменных, т.е. массивов с постоянным шагом)
X=1:10 % шаг 1 % не ставьте точки с запятой, наблюдайте результаты
Y=0:0.25:1 % шаг 0.25
Z=0:pi/4:2*pi % шаг pi/4
Задание 2: (действия с матрицами)
% Создание матриц производится так же как и создание векторов, при этом
% используется знак (;) , чтобы отделить вводимые строки матрицы.
Введите матрицу размерности (3,3):
A = [1 2 0; 2 5 -1; 4 10 -1] % Введите свои значения. Не ставьте блокировку (;),
% чтобы следить за результатами.
Транспонируйте матрицу ‘A’ :
Возведите квадратную матрицу в 5 степень:
Найдите обратную матрицу:
I =A*inv(A) % ясно, что должна получиться единичная матрица
Вычислите определитель матрицы:
Найдите собственные значения матрицы:
% Функция «poly» генерирует вектор, элементами которого являются
% коэффициенты характеристического многочлена матрицы:
% Функция “round” округляет до ближайшего целого
% Корни многочлена p – характеристические значения исходной матрицы
% Таким образом, мы можем найти собственные значения матрицы оператором
roots(p) % Выполните вычисления этим способом
% В любой момент мы можем получить список значений переменных, хранящихся в памяти
% используя команды «who» или «whos».
Выполните:
% Вы можете получить на экране значение любой переменной, набрав в командной строке имя переменной и нажав вслед за тем ENTER.
ПОЭЛЕМЕНТНОЕ ВЫПОЛНЕНИЕ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Арифметические операции умножения, деления и возведения в степень имеют своих двойников с поэлементным выполнением. Поясним: пусть
x=[1 2 3 4] и y=[5 6 7 8].
Предположим, что вам хотелось бы перемножить (поделить, возвести в степень) элементы векторов x и y.
Если мы напишем x*y или x/y или x^3, то получим сообщение об ошибке, так как строки нельзя перемножить, разделить друг на друга по правилам матричной алгебры (несоответствие размерностей). Однако для получения желаемого результата в MATLAB есть дубли арифметических операций. Они имеют те же значки, что и основные операции, но с точкой перед знаком операции.
Выполните в командном окне:
x.*y % Результат – вектор, элементы которого равны произведениям соответствующих элементов векторов x и y
x./y % Элементы x будут поделены на соответствующие элементы y
x.^3 % Элементы вектора x будут возведены в 3-ю степень.
MATLAB работает с комплексными числами и бесконечными величинами.
ГЕНЕРАЦИЯ СПЕЦИАЛЬНЫХ МАТРИЦ:
Для создания специальных матриц существуют функции:
zeros – создание матрицы с нулевыми элементами,
ones — создание матрицы с единичными элементами,
rand – создание матрицы со случайными элементами (равномерно на [0,1] распределенными случайными числами),
🎦 Видео
Основы линейной алгебры. 2. Векторы. Часть 1Скачать
Поэлементные операции с векторами. Работа с массивами. Урок 11Скачать
MATLAB 04 Массивы и матрицыСкачать
Работа с массивами. Вектор столбцы и вектор строки 2. Урок 8Скачать
Основы МАТЛАБ.РАБОТА С МАССИВАМИ. ВЕКТОРЫ-СТОЛБЦЫ И ВЕКТОРЫ-СТРОКИСкачать
Умножение векторов. Работа с массивами. Урок 14Скачать
Математика это не ИсламСкачать
Операции над векторами matlabСкачать
MATLAB 01 Начало работыСкачать
Работа с массивами. Обращение к элементам вектора. Урок 9Скачать
Matlab создание вектора данныхСкачать
Коллинеарность векторовСкачать
Инструменты LDRA для верификации ПО: Создание тестовых векторов в MATLABСкачать
MatLab. Урок 1. Основы программирования.Скачать
Символьные переменные и функции. Матрицы и векторы. Урок 142Скачать
Вектор. Сложение и вычитание. 9 класс | МатематикаСкачать
Основы линейной алгебры. 3. Векторы. Часть 2Скачать
2-4 MATLAB - Матрицы и индексацияСкачать