Глава 4. Элементы матричной алгебры
Сначала создаем командой A=[1 2 1;-1 0 1;2 -1 1] матрицу, для которой затем вычисляем обратную матрицу. Используем команду B=inv(A), с помощью которой вычисляем обратную матрицу и результат записываем в переменную B. Свойства обратной матрицы проверяем, вычислив произведение A*B. В результате, как и следовало ожидать, получаем единичную матрицу.
При работе с матрицами часто приходится решать задачу о вычислении собственных чисел и собственных векторов матрицы. Собственные числа
λ |
ˆ |
ˆ |
ˆ |
матрицы A получаются как решение уравнения det(A −λE) = 0. Соб- |
|||
ственным вектором, который соответствует собственному числу λ матрицы |
|||
ˆ |
|
ˆ |
|
A, называется такой ненулевой вектор ξ |
, при котором уравнение Aξ = λξ |
||
имеет нетривиальное решение (то есть решение, отличное от тождественно нулевого).
На заметку
Собственные векторы определяются не однозначно, а с точностью до общего множителя. Обычно этот множитель выбирается так, чтобы вектор имел единичный модуль.
Собственные числа матрицы могут быть комплексными. Количество собственных чисел, с учетом их кратности, совпадает с рангом матрицы. Разным собственным числам отвечают разные собственные векторы. Для кратных собственных чисел количество независимых собственных векторов может быть в пределах от одного до кратности собственного числа.
Для вычисления собственных чисел и собственных векторов в Matlab используется функция eig(). Пример использования этой функции в разных вариантах вызова приведен в документе на рис. 4.10.
Сначала создаем матрицу A, а затем командой eig(A) вычисляем собственные числа матрицы. Стоит обратить внимание, что среди трех вычисленных собственных чисел матрицы два – комплексные. Результатом функции eig() в данном формате вызова возвращается вектор с элементами - собственными числами матрицы. Если результат вызова функции eig() записать в массив из двух элементов, то в первый элемент запишутся по столбикам собственные векторы матрицы-аргумента функции eig(), а во второй элемент записывается матрица, по диагонали которой располагаются соответствующие собственные числа (недиагональные элементы этой матрицы равны нулю). Примером может быть команда [x,l]=eig(A). В результате матрица x будет состоять из столбцов, которые являются собственными векторами матрицы A, а матрица l будет диагональной. Ее диагональные элементы являются собственными числами матрицы A. Для удобства ниже приведен код, который содержится в документе на рис. 4.10 (жирным шрифтом выделен ввод пользователя):
161
Самоучитель Matlab
Рис. 4.10. Вычисление собственных чисел
>> A=[1 2 1;-1 0 1;2 -1 1]
A =
1 |
2 |
1 |
-1 |
0 |
1 |
2 |
-1 |
1 |
>>eig(A) ans =
2.4883
-0.2442 + 1.7764i -0.2442 - 1.7764i
>>[x,l]=eig(A)
x = |
-0.0583 |
- 0.5276i |
-0.0583 |
+ 0.5276i |
0.6170 |
||||
0.0671 |
0.6082 |
+ 0.5528i |
0.6082 |
- 0.5528i |
0.7841 |
-0.2068 |
-0.2068 |
||
l = |
0 |
0 |
||
2.4883 |
||||
0 |
-0.2442 |
+ 1.7764i |
0 |
|
0 |
0 |
-0.2442 |
- 1.7764i |
|
162
Глава 4. Элементы матричной алгебры
Вычисленные таким образом матрицы x, l и исходная матрица A должны быть такими (в силу определения собственных чисел и векторов), чтобы произведения A*x и x*l давали одинаковые результаты. Это обстоятельство мы проверяем во второй части рассмотренного ранее документа (см. рис. 4.10), представленной на рис. 4.11.
Рис. 4.11. Проверка результатов вычислений собственных чисел и собственных векторов
Как и следовало ожидать, результаты вычисления матриц A*x и x*l идентичны.
При работе с квадратными матрицами, кроме прочего, можно использовать операцию возведения в степень ^. Показатель степени может быть любым целым числом, в том числе и отрицательным. Примеры возведения матриц в целочисленные степени приведены в документе на рис. 4.12.
Например, командой A^3 вычисляем произведение |
ˆ ˆ ˆ |
A A A, а командой |
|
ˆ |
|
A^(-1) вычисляется обратная матрица к матрице A. |
|
В некоторых случаях полезно прибегать к вычислению функций от матричных аргументов. При решении задач в аналитическом виде к такому подходу прибегают редко, поскольку для функции от матричного аргумента намного легче записать символьное выражение, чем получить приемлемое для прикладного использования выражение. Другое дело, когда для расчетов используется прикладной математический пакет, такой как Matlab. Ситуацию проиллюстрируем на примере вычисления матричной экспоненты.
Как известно, в Matlab есть встроенная функция exp() для вычисления экспоненты.
163
Самоучитель Matlab
Рис. 4.12. Возведение матрицы в степень
На заметку
По определению экспоненциальная функция для скалярного аргумента x опре-
|
x2 |
|
xn |
∞ |
xk |
|
|
деляется как ex ≡ exp(x) = 1 + x + |
+.. + |
+... = ∑ |
. |
||||
|
n ! |
|
|||||
2! |
|
k =0 |
k ! |
||||
|
|
|
|
|
|
||
Аргументом функции exp() можно указать матрицу. В этом случае результатом будет матрица, элементы которой получаются экспонированием со-
ответствующих элементов исходной матрицы. Так, если матрица ˆ состоит
A
из элементов aij (индексы i = 1,2,..,m и j = 1,2,...,n ) и она записана в переменную A, то в результате вычисления выражения exp(A) получим матрицу с элементами exp(aij ). По-другому вычисляется функция expm(A). Во-первых, матрица-аргумент A должна быть квадратной. Во-вторых, результатом является матрица, которая, если не вдаваться в подробности, вы-
|
|
ˆ2 |
|
|
ˆn |
|
ˆ |
ˆ |
A |
|
A |
|
|
числяется в виде ряда E |
+ A + |
2! |
+... + |
|
n ! |
+..., то есть по тому же пра- |
|
|
|
|
|
||
вилу, что и экспонента от скалярного аргумента. Здесь через ˆ обозначена
E
единичная матрица того же ранга, что и матрица ˆ. Различие в функциях
A exp() и expm() иллюстрирует документ на рис. 4.13.
164
Глава 4. Элементы матричной алгебры
Рис. 4.13. Матричная экспонента
На первый взгляд может показаться, что польза от функции expm() и, более обще, матричных функций, которые вычисляются аналогично функциям скалярного аргумента, не очень велика. Но это не так. Рассмотрим простой, но показательный пример.
Допустим, что нам необходимо решить задачу Коши: систему диффе-
ренциальных уравнений |
dx(t) |
= −2x(t) + 3y(t) и |
|
dy(t) |
= −3x(t) + y(t) |
|
|
||||
|
dt |
|
dt |
||
с начальными условиями x(0) = 1 и y(0) = 3. |
Это линейная систе- |
||||
ма дифференциальных уравнений первого порядка, и для ее решения в аналитическом виде существуют стандартные приемы. Сложного в них ничего нет, но вычисление решения по общепринятому алгоритму может занять некоторое время. Поэтому простым, но длинным путем мы не пойдем. Отметим только, что точное решение данной систе-
|
5 |
|
|
|
|
|
|
|
|
||
|
3 |
|
3 |
3 |
|
3 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
мы уравнений имеет вид x(t) = exp(−t / 2) |
|
sin |
|
|
+ cos |
|
|
||||
|
2 |
|
t |
2 |
|
t |
|||||
|
3 |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|||
165