Программа предназначена для вычисления определителя n -го порядка
методом Гаусса с выбором главного элемента по всей матрице.
Вычислительная схема метода:
a ´ ij = aij – , k = 1, 2, …, n – 1; i = k + 1, …, n; j = k + 1, …, n; d = .
П р о г р а м м а
Program OPRED;
const nmax = 10;
var A: array [1..nmax,1..nmax] of real;
i,j,k,b,n,c:integer;
e,d,p,s,g:real;
label 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;
d:=1;
for k:=1 to n do
Begin
e:=0;
b:=0;
c:=0;
for j:=k to n do
for i:=k to n do
if e<abs(A[j,i]) then
Begin
e:=abs(A[j,i]);
b:=j;
c:=i;
end;
if e=0 then
Begin
writeln;
writeln('ОПРЕДЕЛИТЕЛЬ РАВЕН НУЛЮ');
goto vyh;
end;
if k<b then
Begin
for j:=k to n do
Begin
s:=A[k,j];
A[k,j]:=A[b,j];
A[b,j]:=s
end;
d:=-d;
end;
if k<c then
Begin
for j:=k to n do
Begin
s:=A[j,k];
A[j,k]:=A[j,c];
A[j,c]:=s
end;
d:=-d;
end;
for i:=k+1 to n do
Begin
g:=A[i,k]/A[k,k];
for j:=k+1 to n do A[i,j]:=A[i,j]-A[k,j]*g;
end;
end;
p:=1;
for i:=1 to n do p:=p*A[i,i];
d:= d*p;
writeln;
writeln('ОПРЕДЕЛИТЕЛЬ D =',d:10:5);
vyh:readln;
end.