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

Algorithmes et structures de données Discussion :

Simplification du Programme Runge Kutta Ordre 4


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut Simplification du Programme Runge Kutta Ordre 4
    Salut !

    Je viens de trouver un superbe algorithme de résolution des equations différentielles par la méthode de runge kutta ordre 4 en C++ posté ici :

    http://www.developpez.net/forums/m1536377-2/

    J'ai juste un petit problème, c'est le fait que je suis un débutant je ne connais pas les bibliothèques : #include <iostream> et #include <cmath>
    car il y a des expressions comme class et public et de tas de choses que je ne connais pas encore ...

    C'est pour cela que je me demande bien s'il y a un moyen pour reformuler cette algorithme en utilisant des bibliothèques simples : #include <stdio.h>
    #include <math.h> et de simples instructions de boucles et d'appel fonction et d'affichage (printf, etc.).

    En d'autres termes simplifier le programme au maximum. J'en serais trop reconnaissant !

  2. #2
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    j'attends vos réponses avec impatience !

  3. #3
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Et pourtant c'est tellement simple (en Fortran):
    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
          Subroutine D006(SM,N,T,DT,Y)
    C
    C***********************************************************************
    C
    C     Bibliothèque JMBPACK
    C
    C     Série D: Equations différentielles
    C
    C***********************************************************************
    C
    C     Méthode de Runge-Kutta d'ordre 4 (1/6 + 2/6 + 2/6 + 1/6)
    C
    C***********************************************************************
    C
    C     Version 3.0: Jean-Marc Blanc, juillet 2004
    C
    C **********************************************************************
    C
    C     SM     Nom d'un sous-programme fourni par l'utilisateur pour le
    C            calcul des dérivées à partir des valeurs de la variable
    C            indépendante et des variables d'état. Ce sous-programme
    C            doit être de la forme
    C              Subroutine SM(N,T,Y,DY)
    C                DY(1)= ...
    C                DY(2)= ...
    C                 .
    C                 .
    C                DY(N)= ...
    C                Return
    C              End
    C            et avoir été déclaré dans une instruction External.
    C
    C     N      Ordre du système différentiel.
    C
    C     T      Variable indépendante.
    C
    C     DT     Pas d'intégration.
    C
    C     Y      Vecteur des variables d'état.
    C
    C **********************************************************************
    C
          Implicit None
    C
          Integer N
          Real*8 DT,T,Y(N)
    C
          Integer I
          Real*8 DY(N),K1(N),K2(N),K3(N),K4(N),Z(N)
    C
          Call SM(N,T,Y,DY)
          Do I=1,N
            K1(I)=DT*DY(I)
            Z(I)=Y(I)+K1(I)/2.d0
          End Do
    C
          Call SM(N,T+DT/2.d0,Z,DY)
          Do I=1,N
            K2(I)=DT*DY(I)
            Z(I)=Y(I)+K2(I)/2.d0
          End Do
    C
          Call SM(N,T+DT/2.d0,Z,DY)
          Do I=1,N
            K3(I)=DT*DY(I)
            Z(I)=Y(I)+K3(I)
          End Do
    C
          Call SM(N,T+DT,Z,DY)
          Do I=1,N
            K4(I)=DT*DY(I)
            Y(I)=Y(I)+(K1(I)+2.d0*K2(I)+2.d0*K3(I)+K4(I))/6.d0
          End Do
    C
          T=T+DT
          Return
    C
          End
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  4. #4
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    Je vous remercie bien pour vote aimable réponse mais moi j'ai un petit projet concernant ce programme et j'ai besoin d'aun algorithme en c++ pas en fortran simple avec des instructions simples au maximum je l'ai mentionné dans mon topic je souhaite vivement que quelqu'un m'aide ! j'en serais trop ravi !

  5. #5
    Membre actif
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Points : 284
    Points
    284
    Par défaut
    Citation Envoyé par achraf2 Voir le message
    [...]je ne connais pas les bibliothèques : #include <iostream> et #include <cmath>
    car il y a des expressions comme class et public et de tas de choses que je ne connais pas encore ...

    C'est pour cela que je me demande bien s'il y a un moyen pour reformuler cette algorithme en utilisant des bibliothèques simples : #include <stdio.h>
    #include <math.h> et de simples instructions de boucles et d'appel fonction et d'affichage (printf, etc.).[...]
    Citation Envoyé par achraf2 Voir le message
    [...]j'ai besoin d'aun algorithme en c++ [...]
    Il faudrait savoir...
    Le code donné par Millie est du C++.
    Toi tu veux un code en C.

  6. #6
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    oui je le veux en c pas en c++ ! svp s'il y a quelqu'un qui peut me répondre

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Il te suffit de traduire mon code de Fortran en C à l'aide de l'utilitaire f2c.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  8. #8
    Futur Membre du Club
    Inscrit en
    Février 2009
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 11
    Points : 6
    Points
    6
    Par défaut
    oui mais est ce que vous avez un lien de cette utilitaire ? SVP Veuillez m'aider
    tenez voilà j'ai un programme en c de Runge kutta ordre 4
    Code C : 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
     
    #include <stdio.h>
    #include <conio.h>
    double F(double t,double y)
    { 
           double r;
           r=-2*y+1;
           return r;
    }
     
    void RK4(double t0,double tf,double y0,double h,char s[20])
    {
         double t,y,k1,k,k2,k3,k4;
         int i;
         FILE *g;
         g=fopen(s,"w");
         t=t0;
         y=y0;
         fprintf(g,"%.5f\t%.5f\n",t,y);
         i=0;
         while(t<tf)
         {          k1=F(t,y);
                    k2=F(t+h/2,y+(h*k1)/2);
                    k3=F(t+h/2,y+(h*k2)/2);
                    k4=F(t+h,y+h*k3);
                    k=(k1+2*k2+3*k3+k4)/6;        
                    fprintf(g,"%.5f\t%.5f\n",t,y);
                    t=t+h;
                    y+=h;
         }
         fclose(g);
    }
    main()
    {
          char s[20];
          double t0,tf,y0,h;
          printf("donner l'instant initial t0=  ");
          scanf("%lf",&t0);
          printf("donner l'instant final tf=   ");
          scanf("%lf",&tf);
          printf("donner le pas h=     ");
          scanf("%lf",&h);
          printf("donner la valeur initiale y0=    ");
          scanf("%lf",&y0);
          printf("donner le nom du fishier   ");
          scanf("%s",s);
          RK4(t0,tf,y0,h,s);
          getch();
    }
    Je souhaite que quelq'un m'aide a intégrer une boucle pour différentes valeur de y.

  9. #9
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Il doit se trouver sur le site http://netlib.org
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

Discussions similaires

  1. Runge Kutta d'ordre 4
    Par Razgriz dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 19/12/2006, 08h13
  2. Runge Kutta d'ordre 4
    Par Physicien dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/12/2006, 16h50
  3. probleme de divergence avec runge kutta d'ordre 2 pour un pendule simple
    Par fab13 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 25/11/2006, 20h19

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