- •Глава 2 работа с массивами
- •2.1 Создание векторов
- •2.2 Поэлементные операции над векторами и матрицами
- •2.3 Применение функций обработки данных к векторам и матрицам
- •2.4 Формирование массивов определенного вида
- •2.5 Создание новых массивов на основе существующих
- •2.6 Собственные числа и векторы матрицы. Матричные функции линейной алгебры
2.6 Собственные числа и векторы матрицы. Матричные функции линейной алгебры
В MATLAB cуществует большое число функций, реализующих разнобразные операции линейной алгебры.
К таким функциям относятся det и inv, рассмотренные в разделе 1.10.
Важной задачей линейной алгебры является задача на собственные значения квадратной матрицы А.
Собственные числа (значения) λi и собственные векторы (ui ≠0) квадратной матрицы А удовлетворяют равенствам
Aui = λiui .
Пусть дана квадратная матрица
A = .
Функция eig c входным аргументом матрицей и выходным – вектором записывает в него все собственные числа матрицы:
>> A=[3 4;5 2];
>> Lambda=eig(A)
Lambda =
7
-2
Функция eig с двумя выходными аргументами возвращает одновременно все собственные векторы и числа:
>> [U,Lam]=eig(A)
U =
0.7071 -0.6247
0.7071 0.7809
Lam =
7 0
0 -2
Первый выходной аргумент U является матрицей, составленной по столбцам из собственных векторов. Для доступа к первому собственному вектору u1 используем индексацию при помощи двоеточия
>> u1=U(:,1)
u1 =
0.7071
0.7071
Аналогично, для вектора u2
>> u2=U(:,2)
u2 =
-0.6247
0.7809
Вторым выходным аргументом Lam возвращается диагональная матрица, содержащая собственные числа исходной матрицы λ1 =7, λ2 = –2.
Итак, собственным числам λ1 =7 и λ2 = –2 соответствуют собственные векторы
u1 = и u2 = .
Проверим выполнение равенств Aui = λiui , i=1,2:
>> L1=7;L2=-2;
>> disp(A*u1-L1*u1)
0
0
>> disp(A*u2-L2*u2)
1.0e-015 *
-0.2220
-0.4441
Равенства выполняются, т.е. задача на собственные значения для рассмотренной выше матрицы А решена верно.
Собственные значения λ матрицы А являются корнями ее характеристического уравнения│A–λE│=0, где E – единичная матрица того же порядка n, что и А. Многочлен │A–λE│называется характеристическим полиномом матрицы А. В общем случае имеется n различных комплексных или вещественных корней характеристического уравнения. Однако в отдельных случаях при наличии кратных корней их число уменьшается.
Составим характеристическое уравнение для рассмотренной выше
матрицы А:
n = 2, E = , │A–λE│= = (3–λ)(2–λ)–20 = λ2–5λ–14 = 0.
В этом случае характеристический полином λ2–5λ–14. Решив уравнение λ2–5λ–14 = 0, получим: λ1 =7, λ2 = –2.
Функции poly возвращает массив коэффициентов характеристического полинома матрицы А:
>> poly(A)
ans =
1 -5 -14
Из равенств Aui = λiui следует, что собственные векторы определяются с точностью до числового множителя, поэтому одну из координат собственного вектора можно фиксировать на каком-либо конкретном значении. Так, если зафиксировать в векторе u1 первую координату равной 1, то это равносильно делению вектора u1 поэлементно на u1(1):
>> v1=u1/u1(1)
v1 =
1
1
Следовательно, вектор с целочисленными координатами, соответствующий вектору u1, равен
v1 = .
Проверка:
>> disp(A*v1-L1*v1)
0
0
Найдем отношение координат вектора u2:
>> format rat
>> disp(u2(1)/u2(2))
-4/5
Таким образом, вектор с целочисленными координатами, соответствующий вектору u2, равен
v2 = .
Проверка:
>> v2=[-4;5];
>> disp(A*v2-L2*v2)
0
0
Умножением v1 и v2 на целочисленные множители (не равные 0) можно получить и другие собственные векторы с целочисленными координатами.
Найденные с помощью функции eig собственные вектора отличаются от всех других тем, что являются единичным или нормированными по евклидовой норме.
Одна из норм ||V||p вектора V длины n определяется в MATLAB следующим образом:
||V||p = (p=1, 2, …).
Если p=2 – норма называется евклидовой.
Функция norm(V,p) возвращает норму ||V||p вектора V.
Функция norm(V) возвращает евклидову норму вектора V по умолчанию.
Для вещественных векторов V длины n=2,3 norm(V) совпадает с длиной вектора V.
Если norm(V)=1, вектор V называется единичным или нормированным.
Найдем норму (длину) каждого из векторов u1, u2, v1 , v2:
>> disp(norm(u1))
1
>> disp(norm(u2))
1
>> disp(norm(v1))
1.4142
>> disp(norm(v2))
6.4031
Вектор V нормируется следующим образом:
Vnorm = .
Пример нормировки вектора v1:
>> Vn1=v1/norm(v1)
Vn1 =
0.7071
0.7071
В результате получили нормированный вектор u1 .
Вывод:
В результате нормировки любой собственный вектор матрицы А совпадает с соответствующим ему нормированным вектором ui с точностью до знака.
Норма вектора norm(V,inf) равна наибольшему из модулей элементов вектора V.
Норма вектора norm(V,–inf) равна наименьшему из модулей элементов вектора V.
Для матрицы А функция norm имеет в MATLAB четыре модификации, описание которых получим, набрав в командной строке команду doc norm.
Ранг матрицы А есть такое число r = rA, что по крайней мере один из определителей r - го порядка, получаемый из этой матрицы при удалении строк и/или столбцов, отличен от нуля, а все определители (r+1) – го порядка равны нулю. Ранг матрицы равен наибольшему числу линейно независимых строк (или столбцов). Квадратная матрица А порядка n является невырожденной в том и только в тот случае, когда ее ранг rA =n, т.е. det(A) ≠0.
Функция rank(A) возвращает ранг матрицы А.
Найдем ранг и рассмотренной выше матрицы А:
>> disp(rank(A))
2
Поскольку ранг и порядок матрицы равны 2, ее определитель ненулевой:
>> det(A)
ans =
-14
Перечислим некоторые из функций, реализующих операции линейной алгебры:
cond – число обусловленности матрицы;
lu – разложение на треугольные матрицы;
svd – сингулярное разложение матрицы и т.д.
Справочная информация по матричным функциям находится в разделе matfun справочной системы MATLAB.