Важной задачей линейной алгебры является задача на собственные значения.
Собственные числа (значения) λi и собственные векторы (ui ≠ 0) квадратной матрицы А удовлетворяют равенствам
Aui = λiui.
Собственные значения λ квадратной матрицы А являются корнями ее характеристического уравнения│A - λE│ = 0, где E – единичная матрица того же порядка n, что и А. Многочлен │A - λE│называется характеристическим полиномом матрицы А. В общем случае имеется n различных комплексных или вещественных корней характеристического уравнения. Их количество будет меньше в случае кратных корней.
Пример:
Дана квадратная матрица второго порядка
A =
Решить задачу на собственные значения вручную и средствами MATLAB.
В MATLAB массив коэффициентов характеристического полинома матрицы А возвращает команда poly:
>> poly(A)
ans =
1 -5 -14
Характеристическим уравненим является квадратное уравнение
λ2 - 5λ - 14 = 0.
Вычисляем корни этого уравнения.
λ1,2 = = = = = .
Корни уравнения λ1 = -2 и λ2 = 7 являются собственными значениями матрицы А.
Найдем теперь собственные векторы, соответствующие этим собственным значениям. Собственный вектор
U = ,
соответствующий собственному значению λ1 = -2, определяется уравнениями
т. е. 5u1 + 4u2 = 0. Из этого равенства следует, что собственный вектор U определяется с точностью до числового множителя, поэтому одну из координат собственного вектора можно зафиксировать. Полагая u1 = -4, найдем u2 = 5 и получим
U = .
Аналогично, собственный вектор
V = ,
соответствующий собственному значению λ2 = 7, определяется уравнениями
т. е. v1 – v2 = 0. Полагая v1 = 1, найдем v2 = 1 и получим
V = .
Следовательно, собственным значениям λ1 = -2 и λ2 = 7 соответствуют собственные векторы
U = и V = .
На рассмотренном примере мы убедились, что задача на собственные значения оказалась достаточно сложной и трудоемкой даже для матрицы минимального (второго) порядка.
В MATLAB собственные значения матрицы A вычисляет команда eig(A):
>> A=[3 4;5 2];
>> Lambda=eig(A)
Lambda =
-2
Команда [R,Lam]=eig(A) вычисляет как собственные значения, так и собственные векторы:
>> [R,Lam]=eig(A)
R =
0.7071 -0.6247
0.7071 0.7809
Lam =
7 0
0 -2
Собственные значения являются диагональными элементами диагональной матрицы Lam, а столбцы матрицы R являются собственными векторами. Итак, собственным значениям λ1 = -2 и λ2 = 7 соответствуют собственные векторы
R1 = и R2 = .
Как указывалось выше, собственные векторы определяются с точностью до числового множителя. Команда eig вычисляет единичные или нормированными по евклидовой норме собственные векторы.
Существуют различные типы векторных норм. Норма ||R||p вектора R длины n определяется следующим образом:
||R||p = (p = 1, 2, …).
Если p=2 – норма называется евклидовой.
В MATLAB норму ||R||p вектора R вычисляет команда norm(R,p). Команда norm(R) вычисляет евклидову норму вектора R по умолчанию. Если norm(R) = 1, вектор R называется единичным или нормированным.
Вектор R нормируется следующим образом:
Rnorm = .
Пронормируем найденные вручную собственные векторы
U = и V = :
>> U=[-4;5];V=[1;1];
>> disp(U/norm(U))
-0.6247
0.7809
>> disp(V/norm(V))
0.7071
0.7071
Результы совпали с собственными векторами R1 и R2, вычисленными командой eig.
Для получения вычисленных в символьной форме пар собственных значений и собственных векторов, введем следующую команду:
>> [R,Lam]=eig(sym(A))
R =
[ 1, 1]
[ 1, -5/4]
Lam =
[ 7, 0]
[ 0, -2]
Некоторые команды линейной алгебры MATLAB мы рассматривали ранее. К ним относятся, в частности, команды вычисления определителя и обратной матрицы det и inv.(см. разд. 1.10).
В MATLAB cуществует и другие команды решения типовых задач линейной алгебры.
Так, команда norm вычисляет различные виды норм векторов и матриц. Справку по этой команде можно получить, набрав в командной строке doc norm.
Команда rank(B) возвращает ранг прямоугольной матрицы B.
Ранг матрицы B есть такое число r = rB, что по крайней мере один из определителей r - го порядка, получаемый из этой матрицы при удалении строк и/или столбцов, отличен от нуля, а все определители (r+1) - го порядка равны нулю. Ранг матрицы равен наибольшему числу линейно независимых строк (или столбцов). Квадратная матрица B порядка n является невырожденной в том и только в тот случае, когда ее ранг rB = n, т. е. det(B) ≠ 0.
Найдем ранг рассмотренной выше матрицы
A = :
>> disp(rank(A))
Поскольку ранг и порядок квадратной матрицы А совпадают, ее определитель должен быть ненулевым. Проверка:
>> det(A)
ans =
-14
Перечислим некоторые из команд линейной алгебры:
cond – число обусловленности матрицы;
lu – разложение на треугольные матрицы;
svd – сингулярное разложение матрицы и т. д.
Справочная информация по командам линейной алгебры находится в разделе matfun справочной системы MATLAB.
Вопросы для самопроверки
1. Как в MATLAB создать вектор с помощью операции сцепления строк, индексацией с помощью вектора, индексацией с помощью двоеточия?
2. Какие команды выдают размер и размерность массива?
3. Что называется порядком квадратной матрицы?
4. Какая команда выдает длину вектора?
5. С помощью какой команды можно упорядочить вектор по убыванию?
6. Как найти сумму всех элементов матрицы?
7. Какие команды создают массивы специального вида?
8. Какая команда осуществляет разворот матрицы на 90o против часовой стрелки?
9. Какая команда выделяет главную диагональ матрицы?
10. Как «растянуть» матрицу в вектор с помощью оператора двоеточия?
11. Как создаются новые матрицы на основе существующих с помощью операций горизонтального и вертикального сцепления?
12. Как построить таблицу значений функции?
13. Какие команды вычисляют собственные значения и собственные векторы квадратной матрицы?