- •§ 4. Алгебра матриц
- •4.2. Вычисление собственных векторов и собственных значений матриц по методу данилевского
- •4.3. Вычисление собственных векторов и собственных значений симметрической матрицы методом якоби
- •4.4. Задача обращения матриц и вычисления главного определителя по схеме гаусса
- •4.5. Обращение симметрической матрицы методом квадратных корней
- •4.6. Обращение матрицы и решение системы линейных алгебраических уравнений
- •4.7. Умножение уплотненной симметрической матрицы на прямоугольную
- •4.8. Корректировка обратной матрицы после изменения одного элемента в прямой матрице
- •4.9. Матрица причинно-следственных отношений
4.4. Задача обращения матриц и вычисления главного определителя по схеме гаусса
Метод Гаусса, подробно рассмотренный в п. 3.1 и 3.2, с успехом может быть использован для вычисления определителей.
Пусть дана неособенная матрица (1.33) и надо найти обратную матрицу и detА. Если матрица (1.33) имеет ранг больше трех, то даже задача нахождения детерминанта не является простой задачей. Надо отметить, что данный метод нельзя применять, если исходная матрица особенная. Рассмотрим линейную однородную систему уравнений Ах = 0, при решении которой матрица А заменяется верхней треугольной матрицей В:
,
тогда уравнение преобразуется к виду Вх = 0. Элементы матрицы В получаются из элементов матрицы А по формулам единственного деления (1.26). Но заметим, что деление на ведущий элемент матрицы эквивалентно выносу за определитель сомножителя аii, тогда
detА = а11 detА(1) =
= а11 а22 detА(2) = ... = а11 а22 ...аnn detB,
но det В = 1, следовательно
det А = а11 а22 ...а nn., (1.47)
т.е. определитель матрицы равен произведению "ведущих" элементов для соответствующей схемы Гаусса. Если при приведении матрицы А к треугольному виду использовать модифицированный метод Гаусса с выбором главного элемента, то формула (1.47) примет следующей вид:
det А = (-1)k а11 а22 ...а nn , (1.48)
где k - количество перестановок строк при реализации метода.
Очень часто метод Гаусса применяют при решении задачи обращения матриц. Обозначим элементы обратной матрицы через aij, тогда задача обращения матрицы А сводится к решению системы линейных уравнений аij × ajk = dik, или в матричной записи АА-1 = Е, где Е - единичная матрица. Решая систему уравнений методом Гаусса - Жордана, легко получаем обратную матрицу:
Правая часть преобразованной матрицы и будет являться искомой обратной матрицей А-1.
Как уже указывалось, метод Гаусса является очень распространенным вычислительным методом, и поэтому практически любая БСП имеет вычислительную процедуру, реализующую метод Гаусса. Рассмотрим одну из таких процедур ЕС-1066 для транслятора FORTRAN-77, несколько модифицированную для обращения матрицы и вычисления определителя (перевод текста процедуры на язык PASCAL выполнен авторами):
procedure gaus_obr (a : mas; var v : mas;
var tol : integer; var det : real);
type mst = array [1..n*2]of real;
mss = array [1..n] of mst;
var a1 : mss; i, j, m, k : integer; h : real;
begin
for i := 1 to n do
{ ФОРМИРОВАНИЕ ВСПОМОГАТЕЛЬНОЙ МАТРИЦЫ А1 }
for j := 1 to n*2 do
if j<= n then
a1 [i,j] := a[i,j]
else
if i=j-n then
a1 [i,j] := 1.0
else
a1[i,j] :=0.0;
tol := 0;
det := 1;
{ НАЧАЛЬНЫЕ ЗНАЧЕНИЯ СОNSТ-ант}
if n > 50 then
begin
tol := 2;
exit;
end;
if abs(a1[n,n]) < 1.0e-10 then
begin
tol := 1;
exit;
end;
for i := 1 to n do
begin
if abs(a1[i,i])<1.0e-10 then
begin tol:= 1; exit; end;
h := a1[i,i];
det := det * h;
for j := i to n*2 do
a1[i,j] := a1[i,j] / h;
if i<n then
for j := i+1 to n do
begin
h := a1[j,i];
for k := 1 to n*2 do
a1[j,k] := a1 [j,k] - h*a1[i,k];
end;
end;
for i := n downto 1 do
for k := i-1 downto 1 do
begin
h := a1[k,i];
for j:=1 to 2*n do
A1[k,j] := A1[k,j] - A1[i,j]*H;
end;
for i := 1 to n do
for j := n+1 to n*2 do
v [i,j-n] := a1[i,j];
end.
Формальные параметры процедуры. Входные: А (тип real) - матрица, для которой ищется обратная; N (тип integer) - размерность матрицы (матрица должна быть квадратной, т.е. размером N´N). Выходные: tоl (тип real) - целое число, которое при нормальном завершении процедуры равно 0. Если при обращении матрицы один из диагональных элементов стал равен 0, то процедура возвращает значение данного параметра 1; V (тип real) - обратная для А матрица; SUМ- определитель матрицы.
В процедуре gaus_obr вводится вспомогательная матрица А1, размером [N´2*N], в которой первая половина равна введенной матрице А, а вторая (от N+1 до N*2) - единичной. Выполняя преобразования над первой половиной матрицы А1 (от 1 до N) для приведения ее к виду единичной матрицы, получаем во второй половине матрицы А1 матрицу, обратную по отношению к А, т.е. А-1. При выполнении деления на ведущий элемент аii подсчитывается и определитель матрицы А, который накапливается в переменной SUМ.
Для примера и проверки процедуры находим обратную матрицу методом Гаусса и вычисляем dеtА. Матрица взята из п. 3.1. Результаты вычислений приводятся в табл. 1.20.
Определитель матрицы равен -0.1020.
Таблица 1.20
-
Обратная матрица
Проверка А*А-1
1.5505
-0.1315
-0.5025
0.0941
1.000
-0.0000
-0.0000
-0.0000
-0.1315
-0.1786
-0.0560
1.3062
0.000
1.0000
-0.0000
-0.0000
-0.5025
-0.0560
4.1116
-1.3471
-0.000
0.0000
1.0000
0.0000
0.0941
1.3062
-1.3471
0.2365
0.000
0.0000
-0.0000
1.0000
