Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "gplot.h"
- #include <gsl/gsl_off_bassel.h>
- #include <math.h>
- #define NMAX 200
- #define MY_MEM_ERR 1
- #define MY_FILE_ERR 2
- #define MY_CALL_ERR 3
- #define MY_SUCCES 0
- int main (int argc, char **argv)
- {
- if (argc != 2)
- {
- printf("\Utilizare %s nume_fisier \n", argv[0]);
- printf("nume_fisier este numele fisierului de date binar care va fi creat \");
- printf("Programul calculeaza perechile (X,J0(x)) pe un grad cu pasul 0.1 pe intervalul [0,20]\n");
- printf("si stocheaza aceste perechi in fisierul binar nume fisier. La final extrage aceste perechi in fisierul binar nume_fisier. La final extrage si afiseaza a 7-a pereche \n\n");
- return MY_CALL_ERR;
- }
- //declaratii; data este bufferul de date alocate in memoria libera, x a fost introdus pentru claritate
- double x, * data;
- int i;
- FILE *fp; //pentru fisierul de date
- gplot_ctrl *gp; //pentru controlul sesiunii gnuplot
- char ctr;
- //pot aloca spatiu RAM
- if ((data = (double,*) malloc(2*NMAX*sizeof(double))) == NULL)
- {
- fprintf(stderr, "%s: nu pot aloca RAM. Ies...\n", argv[0]);
- return MY_MEM_ERR;
- }
- //populez spatiul alocat cu valori (x, J0(x) si le sciru intr-un fisier text (cu numele dat ca argument in linia de comanda)
- for (i=0; i<2*NMAX; i+=2)
- {
- x = ((double)i)*20./((double)NMAX/2.;
- *(data + i) = x;
- *(data+i+1) = gsl_sf_bessel_J0(x);
- }
- if ((fp = fopen(argv[1],"w")) == NULL)
- {
- fprintf(stderr, "%s: nu pot crea fisierul de date %s. Ies... \n", argv[0], argv[1]);
- return MY_FILE_ERR;
- }
- for (i=0; i<2*NMAX; i+=2)
- fprintf(fp,"%.5lf\t%.5lf\n",*(data + i), *(data + i + 1));
- fclose(fp);
- //initiez sesiunea gnuplot
- printf("\nLansez in executie subprocesul gnuplot...\n");
- gp=gplot_init();
- gplot_set_xlabel(gp,"x [div.]");
- gplot_set_ylabel(gp,"J0(x) [div.]");
- gplot_setstyle(gp,"lines");
- gplot_cmd(gp,"plot '%s' u 1:2 w %s", argv[1], gp->pstyle);
- printf("Comanda trimisa catre subprocesul gnuplot:\t\"plot '%s' u 1:2 w %s\"", argv[1],gp->pstyle);
- printf("\ntermin sesiunea activa gnuplot...\n");
- printf("Apasa o tasta pentru a termina programul\n\n");
- scanf("%c",&ctr);
- gplot_close(gp);
- free(data);
- return MY_SUCCES;
- }
Advertisement
Add Comment
Please, Sign In to add comment