Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
28.06.2014
Размер:
1.1 Кб
Скачать
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.
Соседние файлы в папке Программа для построения и анализа графов