Программа предназначена для обращения квадратной невырожденной матрицы
методом Гаусса-Жордана с выбором главного элемента по столбцу.
Вычислительная схема метода:
А = А (0),
= ,
= – · , i ≠ k, j ≠ k;
= , j ≠ k, = – , i ≠ k.
Обратная матрица получается на месте исходной.
П р о г р а м м а
Program OBR_MATR;
const nmax = 10;
var A: array [1..nmax,1..nmax] of real;
P: array [1..nmax] of integer;
i,j,k,b,n,t:integer;
e,s:real;
label 1,2,3,4,vyh;
Begin
writeln('программа обращения матрицы методом Гаусса-Жордана');
writeln;
write('введите размерность матрицы А: n=');
readln(n);
writeln('ввод матрицы А:');
for i:=1 to n do
for j:=1 to n do
Begin
write('введите A[',i,',',j,']=');
readln(A[i,j]);
end;
for i:=1 to n do P[i]:=i;
for k:=1 to n do
Begin
e:=0;
b:=0;
for i:=k to n do
if e<abs(A[i,k]) then
Begin
e:=abs(A[i,k]);
b:=i
end;
if e=0 then
Begin
writeln('матрица вырождена');
goto vyh;
end;
if k<b then
Begin
for j:=1 to n do
Begin
s:=A[k,j];
A[k,j]:=A[b,j];
A[b,j]:=s
end;
t:=P[k];
P[k]:=P[b];
P[b]:=t;
end;
A[k,k]:=1/A[k,k];
for j:=1 to n do
Begin
if j=k then goto 2;
s:=A[k,j]*A[k,k];
for i:=1 to n do
Begin
if i=k then goto 1;
A[i,j]:=A[i,j]-A[i,k]*s;
1: end;
A[k,j]:=s;
2: end;
for i:=1 to n do
Begin
if i=k then goto 3;
A[i,k]:=-A[i,k]*A[k,k];
3: end;
end;
for k:=1 to n do
4: if k<P[k] then
Begin
i:=P[k];
for j:=1 to n do
Begin
s:=A[j,k];
A[j,k]:=A[j,i];
A[j,i]:=s
end;
t:=P[i];
P[i]:=P[k];
P[k]:=t;
goto 4;
end;
writeln;
writeln(' О Б Р А Т Н А Я М А Т Р И Ц А');
for i:=1 to n do
Begin
writeln;
for j:=1 to n do write(A[i,j]:10:5)
end;
vyh:readln;
end.