Output da Mathematica per grafici con pgfplots

  • Creatore
    Topic
  • #82955
    Up
    0
    Down
    ::


    Ciao a tutti,

    nella mia tesi devo usare il programma di calcolo Mathematica. Poiché i grafici li faccio con l’uso del pacchetto [tt]pgfplots,[/tt] desidererei fare in modo che da Mathematica vengano prodotti opportuni file txt contenenti i punti dei grafici che devo realizzare.

    Ho fatto delle prove e quello a cui sono riuscito a giungere è:
    `(* Numero di campioni *)
    nCamp = 15;
    (* Dominio *)
    xmin = 0; xMax = 2 \[Pi];
    (* Funzione *)
    y[x_] := Sin[x];

    xvec = xmin ;
    For[i = 1, i <= nCamp, i++, xvec = Flatten[{xvec, xmin + i (xMax - xmin)/(nCamp - 1)}]]; yvec = y[N[xvec[[1]]]]; For[i = 1, i <= nCamp, i++, yvec = N[Flatten[{yvec, y[i]}]]]; xvec; yvec; If[FileExistsQ["C:\\prova.txt"] == True, DeleteFile["C:\\prova.txt"]] Export["C:\\prova.txt", Transpose[{N[xvec], yvec}], "Table"]` In effetti la forma sembra quella giusta, ma il file prova.txt nella compilazione non viene accettato. Qualcuno sa come risolvere questo problema?

    Grazie mille e buona giornata,
    Marco.

Visualizzazione 5 filoni di risposte
  • Autore
    Risposte
    • #82956
      Up
      0
      Down
      ::


      Ciao,

      se qualcuno che conosce meglio di me la sintassi di Mathematica avesse voglia di fare delle prove, ecco un esempio compilabile:
      `\documentclass[a4paper,11pt,extrafontsizes,twoside,openright]{memoir}

      \usepackage{etex}
      \usepackage{etoolbox}
      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}
      \usepackage[italian]{babel}
      \usepackage{microtype}

      \usepackage{pgfplots}

      \begin{document}

      \begin{tikzpicture}
      \begin{axis} [xmin=0,xmax=7.5,
      ymin=0,ymax=50,
      grid=major]

      \addplot [thick,blue] file {grafico.txt};
      \end{axis}
      \end{tikzpicture}

      \end{document}`
      dove nel file grafico.txt si ha:

      0 0
      1 1
      2 4
      3 9
      4 16
      5 25
      6 36
      7 49

      Grazie e ciao,
      Marco.

    • #82957
      Up
      0
      Down
      ::

      Marco87″ post=82323
      In effetti la forma sembra quella giusta, ma il file prova.txt nella compilazione non viene accettato. Qualcuno sa come risolvere questo problema?

      Non mi è chiaro il problema: riesci a esportare il file ma poi Latex non lo accetta? ho capito bene?
      I dati del file grafico.txt sono quelli che ottieni con Mathematica? io ho provato a inserirli in Latex e funziona e a te?

    • #82958
      Up
      0
      Down
      ::


      Ciao Marco,

      chiedo scusa; mi accorgo ora, leggendo la tua risposta, che con il secondo messaggio ho depistato. Dunque, quello che ho è il codice Mathematica che ho presentato nel primo messaggio, e quello che vorrei avere è quello che ho mostrato nel secondo (nella forma). In altri termini, nel secondo messaggio, quanto è scritto nel file grafico.txt l’ho scritto a mano. Vorrei che venisse fatta la stessa cosa da Mathematica.

      Detto ancora diversamente: se esegui il codice del primo messaggio in Mathematica e usi il file prova.tex che viene generato nel secondo, al momento non viene accettato. Vorrei che invece lo fosse.

      Spero di aver chiarito. 🙂

      Grazie e ciao,
      Marco.

    • #82959
      LuglioM26
      Partecipante
        Up
        0
        Down
        ::


        Ciao Marco,

        ho provato a compilare i tuoi codici sia in Mathematica che in LaTeX e funzionano senza alcun problema. Ti riporto il contenuto del file di testo generato da Mathematica.

        grafico.txt

        0. 0.
        0.4487989505128276 0.8414709848078965
        0.8975979010256552 0.9092974268256817
        1.3463968515384828 0.1411200080598672
        1.7951958020513104 -0.7568024953079282
        2.243994752564138 -0.9589242746631385
        2.6927937030769655 -0.27941549819892586
        3.141592653589793 0.6569865987187891
        3.5903916041026207 0.9893582466233818
        4.039190554615448 0.4121184852417566
        4.487989505128276 -0.5440211108893698
        4.9367884556411035 -0.9999902065507035
        5.385587406153931 -0.5365729180004349
        5.834386356666759 0.4201670368266409
        6.283185307179586 0.9906073556948704
        6.731984257692414 0.6502878401571168

        I separatori sono fatti con il TAB.

        Dimenticavo questo avviso di texmaker:

        Package pgfplots Warning: running in backwards compatibility mode (unsuitable tick labels; missing features). Consider writing \pgfplotsset{compat=1.7} into your preamble.

        Buon lavoro

        Stefano

      • #82960
        Up
        0
        Down
        ::


        Ciao Stefano,

        grazie della risposta! 🙂 Hai ragione il file txt prodotto da Mathematica con il mio codice viene accettato da [tt]pgfplots.[/tt] Il problema ora è un altro, e non credo che centri LaTeX. Il grafico che ottengo con questo codice Mathematica:
        `(*Numero di campioni*)
        nCamp = 155;
        (*Dominio*)
        xmin = 0; xMax = 2 \[Pi];
        (*Funzione*)
        y[x_] := Sin[x];

        xvec = xmin;
        For[i = 1, i < nCamp, i++, xvec = Flatten[{xvec, xmin + i (xMax - xmin)/(nCamp - 1)}]]; yvec = y[N[xvec[[1]]]]; For[i = 1, i < nCamp, i++, yvec = N[Flatten[{yvec, y[i]}]]]; xvec; yvec; If[FileExistsQ["C:\\grafico.txt"] == True, DeleteFile["C:\\grafico.txt"]] Export["C:\\grafico.txt", Transpose[{N[xvec], yvec}], "Table"]` e il correlato di LaTeX: `\documentclass[a4paper,11pt,extrafontsizes,twoside,openright]{memoir} \usepackage{etex} \usepackage{etoolbox} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage[italian]{babel} \usepackage{microtype} \usepackage{pgfplots} \begin{document} \begin{tikzpicture} \begin{axis} [xmin=-.5,xmax=7, ymin=-1.1,ymax=1.1, grid=major] \addplot [thick,blue] file {grafico.txt}; \end{axis} \end{tikzpicture} \end{document}` non è certo quello della funzione seno che voglio rappresentare. :( Grazie e buona giornata, Marco.

      • #82961
        Up
        0
        Down
        ::


        Ciao,

        credo proprio di aver risolto il problema. Con questo codice Mathematica:
        `(*Numero di campioni*)
        nCamp = 55;
        (*Dominio*)
        xmin = 0; xMax = 2 \[Pi];
        (*Funzione*)
        y[x_] := Sin[x];

        (*Tabelle*)
        xTable = Table[xmin, {n, 1, nCamp}];
        yTable = Table[y[xmin], {n, 1, nCamp}];

        Do[
        xTable[[n + 1]] = xTable[[n]] + (xMax – xmin)/(nCamp – 1.);
        yTable[[n + 1]] = y[xTable[[n + 1]]],
        {n, 1, nCamp – 1}]

        If[FileExistsQ[“C:\\grafico.txt”] ==
        True, DeleteFile[“C:\\grafico.txt”]]
        Export[“C:\\grafico.txt”,
        Transpose[{N[xTable], N[yTable]}], “Table”]`
        le cose funzionano. 😀

        Ciao e buona giornata,
        Marco.

    Visualizzazione 5 filoni di risposte
    • Devi essere connesso per rispondere a questo topic.

    Go to top