Добавил:
Tushkan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программа для построения и анализа графов / UDeterminant
.pas unit UDeterminant;
interface
uses Utype;
function opr(var a:matrix):integer;
implementation
procedure Per(i1,i2:integer;var a:matrix);
{процедура перестановка нужна когда главный элемент равен 0, а делить на него нельзя, переставляются строки так, чтобы главный элемент был максимальный по модулю}
var z:integer;
j: integer;
begin
for j:=1 to high(a) do
begin
z:=a[i1,j];a[i1,j]:=a[i2,j];a[i2,j]:=z;
end;
end;
function znak(p:integer):integer;
{при перестановке строк изменяется знак определителя, поэтому нужно это учитывать}
begin
if p mod 2=0 then
znak:=1 else znak:=-1;
end;
function opr(var a:matrix):integer;
{собственно нахождение определителя, алгоритм читайте в книгах, рассказывать не умею}
var k,i,j,p:integer;
r:real;
det: integer;
begin
det:=1;
for k:=1 to high(a) do
begin
det:=det*a[k,k];
for j:=k+1 to high(a) do
begin
r:=a[j,k]/a[k,k];
for i:=k to high(a) do
begin
a[j,i]:=round(a[j,i]-r*a[k,i]);
end;
end;
end;
result:=det;
end;
end.
interface
uses Utype;
function opr(var a:matrix):integer;
implementation
procedure Per(i1,i2:integer;var a:matrix);
{процедура перестановка нужна когда главный элемент равен 0, а делить на него нельзя, переставляются строки так, чтобы главный элемент был максимальный по модулю}
var z:integer;
j: integer;
begin
for j:=1 to high(a) do
begin
z:=a[i1,j];a[i1,j]:=a[i2,j];a[i2,j]:=z;
end;
end;
function znak(p:integer):integer;
{при перестановке строк изменяется знак определителя, поэтому нужно это учитывать}
begin
if p mod 2=0 then
znak:=1 else znak:=-1;
end;
function opr(var a:matrix):integer;
{собственно нахождение определителя, алгоритм читайте в книгах, рассказывать не умею}
var k,i,j,p:integer;
r:real;
det: integer;
begin
det:=1;
for k:=1 to high(a) do
begin
det:=det*a[k,k];
for j:=k+1 to high(a) do
begin
r:=a[j,k]/a[k,k];
for i:=k to high(a) do
begin
a[j,i]:=round(a[j,i]-r*a[k,i]);
end;
end;
end;
result:=det;
end;
end.
Соседние файлы в папке Программа для построения и анализа графов