Обращение матрицы методом Гаусса-Жордана

Программа предназначена для обращения квадратной невырожденной матрицы

методом Гаусса-Жордана с выбором главного элемента по столбцу.

Вычислительная схема метода:

А = А (0),

= ,

= · , ik, jk;

= , jk, = – , ik.

Обратная матрица получается на месте исходной.

П р о г р а м м а

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.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: