IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Turbo Pascal Discussion :

Déterminant d'une matrice


Sujet :

Turbo Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mars 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 63
    Par défaut Déterminant d'une matrice
    Bonjour,
    j'essaie de faire un programme de simulation des réseaux ouverts avec Turbo Pascal (TP7); j'ai besoin de faire des procédures et fonctions pour calculer les déterminants d'une matrice.
    Voici le code que j'ai réalisé mais le problème est que lorsque j'exécute le programme, il ne trouve pas la valeur du déterminant exacte (il trouve une valeur différente de celle que j'ai calculé manuellement).
    Si vous pouvez m'aider pour trouver l'erreur au niveau des procédures.
    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
    procedure det_aux( ma:matrice;var mb:matrice;l,c:integer);
        var i,j,d,e:integer;
        begin
     
        e:=1;
        for i:=1 to l  do
         begin
        d:=1;
         if (i<>1) then
         begin
         for j:=1 to N do
         if(j<>c) then
         begin
         mb[e,d]:=ma[i,j];
         d:=d+1;
         end;
         e:=e+1;
        end;
        end;
        end;
     
     
        function expo(n:integer):integer;
        begin
        if (n mod 2=0) then expo:=1
        else
         expo:=-1 ;
         end;
     
     
         function determinant(m:matrice;l:integer):real;
          var i:integer;
          var m2:matrice;
          var x:real;
        begin
         x:=0;
         if(l=1) then determinant:=m[1,1]
         else
         begin
         for i:=1 to l do
         begin
         det_aux(m,m2,i,1);
         x:=x+(expo(i)*m[i,1]*determinant(m2,(l-1)));
        end;
         determinant:=x;
         end;
         end;
    Merci

  2. #2
    Invité de passage
    Inscrit en
    Janvier 2011
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 1
    Par défaut
    Bonsoir,
    En regardant une première fois, je pense qu'il ya un problème dans la façon de construire les sous-matrices, il faut prendre en compte lorque j est différent de 1,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For k<j mb(l,k):= ma(l+1,k)
      For k:=j to (n-1)
        mb(l,k):= ma(l+1,k+1)
    Ensuite le signe, la procedure expo, il faut faire le contraire.
    Enfin, dans la fonction determinant, ce n'est pas le i qui varie mais le j.

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    @hajerboug

    Ton code n'est pas très lisible. Merci de le formater(une bonne identation) pour qu'on puisse le lire.

  4. #4
    Membre Expert

    Homme Profil pro
    Formation: Chimie et Physique (structure de la matière)
    Inscrit en
    Décembre 2010
    Messages
    1 333
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Formation: Chimie et Physique (structure de la matière)
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2010
    Messages : 1 333
    Billets dans le blog
    9
    Par défaut Calcul du déterminant d'une matrice
    Bonjour,

    Un programme est en soi difficile à lire; il devient incompréhensible si le texte est incomplet, notamment en l'absence des déclarations préliminaires des constantes , types et variables.

    Le point essentiel est l'ordre des matrices: s'agit-il d'une variable ou d'une constante ? Quelle est sa valeur ?

    Il convient aussi de noter par un bref commentaire la finalité des procédures et des fonctions: la lecture s'en trouve grandement facilitée, et vous-même dans six mois aurez totalement oublié ce que vous vouliez faire par ce programme.

    Enfin la vérification serait rendue plus aisée par une tabulation rigoureuse du texte, plaçant les délimitateurs de blocs < BEGIN ... END > à la même distance de la marge (et de même pour < THEN ... ELSE >; c'est contraignant et fastidieux au début, mais l'habitude est vite prise.
    A titre d'exemple, une partie du texte:

    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
     
    function determinant(m:matrice;l:integer):real;
      var i:integer;
      var m2:matrice;
      var x:real;
      begin
        x:=0;
        if(l=1) then determinant:=m[1,1]
                else begin
                       for i:=1 to l do
                         begin
                            det_aux(m,m2,i,1);
                            x:=x+(expo(i)*m[i,1]*determinant(m2,(l-1)));
                         end;
                       determinant:=x;
                     end;
      end;

Discussions similaires

  1. Déterminant d'une matrice
    Par mister3957 dans le forum Développement 2D, 3D et Jeux
    Réponses: 3
    Dernier message: 05/11/2007, 15h41
  2. Déterminant d'une matrice
    Par sarrou dans le forum C
    Réponses: 5
    Dernier message: 28/11/2006, 10h57
  3. Inversion et déterminant d'une matrice
    Par coline dans le forum Algorithmes et structures de données
    Réponses: 16
    Dernier message: 23/06/2006, 09h01
  4. [Matrices] Comment calculer le Déterminant d'une matrice 4x4
    Par cyber_N dans le forum Algorithmes et structures de données
    Réponses: 70
    Dernier message: 19/08/2005, 15h47
  5. [Débutant] Calculer le déterminant d'une matrice
    Par v4np13 dans le forum Mathématiques
    Réponses: 7
    Dernier message: 30/05/2005, 17h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo