Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
19
Добавлен:
22.02.2014
Размер:
728.58 Кб
Скачать

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

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

Например:

>> V=[1.2,-0.3,-1.2e-5]

V =

1.2000 -0.3000 -0.000

>> A=[2 4 6 8 10; 5.5 6.3 -6.8 8 8.6]

A =

2.0000 4.0000 6.0000 8.0000 10.0000

5.5000 6.3000 -6.8000 8.0000 8.6000

В MATLAB имеется несколько встроенных функций, которые позволяют формировать векторы и матрицы определенного вида. Они приведены в таблице 6.

Таблица 6. Функции, формирующие векторы и матрицы

Название функции

Значение функции

zeros(m,n)

Создает матрицу размером mxn с нулевыми элементами

ones(m,n)

Создает матрицу размером mxn с единичными элементами

eye(m,n)

Создает единичную матрицу размером mxn, с единицами по главной диагонали

rand(m,n)

Создает матрицу размером mxn из случайных чисел, равномерно с распределенными в диапазоне от 0 до 1

randn(m,n)

Создает матрицу размером mxn из случайных чисел, распределенных по нормальному (гауссову) закону с нулевым математическим ожиданием и стандартным отклонением, равным 1.

hadamard(n)

Создает матрицу Адамара размером mxn

hilb(n)

Создает матрицу Гильберта размером mxn

invhilb(n)

Создает обратную матрицу Гильберта размером mxn

pascal(n)

Создает матрицу паскаля размером mxn

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

Таблица 7. Функции, формирующие матрицы из заданных матриц и векторов

Название функции

Значение функции

fliplr(a)

Формирует матрицу, переставляя столбцы известной матрицы А относительно вертикальной оси, то есть меняя местами левую и правую стороны матрицы

flipud(a)

Переставляет строки заданной матрицы А относительно горизонтальной оси, то есть меняя местами верхнюю и нижнюю стороны матрицы

rot90(a)

Формирует матрицу путем «поворота» заданной матрицы А на 90 º против часовой стрелки

reshape(a,m,n)

Образует матрицу размером mxn, выбирая из столбцов элементы заданной матрицы А и распределяя их по столбцам, каждый из которых содержит m элементов.

tril(a)

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

triu(a)

Образует верхнюю треугольную матрицу на основе матрицы А путем обнуления ее элементов ниже главной диагонали

hankel(v)

Образует квадратную матрицу Ганкеля, первый столбец которой совпадает с заданным вектором

diag(v)

Извлекает диагональ матрицы

Извлечение и вставка частей матриц осуществляется путем указания индекса строки и столбца матрицы. Например:

>> A(2,3)

ans = 7

Если нужно поместить в указанное место число, например π, то необходимо выполнить следующее:

>> A(2,3) = pi ; A

Если требуется создать меньшую матрицу на основе большей, формируя ее путем извлечения из последней матрицы элементов ее нескольких строк и столбцов, или вставить меньшую матрицу таким образом, чтобы она стала определенной частью матрицы большего размера, то используется разделительный символ «:» с указанием номера строки или столбца, или путем определения верхней и нижней границы. Например, необходимо создать вектор из третьего столбца некоторой матрицы А. Для этого нужно записать:

>> v1 = A(:,3)

Или, например необходимо из матрицы размером 3х4 образовать матрицу В размером 2х2, которая состоит из элементов левого нижнего угла матрицы А, то нужно записать так:

>> B= A(2:3,1:2)

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

Таблица 8. Действия над векторами

Действие

Пример

Сложение векторов

>>x=[1 2 3]; y=[4 5 6]

>>v=x +y

V= 5 7 9

Вычитание векторов

>> v= x – y

V= -3 -3 -3

Транспонирование вектора

>> x’

ans = 1

2

3

Умножение вектора на число

>> v= 2* x

V= 2 4 6

Умножение двух векторов

>> x= [1 2 3]; y=[4 5 6];

>> v=x’*y

V = 4 5 6

8 10 12

12 15 18

>> v= x*y’

V= 32

Векторное произведение двух векторов

>>v1 = [1 2 3]; v2 = [4 5 6];

>> cross (v1 , v2)

ans = -3 6 -3

В языке MATLAB предусмотрено выполнение ряда операций, позволяющих преобразовать заданный вектор в другой вектор, имеющий такой же размер и тип. К таким операциям относятся, в частности, все операции, осуществляемые с помощью элементарных математических функций одного аргумента (например y=sin(x)). Кроме таких операций предусмотрено несколько операций поэлементного преобразования, которые приведены в таблице 9.

Таблица 9. Поэлементное преобразование векторов

Символь ное обозначе ние

Назначение

Пример использования

+ (-)

Добавление числа к каждому элементу (вычитание числа из каждого элемента) вектора

>>x=[1,2,3,4,5];y=[-2,1,4,1,5]

>>disp(x+2)

3 4 5 6 7

.*

Поэлементное умножение векторов

>>disp(x.*y)

-2 2 12 4 25

./

Поэлементное деление векторов

>>disp(x ./ y)

-0.5000 2.0000 0.7500 4.0000 1.0000

.\

Поэлементное деление векторов в обратном направлении

>>disp(x .\ y)

-2.0000 0.5000 1.3333 0.2500 1.000

.^

Поэлементное возведение в степень

>>disp(x .^ y)

1 2 81 4 3125

Для поэлементного преобразования матрицы пригодны все алгебраические функции. Они формируют матрицу того же размера, что и исходная, у которой каждый элемент вычисляется как значение указанной функции от соответствующего элемента заданной матрицы. Для матриц определены также операции поэлементного умножения матриц одинакового размера (.*), поэлементного деления (./ и .\), поэлементного возведения в степень (.^), а также прибавления к матрице числа (А+k или k+А, где А матрица, k-некоторое число в результате будет получена матрица такого же размера, что и матрица А, все элементы которой будут изменены на величину k).

Операции над матрицами приведены в таблице 10.

Таблица 10. Операции над матрицами

Символьное обозначение

Назначение

А+В (А-В)

Сложение (вычитание) матриц

k*А (А*k)

Умножение матрицы на число

А’

Транспонирование матрицы

A’*B (A*B’)

Умножение матрицы на матрицу

inv(C)

Обращение матрицы

A^n

Возведение матрицы в целую степень

/ (\)

Деление матриц слева направо (справа на лево)

exp(a)

Функция формирует матрицу, значение каждого элемента которой равняется е в степени, равной соответствующему элементу матрицы А

expm(a)

Встроенная функция

expm1(a)

Функция, вычисляющая матричную экспоненту путем использования разложения Паде матрицы А

expm2(a)

Функция, вычисляющая экспоненту посредством разложения Тейлора матрицы А

expm3(a)

Функция, вычисляющая экспоненту путем спектрального разложения матрицы А.

logm(B)

Логарифмирование матрицы по натуральному основанию

sqrtm(a)

Вычисление матрицы Y, такой , что Y*Y=A

Функция cond(А) возвращает число обусловленности матрицы относительно операции обращения, которое равняется отношению максимального сингулярного числа матрицы к минимальному.

Функция norm(v,p) вычисляет р-норму вектора v по формуле sum(abs(v).^p)^(1/p), где р-целое положительное число. Если аргумент р при обращении к функции не указан, вычисляется 2-норма (р=2).

Функция norm (А,р) вычисляет р-норму матрицы, где параметр р может принимать одно из следующих значений: 1,2 ‘fro’ или ifn. Если аргумент р не указан, вычисляется 2-норма.

Функция recond(A) вычисляет величину, которая обратна значению числа обусловленности матрицы А относительно 1-нормы. Если матрица А хорошо обусловлена, то возвращаемое функцией значение близко к 1. если же она плохо обусловлена, оно близко к 0.

Функция rank(А) вычисляет ранг матрицы, который определяется как количество сингулярных чисел матрицы.

Функция det(A) вычисляет определитель квадратной матрицы на основе треугольного разложения методом исключения Гаусса.

Функция trace(A) вычисляет след матрицы А, равный сумме ее диагональных элементов.

Функция null(A) вычисляет ортонормированный базис матрицы А.

Функция orth(A) возвращает ортонормированный базис матрицы А.

Функция rref(A) формирует треугольную матрицу, используя метод исключения Гаусса с частичным выбором ведущего элемента.

Соседние файлы в папке Лаба№1