Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Специальные функции для матриц
В 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=[1 2; 3 4]; > > Y=[5 6; 7 8]; > > Z=[X, Y] Z = 1 2 5 6 3 4 7 8
Ø по вертикали
> > 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; Нарушение авторского права страницы