Bonjour , je rélaise un programme sur les déterminants et les valeurs propres . Pour les déterminants , pas de pb ... mais pour les valeurs propres c'est autre chose ...

Voici mon programme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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.

Sauriez vous me dire ce qui ne va pas dans mon programme ?