1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| program determinant;
uses wincrt;
type tmat=array[1..10,1..10] of integer;
var dim,d:integer;
det,det2:integer;
mat:tmat;
vals:integer;
Procedure entree;
var lig,col:integer;
begin
writeln('Entrez la dimension de la matrice');
readln(dim);
writeln('Entrez les composantes ');
for lig:=1 to dim do begin
writeln('pour la ligne ',lig);
for col:=1 to dim do begin
writeln('colonne ',col, '?');
readln (mat[lig,col])
end
end
end;
Procedure afficher (mat:tmat) ;
var lig,col:integer;
begin
for lig:=1 to dim do
begin
writeln;
for col:=1 to dim do
write(mat[lig,col]:5)
end;
end;
Procedure sous_mat (mdeb:tmat ; var mfin:tmat ; ind,dim:integer);
var col,lig,l:integer;
begin
l:=0;
for lig:=1 to dim do begin
if lig <> ind then begin
l:=l+1;
for col:=2 to dim do
mfin[l,col-1]:=mdeb[lig,col]
end
end
end;
Function detn (m:tmat ; d:integer):integer;
var mprim:tmat;
lig,signe:integer;
result:integer;
begin
if d=1 then detn:=m[1,1]
else begin
result:=0;
signe:=-1;
for lig:=1 to d do begin
sous_mat (m,mprim,lig,d);
signe:=-signe;
result:=result+(signe*m[lig,1]*detn(mprim,d-1))
end;
detn:=result
end;
end;
Function valeurs (var mat:tmat ; d:integer):integer ;
var x,lig,col,propres: integer;
begin if d=1 then valeurs:=mat[1,1] else begin
for x:=-1 to 1 do
for lig:=1 to dim do begin
for col:=1 to dim do begin
if lig=col then mat[lig,col]:=mat[lig,col]-x;
end;
end;
det2:=detn(mat,d) ;
end;
if det2=0 then x:=propres
end;
Begin
entree;
afficher (mat);
writeln;
det:=detn(mat,dim);
writeln;
writeln('Le determinant est : ' ,det);
writeln;
vals:=valeurs(mat,d);
writeln('les valeurs propres sont : ',vals )
end. |
Partager