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

Langage Pascal Discussion :

Algorithme de décomposition de Cholesky


Sujet :

Langage Pascal

  1. #1
    En attente de confirmation mail
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Algorithme de décomposition de Cholesky
    Bonjour,

    alors voilà j'ai un problème pour traduire mon algorithme de décomposition de Cholesky en pascal !!!

    Le problème c'est comment traduire les indices de lignes et de colonnes de la matrice !!
    Dois-je utiliser un tableau avec 2 dimensions ou y a t-il une autre astuce ??

    Merci de répondre

  2. #2
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut Re: cholesky
    Citation Envoyé par mounstein
    dois je utiliser un tableau avec 2 dimension ou y a t-il une autre astuce??
    Non y'a pas d'autre astuce
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

  3. #3
    En attente de confirmation mail
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut :(
    est ce que tu peux m'orienter stp??

  4. #4
    En attente de confirmation mail
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut reponse
    est ce qu'il ya quelqu'un pour m'aider svp??

    j'ai mis mon algorithme sous langage pascal!! la compilation est faite mais le resultat est etrange!! j'arrive pas a voire la matrice L que je devais voire en final!

  5. #5
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Oui et ? On a oublié notre boule de cristal, donc sans code, sans résultat, sans rien en fait, on ne fera pas grand chose...

    @++
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  6. #6
    En attente de confirmation mail
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut oui c vrai
    oui c'est vrai desolée voici le code!

    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
    program cholesky;
     
    const
       n=3;
       m=3;
     
    var
     
       a:array [1..n,1..m] of real;
       r:array [1..n,1..m] of real;
       i,j,k:integer;
       s1:real;
       s2:real;
     
    begin
          s1:=0;
          s2:=0;
          writeln('entrez votre matrice A');
           for i:=1 to n do
            for j:=1 to m do
             readln(a[i,j]);
     
           repeat
             begin
     
               for k:=1 to i-1 do
               s1:=s1+sqrt(r[i,i]);
     
               r[i,i]:=sqrt(a[i,i]-s1);
     
               if r[i,i]=0 then
                 writeln('matrice non reguliere')
     
               while (j>1) and (j<=n) do
                 for k:=1 to i-1 do
                 s2:=s2+(r[i,k]*r[j,k]);
     
                 r[i,i]:=(a[i,j]-s2)/r[i,i];
     
               end;
     
          until i=n
    end.




  7. #7
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Faire des boucles, c'est bien, mais incrémenter/décrémenter les indices, c'est mieux !

    En gros ton repeat ne sert à rien si tu ne fait pas varier "i", de même ton while tourne dans le vide vu que "j" ne varie pas...

  8. #8
    En attente de confirmation mail
    Inscrit en
    Mars 2006
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 5
    Points : 1
    Points
    1
    Par défaut heu..
    j'ai pas bien compris ou dois je incrementer et decrementer?

  9. #9
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    644
    Détails du profil
    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2005
    Messages : 644
    Points : 754
    Points
    754
    Par défaut
    votre extrait de code

    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
     
     repeat
             begin
     
               for k:=1 to i-1 do
               s1:=s1+sqrt(r[i,i]);
     
               r[i,i]:=sqrt(a[i,i]-s1);
     
               if r[i,i]=0 then
                 writeln('matrice non reguliere')
     
               while (j>1) and (j<=n) do
                 for k:=1 to i-1 do
                 s2:=s2+(r[i,k]*r[j,k]);
     
                 r[i,i]:=(a[i,j]-s2)/r[i,i];
     
               end;
     
          until i=n
    pose les problèmes:
    1- ( sans importance mais tout de même)
    avec repeat begin end until, la paire begin end est suppreflue
    2- la boucle se résume à
    repeat .... until i=n
    mais i n'est pas incrementé dans la boucle et son initialisation est plus que douteuse car elle résulte de la fin d'un index for i=1 to n

    Je n'ai pas regardéle code mais à prioris cela doit être quelquechose du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    i:=0;
       repeat
        inc(i);
        ..... { liste des choses à faire }
       until i=n;

Discussions similaires

  1. Algorithme de randomisation ... ( Hasard ...? )
    Par Anonymous dans le forum Assembleur
    Réponses: 8
    Dernier message: 06/09/2002, 14h25
  2. Recherche de documentation complète en algorithmes
    Par Anonymous dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 29/03/2002, 12h09
  3. Algorithme génétique
    Par Stephane.P_(dis Postef) dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 15/03/2002, 17h14

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