Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Специальные функции для матриц



 

В ML существует множество специальных функций линейной алгебры. Приведем некоторые из них:

det(A) – вычисляет определитель (детерминант) матрицы.

inv(A) – вычисляет инверсную (обратную) матрицу.

Обратнойдля квадратной невырожденной (когда детерминант не равен нулю) матрицы А называется матрица А-1, которая при умножении на матрицу А справа и слева даёт единичную матрицу. B называется обратной А, если выполняется АВ=ВА=Е (единичная матрица).

eig(A) – определение собственных чисел (характеристических чисел);

norm(A, 1) – норма матрицы – наибольшая сумма модулей элементов столбцов;

norm(A, inf) – наибольшая сумма модулей элементов строк;

trace(A) – след матрицы (сумма элементов главной диагонали).

Действия с элементами матрицы

Обращение к элементу осуществляется заданием имени, за которым в круглых скобках через запятую указываются индексы – номера строки и столбца. Если указать A(2, 1), то выберется элемент второй строки первого столбца.

Можно выделить часть матрицы. Это делается с помощью символа двоеточие (: ).

Пусть задана матрица:

 

> > A=[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

 

Если двоеточие стоит вместо номера строки или столбца, то соответственно выделяются столбец или строка.

Получим 3-й столбец матрицы А:

 

> > B=A(:, 3)

B =

 

Получим 3-ю строку матрицы А:

 

> > X=A(3,: )

X =

7 8 9

Получим вектор-столбец из всех элементов матрицы:

 

> > C=A(: )

C =

 

Индексом в ML может быть не только число, но и вектор. Этот вектор-индекс удобно задавать с помощью двоеточия.

Для доступа к элементам последней строки или столбца можно использоватьв качестве индекса end.

Получим матрицу С, состоящую из элементов матрицы А, начиная со второго столбца:

 

> > C=A(:, 2: end)

C =

2 3

5 6

8 9

 

Поменяем местами первую и последнюю строки матрицы А:

 

> > D=A(1,: );

> > A(1,: )=A(end,: );

> > A(end,: )=D;

> > A

A =

7 8 9

4 5 6

1 2 3

 

Получим вектор С, состоящий из элементов первых трех элементов 2-го столбца матрицы А.

Пусть задана матрица:

 

> > A=[1 2 3; 4 5 6; 7 8 9; 1 0 1]

A =

1 2 3

4 5 6

7 8 9

1 0 1

 

Запишем:

 

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

C=

 

Первый индекс представляет собой вектор из трех элементов [1: 3], результат – вектор-столбец С.

Выделим из матрицы А квадратную матрицу С размером 2х2:

> > C=A(3: 4, 2: 3)

Получим

 

C =

8 9

0 1

 

Выделим первые две строки матрицы А:

 

> > С=A(1: 2,: )

С =

1 2 3

4 5 6

 

Можно заменить один фрагмент матрицы другим.

Пусть имеем матрицу А = [1 2 3; 4 5 6; 7 8 9] и зададим матрицу С:

 

> > C=[20 30; 10 15]

C =

20 30

10 15

 

Заменим правый верхний угол матрицы А матрицей С. Для этого запишем:

> > A(1: 2, 1: 2)=C

Измененная матрица А

 

A =

20 30 3

10 15 6

7 8 9

 

Поменяем местами 1-ю и 3-ю строки матрицы А:

Используем для этого возможность задания индекса вектором.

> > A=[1 2 3; 4 5 6; 7 8 9];

Для этого запишем:

> > A([1 3],: )=A([3 1],: )

Полученная матрица:

 

A =

7 8 9

4 5 6

1 2 3

 

Обращение А([1 3], : ) означает первую и третью строки матрицы; А([3 1], : ) – аналогично третью и первую строки.

Индексация двоеточием упрощает формирование матриц по определенному закону. Пусть необходимо сформировать матрицу размером 5× 5, в которой элементы первой и последней строк и первого и последнего столбцов равны единице. Остальные элементы матрицы равны нулю.

Сначала создадим матрицу из нулей размером 5× 5. Затем заполним первую и последнюю строки и первый и последний столбцы единицами:

 

> > Z(1: 5, 1: 5)=0;

> > Z(1, : )=1;

> > Z(end, : )=1;

> > Z(:, 1); )=1;

> > Z(:, end)=1

 

В результате получим матрицу Z:

 

Z =

1 1 1 1 1

1 0 0 0 1

1 0 0 0 1

1 0 0 0 1

1 1 1 1 1

или лучше:

 

> > Z([1 end], : )=1;

> > Z(: , [1 end])=1

 

Можно выполнить объединение матриц:

X Y

Ø погоризонтали

 

> > X=[1 2; 3 4];

> > Y=[5 6; 7 8];

> > Z=[X, Y]

Z =

1 2 5 6

3 4 7 8

 

X
Y

Ø по вертикали

 

> > Z=[X; Y]

Z =

1 2

3 4

5 6

7 8

 

Размеры матриц должны быть согласованы.

Добавим строку к матрице А:

> > A=[1 2 3; 4 5 6; 7 8 9];

Зададим вектор В:

> > B=[5 5 5];

Запишем:

> > A=[A; B]

Получим новую матрицу размером 4× 3:

 

A =

1 2 3

4 5 6

7 8 9

5 5 5

 

Удалим из матрицы 2-ю и 3-ю строки:

 

> > A(2: 3, : )=[]

A =

1 2 3

5 5 5

Удалим из матрицы 2 столбец

 

> > A(:, 2)=[]

A =

1 3

5 5

Можно удалить элемент из матрицы.

A(3)=[] – удаление 3-го элемента матрицы.

 

> > A=[1 2 3; 4 5 6; 7 8 9]

A =

1 2 3

4 5 6

7 8 9

> > A(3)=[]

 

Результат – вектор А, состоящий из элементов матрицы в порядке следования по столбцам без элемента А(3, 1):

 

A =

1 4 2 5 8 3 6 9

 

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

 

> > А=[];

 

Удаление матрицы из памяти

 

> > clear A

 

 

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

 

Ранее мы познакомились с функциями для создания векторов и матриц. В пакете Matlabимеются функции, предоставляю-
щие возможность построчной или постолбцовой обработки
элементов матрицы. Это функции, позволяющие вычислить сумму либо произведение элементов, отсортировать данные, найти
максимальное и минимальные значения элементов вектора или матрицы.

Пусть имеем вектор X

 

> > X=[9 2 3 4 15 6 1 7 ];

 

Рассмотрим некоторые функции.

Сумма элементов вектора:

> > sum(X)

ans =

 

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

 

> > prod(X)

ans =

 

Максимальное значение вектора:

 

> > max(X)

ans =

 

Максимальное значение вектора и его номер:

 

> > [m, k]=max(X)

m =

k =

 

Минимальное значение вектора:

 

> > min(X)

ans =

 

Минимальное значение вектора и его номер:

 

> > [m, k]=min(X)

m =

k =

 

Среднее арифметическое элементов вектора:

 

> > mean(X)

ans =

5.8750

 

Сортировка элементов вектора по возрастании:

 

> > sort(X)

ans =

1 2 3 4 6 7 9 15

 

Для сортировки элементов вектора по убыванию можно воспользоваться той же функцией:

 

> > Х = -sort(-X)

Х =

15 9 7 6 4 3 2 1

 

Разворот вектора на 90°

> > rot90(X)

 

Эта функция разворачивает вектор против часовой стрелки.
В результате получаем вектор-столбец:

 

ans =

 

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

Пусть имеем матрицу А

 

> > A=[1 2 3; 4 5 6; 7 8 9];

 

Рассмотрим некоторые функции.

Сумма элементов в столбцах матрицы:

> > sum(A)

ans =

12 15 18

или можно записать:

> > sum(A, 1)

ans =

12 15 18

Для получения суммы элементов в строках матрицы введем команду

 

> > sum(A, 2)

ans =

 

Для получения суммы всех элементовматрицы введем команду

 

> > sum(sum(A))

ans =

 

 

Произведение элементов матрицы по столбцам:

 

> > prod(A)

ans =

28 80 162

 

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

 

> > prod(A')

ans =

6 120 504

 

Произведение чисел от 1 до 4

 

> > prod(1: 4)

ans =

 

В функциях для вычисления суммы и произведения (sum и prod) элементов матрицы результатом будет вектор-строка, число элементов которой равно числу столбцов матрицы.

Есть функции, которые выдают наибольшее и наимень-
шее значения в столбцах матрицы. Результат – вектор-строка.

 

Максимальное значение в каждом столбце:

> > max(A)

ans =

7 8 9

 

Максимальное значение в каждой строке :

> > max(A')

ans =

3 6 9

 

Наименьшее значение:

> > min(A)

ans =

1 2 3

> > min(A')

ans =

1 4 7

 

Можно не только найти минимальное и максимальное значения, но и позиции этих элементов:

 

> > [m, k]=min(A)

 

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

 

m =

1 2 3

k =

1 1 1

> > [m, k]=max(A)

m =

7 8 9

k =

3 3 3

 

Среднее арифметическое в столбцах . Результат – вектор-строка из средних арифметических в каждом столбце:

 

> > mean(A)

ans =

4 5 6

> > mean(A')

ans =

2 5 8

 

Сортировка. Сортировка элементов каждого столбца по возрастанию:

 

> > sort(A)

 

Сортировка элементов каждой строки по возрастанию:

 

> > sort(A, 2)

 

Разворот матрицы на 90°

Эта функция разворачивает матрицу на 90° против часовой стрелки:

 

> > rot90(A)

ans =

3 6 9

2 5 8

1 4 7

’’Зеркальное’’ отображение матрицы относительно вертикальной оси:

 

> > fliplr(A)

ans =

3 2 1

6 5 4

9 8 7

 

’’Зеркальное’’ отображение матрицы относительно горизонтальной оси:

> > flipud(A)

ans =

7 8 9

4 5 6

1 2 3

 

Действия с полиномами (многочленами)

 

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

Полином (многочлен) – это выражение вида

 

P(x)=a1xn+a2xn-1+…..+anx+an+1

В системе Matlab полином задаётся и хранится в виде вектора, элементами которого являются коэффициенты полинома:

 

P=[a1 a2 …an an+1]

 

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

Например, пусть задан полином 2x3+x2-3x+5. Вектор коэффициентов полинома будет

 

p=[2 1 -3 5]

Для вычисления значения полинома при некотором значении аргумента предназначена функция polyval(p, x), где p – вектор коэффициентов полинома; х – значение аргумента, при котором надо посчитать значение полинома.

 

> > P=[2 1 -3 5];

> > Y=polyval(P, 1)

Y =

 

В результате будет вычислено значение полинома 2x3+x2-3x+5 при x=1.

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

 

> > P=[2 1 -3 5];

> > X=1: 5;

> > Y=polyval(P, X)

Y =

5 19 59 137 265

 

Элементы вектора Y – значения полинома, вычисленные для каждого элемента вектора X.

Вычислить корни полинома можно с помощью функции roots. Число корней определяется степенью полинома:

 

> > P=[2 1 -3 5];

> > roots(P)

ans =

-1.9388

0.7194 + 0.8786i

0.7194 - 0.8786i

 

В данном случае найдены три корня, из которых один вещественный и два комплексных.

Чтобы вычислить производную от полинома, следует использовать функцию polyder. Результатом этой функции является вектор, элементы которого представляют собой коэффициенты полинома-производной от исходного полинома:

 

> > P=[2 1 -3 5];

> > polyder(P)

ans =

6 2 -3

 

Для выполнения умножения и деления полиномов предназначены функции conv и deconv:

 

Z=conv(P1, P2),

 

где P1, P2 – полиномы, заданные векторами; Z – результирующий векторкоэффициентов полинома, полученного в результате перемножения полиномов, заданных векторами P1, P2.

 

[R1, R2]=deconv(P1, P2)

 

Результат работы этой функции – два вектора R1, R2, где R1, R2 – векторы коэффициентов полинома-частного и полинома-остатка, полученного в результате деления полиномов, заданных векторами P1, P2.

 

Графика

 

Система МL обладает мощными графическими возможностями. Вывод графической информации ML осуществляет в отдельное окно, которое создается автоматически, когда используется какая-либо графическая функция. Для оформления и редактирования графиков предусмотрены специальные команды.

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-04-11; Просмотров: 494; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.1 с.)
Главная | Случайная страница | Обратная связь