Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПСвСреде Матлаб Мет Ук к ЛР 1-8.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
598.82 Кб
Скачать

1.2. Операции с векторами и матрицами

Формирование векторов и матриц.

Для создания одномерного массива (вектора) можно использовать операцию конкатенации, которая обозначается с помощью квадратных скобок [ ]. Элементы массива отделяются друг от друга пробелом или запятой:

» m=[1 2 3]; d=[1+2i,2+3i,3-4i];

Можно изменять элементы уже сформированного массива путем применения операций индексации и присваивания. Например, введя:

» m(3)=4;

мы изменим третий элемент массива. Или, после введения:

» m(2)=(m(1)+m(3))/2;

второй элемент массива станет равным среднему арифметическому первого и третьего элементов. Запись несуществующего элемента вполне допустима – она означает добавление нового элемента к уже существующему массиву:

» m(4)=6;

Чтобы узнать число элементов в массиве следует вызвать функцию length(имя массива). Применяя к массиву m функцию length, находим, что количество элементов в массиве возросло до четырех:

» length(m)

ans = 4

Тоже самое действие – «удлинение массива m» - можно выполнить и с помощью операции конкатенации:

» m=[m 6];

Еще один способ создания одномерного массива основан на применении специальной функции, обозначаемой двоеточием. Через двоеточие следует набрать начальное значение диапазона, шаг (по умолчанию он равен единице) и конечное значение диапазона. Например:

» diap=1.0:0.01:10;

Для создания двумерного массива (матрицы) также можно использовать операцию конкатенации.

Введите с клавиатуры:

» a=[1 2 3; 4 5 6; 7 8 9] <Enter>

a =

1 2 3

4 5 6

7 8 9

Полученную матрицу a размером 3x3 можно сформировать также вертикальной конкатенацией вектор-строк:

» a=[[1 2 3];[4 5 6];[7 8 9]];

или горизонтальной конкатенацией вектор-столбцов:

» a=[[1;4;7],[2;5;8],[3;6;9]];

Структуру созданных массивов можно узнать с помощью команды whos(имя массива), размерность массива – функцией ndims, а размер массива – size.

Создать массив нужного размера можно функциями ones(m,n) или zeros(m,n), заполненный соответственно единицами или нулями (m – число строк, n – число столбцов).

Имеется также удобная возможность работы с массивами и их элементами с помощью программы Array Editor, вызов которой осуществляется двойным щелчком на обозначении массива в окне Workspase. При этом в появившемся окне можно производить редактирование существующих элементов, добавление новых при необходимости и выполнять ряд других операций.

Ознакомьтесь с удобным и наглядным способом создания массивов и матриц произвольной размерности. Выполните следующую последовательность действий:

1.  С помощью функции zeros(m,n) определите матрицу требуемого размера, например, >>A = zeros(4,5);. При этом в окне Workspase появится изображение одноименной переменной - A.

2.  Выполните двойной щелчок на появившемся изображении переменной A в окне Workspase. В открывшемся после этого окне редактора Array Editor введите требуемые значения элементов. Закройте окно редактора.

3.  Измените размер созданной матрицы, добавив дополнительные элементы.

Поэлементные операции с векторами и матрицами.

Операции сложения и вычитания матриц обозначаются стандартными знаками + и -. Задайте матрицы А, В и выполните операцию сложения матриц:

» A=[1 1 1; 2 2 2; 3 3 3]; B=[0 0 0; 7 7 7; 1 2 3];

» A+B

Если используются операнды разных размеров, выдается сообщение об ошибке, за исключением случая, когда один из операндов является скаляром. При выполнении операции А + скаляр (А – матрица) система расширит скаляр до массива размера А, который складывается далее поэлементно с А (во внутреннем представлении размер скаляра при этом не изменится). Эта операция эквивалентна операции A+x*E, где x – число, а E – матрица со всеми единичными элементами, имеющая тот же размер, что и матрица A.

» A+5

ans = 6 6 6

         7 7 7

         8 8 8

Для поэлементного перемножения и поэлементного деления массивов одинаковых размеров, а также поэлементного возведения в степень массивов, применяются операции, обозначаемые комбинациями двух символов: .*, ./, и .^. Использование комбинаций символов объясняется тем, что символами * и / обозначены специальные операции линейной алгебры над векторами и матрицами.

Кроме операции ./, называемой операцией правого поэлементного деления, имеется операция левого поэлементного деления .\. Разница между этими операциями заключается в следующем. Результатом операции А./В является матрица с элементами А(k, m)/В(k, m), а операции А.\В матрица с элементами В (k, m)/А (k, m).

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

В качестве примера выполните следующие команды:

>> x=0:0.1:pi/4

>> y=sin(x)

 Действия над матрицами.

Операция транспонирования обозначается знаком .' (точка и апостроф). Пример:

» A=[1 1 1; 2 2 2; 3 3 3];

» B=A.'

1 2 3

1 2 3

1 2 3

Операция ' (апостроф) выполняет обычное транспонирование для вещественных матриц (то же, что и операция .') и транспонирование с одновременным комплексным сопряжением для комплексных матриц (эрмитово комплексно-сопряженное транспонирование).

Символом * обозначается операция умножения матриц и векторов в смысле линейной алгебры.

Возведение матрицы в целую степень осуществляется с помощью операции, обозначаемой символом ^, например: A^n.

Деление матриц. В языке MATLAB имеются две оригинальные функции, которые не определены в математике. При этом вводятся понятия деление матриц слева направо “/” и деление матриц справа налево “\”. Операция B/A эквивалентна операции B*A-1. Ее удобно использовать для решения матричного уравнения X*A = B. Аналогично, операция A\B равносильна операции A-1 · B, которая представляет собой решение матричного уравнения A*X = B.

Операции отношения и логические операции выполняются над матрицами одинакового размера поэлементно. Результат операций имеет такой же размер. В случае, когда один из операндов скаляр, производится его предварительное расширение, смысл которого уже был пояснен выше.

Следует также упомянуть здесь функцию eye, производящую единичные квадратные матрицы (может использоваться для прямоугольных матриц), а также широко применяемую на практике функцию rand, генерирующую массив со случайными элементами, равномерно распределенными на интервале от 0 до1.

Определитель квадратной матрицы вычисляется с помощью функции det.

Среди функций, производящих простейшие вычисления над массивами, помимо рассмотренной выше функции sum, упомянем функцию prod, которая вычисляет произведение элементов. Функции max и min ищут соответственно максимальный и минимальный элементы массивов. Для векторов они возвращают единственное числовое значение, а для матриц они порождают набор экстремальных элементов, вычисленных для каждого столбца. Функция sort сортирует в возрастающем порядке элементы одномерных массивов, а для матриц она производит такую сортировку для каждого столбца отдельно.

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