Tracer des graphiques avec la librairie pgplot.h - exemple du pendule

Contenu du snippet

La librairie PGPLOT.h permet de tracer tout simplement des graphiques.
Pour illustrer une des utilisations de pgplot, c'est décider de reprendre mon programme
de résolution d'equation differentielle par la methode d'euler et d'y rajouter
la fonction pour tracer directement les graphiques.

Vous pouvez télécharger la librairie PGPLOT.H à l'adresse suivante:
http://www.astro.caltech.edu/~tjp/pgplot/

Source / Exemple :


#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include "cpgplot.h"

#define g 9.81

int main()
{
    float tau,w,l;
    int nit,i;

    float tabt[1000],tabx[1000],taby[1000];
    int npoints;
    FILE *fichier;

    float x;
    float y;
    float xmin =0., xmax=10.0, ymin =-0.3,ymax=0.3;

    x=0.25; /* conition initiale sur x */

    y=0; /* Conditions initiale */
    i=0;
    nit=1000; /* nombre d'itérations */

    tau=0.01; /* pas d'intégration */

    l=0.2; /* longueur du fil */

    w=sqrt(g/l); /* Omega0 */

    fichier=fopen("resultat.txt","w");
    for(i=1;i<=nit;i++)
    {
        x=x+tau*y;
        y=y+tau*((-w*w)*sin(x));
        fprintf(fichier,"%f %lf %lf\n",i*tau,x,y);
    }
    fclose(fichier);
    fichier=fopen("resultat.txt","r");
    /* On stocke chaque colonne du fichier dans une variable
    de type tableau */
    for (i = 1; i<= nit; i++)

        {
        fscanf (fichier, "%f %f %f \n" ,&tabt[i],&tabx[i],&taby[i]);
        }
    fclose(fichier);

     if (cpgopen("?") < 1) /* ouverture de pgplot */
     return 1;

     npoints=1000;
     cpgenv(xmin,xmax,ymin,ymax,0,0); /* definition des axes */
     cpglab("t", "x", "PGPLOT Graph: Evolution du pendule"); /* titre */
     cpgsci(2); /* couleur du traçage "rouge" */
     cpgline(npoints,tabt,tabx); /* on trace */

     cpgenv(-0.3,0.3,-2.0,2.0,0,0);
     cpglab("x", "y", "PGPLOT Graph: Espace des Phases");
     cpgsci(2);
     cpgline(npoints,tabx,taby);
     cpgclos();

    return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.