процедура ,,procedure Inversa,, далжна вычисляти обратной матрицы
Код | {$R *.dfm} type matrice=array of array of extended;
function Determinant(A:matrice):extended; var det:extended; n,k,i,j:integer; M:matrice;
begin n:=high(A); setlength(M,n,n); if n=0 then Determinant:=A[0,0] {caz elementar} else begin
det:=0; for k:=0 to n do begin
for i:=0 to n-1 do for j:=0 to k-1 do M[i,j]:=A[i+1,j];
for i:=0 to n-1 do for j:=k to n-1 do M[i,j]:=A[i+1,j+1]; if odd(k) then det:=det-A[0,k]*Determinant(M) else det:=det+A[0,k]*Determinant(M); end; Determinant:=det; end; end;
procedure Inversa(A:matrice;var Inv:matrice); var minor:matrice; detmin,det:Extended; n,i,j,kx,ky:Integer; begin n:=High(A); SetLength(minor,n,n); for i:=0 to n do for j:=0 to n do begin for kx:=0 to i-1 do begin for ky:=0 to j-1 do minor [kx,ky]:=A[i,j]; for ky:=j to n-1 do minor[kx,ky]:=A[i,j+1]; end; for kx:=i to n-1 do begin for ky:=0 to j-1 do minor[kx,ky]:=A[i+1,j] ; for ky:=0 to n do minor[kx,ky]:=A[i+1,j+1]; end; det:=Determinant(A); detmin:=Determinant(minor); if Odd(i+1) then Inv[j,i]:=-detmin/det else Inv[j,i]:=detmin/det; end;
end;
|
M Poseidon | при вставке кода пользуйтесь кнопкой "Код" |
|