- •§ 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