Sei sulla pagina 1di 111

Lezione 2: open-source scientico Alessio Cimarelli Programmazione

Librerie Compilatori Debugging

disponibile su magentawww.accatagliato.org

Lezione 2: open-source scientico


Seconda lezione del minicorso Open-source per sici

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alessio jenkin Cimarelli


jenkin@accatagliato.org

E tanto altro. . . gnuplot Conclusioni

19 novembre 2009

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Linguaggi
C, C++, fortran, python, shell, java, php, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Linguaggio compilato
Per linguaggio compilato si intende un linguaggio di programmazione che prevede la traduzione una tantum del codice sorgente, in genere un le di puro testo predisposto dal programmatore, in linguaggio macchina; la traduzione viene eseguita da un programma detto compilatore. Eseguita la traduzione in linguaggio macchina, si ottiene un le eseguibile.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Basic C, C++, D

Fortran Lisp Linguaggio interpretato

Cobol Pascal

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Un interprete ha lo scopo di eseguire un programma in un linguaggio di alto livello, senza la previa compilazione dello stesso. Esso, infatti, ha il compito di eseguire le istruzioni nel linguaggio usato, traducendole di volta in volta in istruzioni in linguaggio macchina. Lo scripting engine un motore che interpreta liste di comandi, dette script, formulati con una sintassi determinata, detta linguaggio di scripting.

E tanto altro. . . gnuplot Conclusioni

Perl Python

MATLAB Ruby

Java () Bash

Linguaggi
C, C++, fortran, python, shell, java, php, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Linguaggio compilato
Per linguaggio compilato si intende un linguaggio di programmazione che prevede la traduzione una tantum del codice sorgente, in genere un le di puro testo predisposto dal programmatore, in linguaggio macchina; la traduzione viene eseguita da un programma detto compilatore. Eseguita la traduzione in linguaggio macchina, si ottiene un le eseguibile.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Basic C, C++, D

Fortran Lisp Linguaggio interpretato

Cobol Pascal

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Un interprete ha lo scopo di eseguire un programma in un linguaggio di alto livello, senza la previa compilazione dello stesso. Esso, infatti, ha il compito di eseguire le istruzioni nel linguaggio usato, traducendole di volta in volta in istruzioni in linguaggio macchina. Lo scripting engine un motore che interpreta liste di comandi, dette script, formulati con una sintassi determinata, detta linguaggio di scripting.

E tanto altro. . . gnuplot Conclusioni

Perl Python

MATLAB Ruby

Java () Bash

Linguaggi
C, C++, fortran, python, shell, java, php, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Linguaggio compilato
Per linguaggio compilato si intende un linguaggio di programmazione che prevede la traduzione una tantum del codice sorgente, in genere un le di puro testo predisposto dal programmatore, in linguaggio macchina; la traduzione viene eseguita da un programma detto compilatore. Eseguita la traduzione in linguaggio macchina, si ottiene un le eseguibile.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Basic C, C++, D

Fortran Lisp Linguaggio interpretato

Cobol Pascal

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Un interprete ha lo scopo di eseguire un programma in un linguaggio di alto livello, senza la previa compilazione dello stesso. Esso, infatti, ha il compito di eseguire le istruzioni nel linguaggio usato, traducendole di volta in volta in istruzioni in linguaggio macchina. Lo scripting engine un motore che interpreta liste di comandi, dette script, formulati con una sintassi determinata, detta linguaggio di scripting.

E tanto altro. . . gnuplot Conclusioni

Perl Python

MATLAB Ruby

Java () Bash

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Librerie C / C++
gsl, cgal, cernlib, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Si programma sempre con uno scopo preciso ben a mente:


1 2 3 4 5 6

elaborare una strategia per giungere al risultato scomporla ed analizzarne tutti i passaggi necessari per ogni operazione elaborare un algoritmo semplice nel 99.99% dei casi il codice che serve stato gi scritto! cercare cercare cercare in Rete archiviare tutto ci che si scopre e inglobare pi librerie possibili da riutilizzare Qualche suggerimento
http://www.trumphurst.com/cpplibs1.html http://www.thefreecountry.com/sourcecode/cpp.shtml http://www.google.com/codesearch

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Librerie C / C++
gsl, cgal, cernlib, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Si programma sempre con uno scopo preciso ben a mente:


1 2 3 4 5 6

elaborare una strategia per giungere al risultato scomporla ed analizzarne tutti i passaggi necessari per ogni operazione elaborare un algoritmo semplice nel 99.99% dei casi il codice che serve stato gi scritto! cercare cercare cercare in Rete archiviare tutto ci che si scopre e inglobare pi librerie possibili da riutilizzare Qualche suggerimento
http://www.trumphurst.com/cpplibs1.html http://www.thefreecountry.com/sourcecode/cpp.shtml http://www.google.com/codesearch

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Compilatori
gcc, g++, g77, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Un compilatore un programma che traduce una serie di istruzioni scritte in un determinato linguaggio di programmazione (codice sorgente) in istruzioni di un altro linguaggio (codice oggetto). Questo processo di traduzione si chiama compilazione. Molti compilatori implementano il linguaggio in modo incompleto, o aggiungono estensioni proprietarie, creando in effetti dei dialetti di ciascun linguaggio. Per i linguaggi che adottano uno standard nella decorazione dei simboli, il codice oggetto generato da compilatori differenti pu essere linkato assieme in un unico eseguibile

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Compilatori C / C++: Clang (Apple), GCC/G++ (GNU), Open64 (Google & others), PathScale (SiCortex), TenDRA (TenDRA Project), . . .

Compilatori
GNU Make
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Makele, questo sconosciuto make una utility usata con i sistemi operativi della famiglia UNIX che automatizza il processo di conversione dei le da una forma ad unaltra, risolvendo le dipendenze e invocando programmi esterni per il lavoro necessario. Molto frequentemente usato per la compilazione di codice sorgente in codice oggetto, unendo e poi linkando il codice oggetto in eseguibili o in librerie. Esso usa le chiamati makeles per determinare il grafo delle dipendenze per un particolare output, e gli script necessari per la compilazione da passare alla shell. helloworld: helloworld.o cc -o $@ $< helloworld.o: helloworld.c cc -c -o $@ $< .PHONY: clean clean: -rm -f helloworld helloworld.o

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Debugging
a cura di Gianluca norman86 Malato
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

www.topolinux.org/ezine_articles.php?art_id=39

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Debugger GNU
By Gianluca norman86 Malato

Cos'undebugger? unprogrammachepermettedieseguireunaltroprogramma unarigadicodiceallavolta,permettendodicontrollaree modificareilvaloredellevariabiliinogniistante,conloscopo ditrovareerimuovereerrorinelfunzionamento. Nonsitrattadierroridisintassi(chevengonosegnalatidal compilatore),madierroridiprogrammazioneperiqualiil programmafadellecosediversedaquellecheavrebbevoluto ilprogrammatore. Trovareerimuovereglierroridiunprogrammaun'operazione chiamatadebugging

Debugger GNU
GDBl'acronimodiGNUDebugger.ildebuggerufficialedei sistemiLinux. Unapiccolaguidainitalianosulsuofunzionamentosiputrovare allapagina http://www.topolinux.org/ezine_articles.php?art_id=39 AffinchunprogrammainlinguaggioCsiacontrollabiledaGDB necessariocompilarloconl'opzioneg
gcc -g -o prog programma.c gcc -g -o prog programma.c

Peravviareildebuggersulprogrammaprog,digitaredaterminale

gdb prog gdb prog

Debugger GNU
Avviatoildebugger,laprimacosadafaredefinireun breakpoint,ovverounarigadicodiceounafunzioneallaquale l'esecuzionedelprogrammavainterrotta
(gdb) break main (gdb) break main (gdb) break 71 (gdb) break 71 (gdb) break programma.c:71 (gdb) break programma.c:71

Breakpointall'iniziodellafunzionemain Breakpointallariga71 Breakpointallariga71delfileprogramma.c

Definitiibreakpoint,siavviailprogrammacon
(gdb) run argomento1 argomento2 argomento3 (gdb) run argomento1 argomento2 argomento3

doveargomento1,argomento2eargomento3sonoparametri opzionalicheilprogrammapuriceveredallarigadicomando

Debugger GNU
Ildebuggereseguirilprogrammaesifermeralprimo breakpointcheincontradurantel'esecuzione.
(gdb) print variabile (gdb) print variabile (gdb) list (gdb) list

Mostrasulloschermoilvaloredivariabile

Mostraalcunerighedicodiceprimaedopolariga attuale Impostailvalorediunavariabile

(gdb) set var variabile=valore (gdb) set var variabile=valore (gdb) next (gdb) next (gdb) step (gdb) step

Passaallarigadicodicesuccessiva Passaallarigadicodicesuccessivaentrandonelcodice diunafunzioneseessachiamatanellarigaattuale Continual'esecuzionefinoalsuccessivobreakpoint Escedaldebugger

(gdb) continue (gdb) continue

(gdb) quit (gdb) quit

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Computazione simbolica
Da Mathematica a Sage
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Manipolazione simbolica nellambito dellalgebra, dellanalisi superiore, della teoria dei numeri, dei calcoli combinatori, . . . Software proprietari Mathematica Si tratta del pi famoso e versatile software per il calcolo sia simbolico che numerico, concepito originariamente da Stephen Wolfram nel 1988: 140$ per studenti. Maple Sviluppato dal 1980, ha funzionalit molto simili a Mathematica, anche se ha meno diffusione (merito del genio imprenditoriale di Wolfram): 99$ per studenti.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alternative open-source Axiom, Cadabra (algebra dei tensori, teoria dei campi), Cocoa (calcoli polinomiali), Jacal (manipolazione simbolica interattiva), JAS (algebra non-commutativa), Mathomatic (algebra elementare), Maxima, . . .

E tanto altro. . . gnuplot Conclusioni

Computazione simbolica
Da Mathematica a Sage
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Manipolazione simbolica nellambito dellalgebra, dellanalisi superiore, della teoria dei numeri, dei calcoli combinatori, . . . Software proprietari Mathematica Si tratta del pi famoso e versatile software per il calcolo sia simbolico che numerico, concepito originariamente da Stephen Wolfram nel 1988: 140$ per studenti. Maple Sviluppato dal 1980, ha funzionalit molto simili a Mathematica, anche se ha meno diffusione (merito del genio imprenditoriale di Wolfram): 99$ per studenti.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alternative open-source Axiom, Cadabra (algebra dei tensori, teoria dei campi), Cocoa (calcoli polinomiali), Jacal (manipolazione simbolica interattiva), JAS (algebra non-commutativa), Mathomatic (algebra elementare), Maxima, . . .

E tanto altro. . . gnuplot Conclusioni

Computazione simbolica
Da Mathematica a Sage
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Manipolazione simbolica nellambito dellalgebra, dellanalisi superiore, della teoria dei numeri, dei calcoli combinatori, . . . Software proprietari Mathematica Si tratta del pi famoso e versatile software per il calcolo sia simbolico che numerico, concepito originariamente da Stephen Wolfram nel 1988: 140$ per studenti. Maple Sviluppato dal 1980, ha funzionalit molto simili a Mathematica, anche se ha meno diffusione (merito del genio imprenditoriale di Wolfram): 99$ per studenti.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alternative open-source Axiom, Cadabra (algebra dei tensori, teoria dei campi), Cocoa (calcoli polinomiali), Jacal (manipolazione simbolica interattiva), JAS (algebra non-commutativa), Mathomatic (algebra elementare), Maxima, . . .

E tanto altro. . . gnuplot Conclusioni

Maxima
Il pi completo Computer Algebra System open-source
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1982 basandosi su un progetto del 1968, un sistema completo di algebra simbolica, ma possiede anche estese capacit di computazione numerica, anche con la possibilit di interfacciarsi con programmi esterni. Per la produzione di graci si appoggia a gnuplot. Come appare Linterfaccia di base da linea di comando (stile gnuplot), ma esiste una versatile interfaccia graca sviluppata mediante wxWidgets, molto simile a quella di Mathematica. Si scrivono le equazioni in formato standard, possibile visualizzarne un rendering, risolverle, manipolarle ed esportare A quanto occorre in codice LTEX.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Maxima
Il pi completo Computer Algebra System open-source
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1982 basandosi su un progetto del 1968, un sistema completo di algebra simbolica, ma possiede anche estese capacit di computazione numerica, anche con la possibilit di interfacciarsi con programmi esterni. Per la produzione di graci si appoggia a gnuplot. Come appare Linterfaccia di base da linea di comando (stile gnuplot), ma esiste una versatile interfaccia graca sviluppata mediante wxWidgets, molto simile a quella di Mathematica. Si scrivono le equazioni in formato standard, possibile visualizzarne un rendering, risolverle, manipolarle ed esportare A quanto occorre in codice LTEX.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sage
Un metaprogramma che li usi tutti
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Una losoa vincente La losoa con cui William Stein ha progettato Sage semplice e geniale: Scrivere da zero un sistema di computazione algebrica richiede migliaia di ore di lavoro Ci sono funzione e programmi di calcolo gi ben testati e funzionanti Quindi ha prodotto semplicemente uninterfaccia comune tra pi di 30 applicazioni open-source gi disponibili. Come appare Il linguaggio con cui scritto il versatilissimo Python, di cui richiesta la conoscenza per usare il software.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sage
Un metaprogramma che li usi tutti
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Una losoa vincente La losoa con cui William Stein ha progettato Sage semplice e geniale: Scrivere da zero un sistema di computazione algebrica richiede migliaia di ore di lavoro Ci sono funzione e programmi di calcolo gi ben testati e funzionanti Quindi ha prodotto semplicemente uninterfaccia comune tra pi di 30 applicazioni open-source gi disponibili. Come appare Il linguaggio con cui scritto il versatilissimo Python, di cui richiesta la conoscenza per usare il software.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Computazione numerica
Da Matlab a Octave
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari Matlab probabilmente il pi potente e diffuso software per il calcolo numerico, usato soprattutto nella modellizzazione e nellingegneria. lo standard de facto nellindustria ( 2400$, prezzo pieno). Il suo punto di forza senzaltro la manipolazione del calcolo matriciale complesso. Il linguaggio di programmazione che ne alla base ad oggetti. Alternative open-source GNU Octave, FreeMat, Scilab, Monkey Analytics (web interface), Python libraries, . . . ??? Incredibilmente ha fatto piazza pulita, non ci sono software proprietari analoghi, che almeno si avvicinino al suo livello.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Computazione numerica
Da Matlab a Octave
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari Matlab probabilmente il pi potente e diffuso software per il calcolo numerico, usato soprattutto nella modellizzazione e nellingegneria. lo standard de facto nellindustria ( 2400$, prezzo pieno). Il suo punto di forza senzaltro la manipolazione del calcolo matriciale complesso. Il linguaggio di programmazione che ne alla base ad oggetti. Alternative open-source GNU Octave, FreeMat, Scilab, Monkey Analytics (web interface), Python libraries, . . . ??? Incredibilmente ha fatto piazza pulita, non ci sono software proprietari analoghi, che almeno si avvicinino al suo livello.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

GNU Octave
Computazione numerica compatibile con MATLAB sotto GPL
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1992 con in mente la necessit di rendere il linguaggio il pi possibile compatibile con quello di MATLAB, ormai un prodotto maturo, molto ben supportato, con un numero di estensioni e librerie aggiuntive impressionante, tanto che comincia ad essere usato ufcialmente anche in alcuni ambiti accademici e industriali. Come appare Linterfaccia graca sostanzialmente una cornice al terminale. Si usa un linguaggio molto vicino a C (non ad oggetti), tanto che possibile interfacciarsi con librerie C esterne. In molti aspetti simile a quello di MATLAB e con poche modiche lo si pu trasportare dalluno allaltro. Si appoggia a gnuplot e Grace per la produzione dei graci.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

GNU Octave
Computazione numerica compatibile con MATLAB sotto GPL
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1992 con in mente la necessit di rendere il linguaggio il pi possibile compatibile con quello di MATLAB, ormai un prodotto maturo, molto ben supportato, con un numero di estensioni e librerie aggiuntive impressionante, tanto che comincia ad essere usato ufcialmente anche in alcuni ambiti accademici e industriali. Come appare Linterfaccia graca sostanzialmente una cornice al terminale. Si usa un linguaggio molto vicino a C (non ad oggetti), tanto che possibile interfacciarsi con librerie C esterne. In molti aspetti simile a quello di MATLAB e con poche modiche lo si pu trasportare dalluno allaltro. Si appoggia a gnuplot e Grace per la produzione dei graci.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

SciLab
Computazione numerica che parla francese
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1990, si tratta di un linguaggio di programmazione di alto livello, fortemente orientato alla manipolazione di oggetti complessi come vettori e matrici. I suoi punti di forza sono lanalisi di segnale, lanalisi statistica, le simulazioni di uidodinamica, lottimizzazione numerica. Le estensioni Il punto di forza di Scilab, cos come di tutti i software open-source, lestensibilit innita grazie a moduli prodotti dalla comunit di utenti avanzati. Ad esempio SciCos, che permette di simulare facilmente sistemi dinamici impliciti ed espliciti, continui e discreti.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

SciLab
Computazione numerica che parla francese
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Sviluppato dal 1990, si tratta di un linguaggio di programmazione di alto livello, fortemente orientato alla manipolazione di oggetti complessi come vettori e matrici. I suoi punti di forza sono lanalisi di segnale, lanalisi statistica, le simulazioni di uidodinamica, lottimizzazione numerica. Le estensioni Il punto di forza di Scilab, cos come di tutti i software open-source, lestensibilit innita grazie a moduli prodotti dalla comunit di utenti avanzati. Ad esempio SciCos, che permette di simulare facilmente sistemi dinamici impliciti ed espliciti, continui e discreti.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

ROOT
Dal CERN con passione. . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta di un mastodontico e valido software per lanalisi dati, lanalisi statistica e il data mining, sviluppato al CERN dal 1994. Sostanzialmente si tratta di una collezione di librerie in Fortran e C++ sviluppata specicatamente per la sica delle alte energie, ma applicabile anche in altri campi. Come appare Da linea di comando, la sintassi sostanzialmente quella del C++. In ambiti accademici si usa per lo pi in remoto. lo standard per quanto riguarda lanalisi degli eventi a LHC.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

ROOT
Dal CERN con passione. . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta di un mastodontico e valido software per lanalisi dati, lanalisi statistica e il data mining, sviluppato al CERN dal 1994. Sostanzialmente si tratta di una collezione di librerie in Fortran e C++ sviluppata specicatamente per la sica delle alte energie, ma applicabile anche in altri campi. Come appare Da linea di comando, la sintassi sostanzialmente quella del C++. In ambiti accademici si usa per lo pi in remoto. lo standard per quanto riguarda lanalisi degli eventi a LHC.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Analisi statistica
Da SPSS a R
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari SPSS Ai vertici dellanalisi statistica professionale dal 1968 (oggi dellIBM), il punto di riferimento per tutto lambito delle scienze sociali. Ha un enorme numero di strumenti per lanalisi descrittiva, la statistica bivariata, le regressioni lineari, lanalisi per gruppi. STATISTICA Concorrenza della StatSoft, fa praticamente le stesse cose di SPSS: grosso modo stessi strumenti, simile la possibilit di espanderne le capacit comprando appositi plug-in.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Alternative open-source Ce ne sono davvero molte, ma si distinguono GNU gretl, PSPP e linarrivabile R.

Analisi statistica
Da SPSS a R
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari SPSS Ai vertici dellanalisi statistica professionale dal 1968 (oggi dellIBM), il punto di riferimento per tutto lambito delle scienze sociali. Ha un enorme numero di strumenti per lanalisi descrittiva, la statistica bivariata, le regressioni lineari, lanalisi per gruppi. STATISTICA Concorrenza della StatSoft, fa praticamente le stesse cose di SPSS: grosso modo stessi strumenti, simile la possibilit di espanderne le capacit comprando appositi plug-in.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Alternative open-source Ce ne sono davvero molte, ma si distinguono GNU gretl, PSPP e linarrivabile R.

gretl
Gnu Regression, Econometrics and Time-series Library
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos specicatamente dedicato alleconometria, tanto da vantare vari articoli nelle riviste specialistiche del settore. corredato di interfaccia graca e si pu afancare ad R ed a gnuplot per i graci. Come appare Linterfaccia molto scarna e richiede il caricamento di un le di dati. Ci sono molti esempi da cui partire e saltano subito agli occhi le numerosissime funzioni di analisi disponibili.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

gretl
Gnu Regression, Econometrics and Time-series Library
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos specicatamente dedicato alleconometria, tanto da vantare vari articoli nelle riviste specialistiche del settore. corredato di interfaccia graca e si pu afancare ad R ed a gnuplot per i graci. Come appare Linterfaccia molto scarna e richiede il caricamento di un le di dati. Ci sono molti esempi da cui partire e saltano subito agli occhi le numerosissime funzioni di analisi disponibili.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

PSPP
Equivalente open-source di SPSS
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos un clone di SPSS, che si appoggia sulle GSL per i calcoli matematici e statistici. Permette di importare i dati in un gran numero di formati e di gestire anche il formato nativo di SPSS. Non per senzaltro allaltezza del fratellastro maggiore, avendo molte meno funzioni ed essendo ancora un poco troppo instabile per un uso intensivo. Come appare Linterfaccia graca molto simile a quella di SPSS, ma aprendo i menu di analisi la differenza netta: chilometrici i secondi, molto scarni i primi. Ma gi un buon software per lanalisi statistica di base.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

PSPP
Equivalente open-source di SPSS
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos un clone di SPSS, che si appoggia sulle GSL per i calcoli matematici e statistici. Permette di importare i dati in un gran numero di formati e di gestire anche il formato nativo di SPSS. Non per senzaltro allaltezza del fratellastro maggiore, avendo molte meno funzioni ed essendo ancora un poco troppo instabile per un uso intensivo. Come appare Linterfaccia graca molto simile a quella di SPSS, ma aprendo i menu di analisi la differenza netta: chilometrici i secondi, molto scarni i primi. Ma gi un buon software per lanalisi statistica di base.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

R
Un linguaggio di programmazione per lanalisi statistica
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos un linguaggio di programmazione vero e proprio e di fatto lo standard per chi sviluppa software statistici o fa analisi dati di questo tipo. estremamente potente e versatile, viene afancato da numerosissimi pacchetti ed estensioni (a cui si pu accedere automaticamente attraverso i mirror CRAN) ed ha anche eccellenti capacit di plotting. Come appare R un software da linea di comando, ma diversi progetti forniscono dei front-end graci (ad es. gretl e Sage). Esiste poi R-commander, che fornisce una nestra sobria in cui lunico vantaggio avere comandi e risultati separati in due box.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

R
Un linguaggio di programmazione per lanalisi statistica
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos un linguaggio di programmazione vero e proprio e di fatto lo standard per chi sviluppa software statistici o fa analisi dati di questo tipo. estremamente potente e versatile, viene afancato da numerosissimi pacchetti ed estensioni (a cui si pu accedere automaticamente attraverso i mirror CRAN) ed ha anche eccellenti capacit di plotting. Come appare R un software da linea di comando, ma diversi progetti forniscono dei front-end graci (ad es. gretl e Sage). Esiste poi R-commander, che fornisce una nestra sobria in cui lunico vantaggio avere comandi e risultati separati in due box.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Simulazione di circuiti
Da PSPICE a gEDA
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

SPICE: Simulation Program with Integrated Circuit Emphasis Si tratta dello standard per quanto riguarda la simulazione di circuiti elettronici analogici (non solo disegno architetturale, ma simulazione vera e propria). utilizzato a livello industriale per vericare il comportamento dei circuiti prima che vengano messi in produzione. Software proprietari PSpice Si tratta di un simulatore di circuiti analogici e digitali che si appoggia a Spice e gira su normali personal computer, dal 1984. Usato anche nei nostri laboratori. Alternative open-source
Esistono due tipologia di software per circuiti: EDA (Electronic design automation) per disegnarli e i simulatori come Spice. Nel primo caso troviamo gEDA, nel secondo ngSpice.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

??? Praticamente nessuna concorrenza proprietaria. . .

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Simulazione di circuiti
Da PSPICE a gEDA
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

SPICE: Simulation Program with Integrated Circuit Emphasis Si tratta dello standard per quanto riguarda la simulazione di circuiti elettronici analogici (non solo disegno architetturale, ma simulazione vera e propria). utilizzato a livello industriale per vericare il comportamento dei circuiti prima che vengano messi in produzione. Software proprietari PSpice Si tratta di un simulatore di circuiti analogici e digitali che si appoggia a Spice e gira su normali personal computer, dal 1984. Usato anche nei nostri laboratori. Alternative open-source
Esistono due tipologia di software per circuiti: EDA (Electronic design automation) per disegnarli e i simulatori come Spice. Nel primo caso troviamo gEDA, nel secondo ngSpice.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

??? Praticamente nessuna concorrenza proprietaria. . .

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Simulazione di circuiti
Da PSPICE a gEDA
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

SPICE: Simulation Program with Integrated Circuit Emphasis Si tratta dello standard per quanto riguarda la simulazione di circuiti elettronici analogici (non solo disegno architetturale, ma simulazione vera e propria). utilizzato a livello industriale per vericare il comportamento dei circuiti prima che vengano messi in produzione. Software proprietari PSpice Si tratta di un simulatore di circuiti analogici e digitali che si appoggia a Spice e gira su normali personal computer, dal 1984. Usato anche nei nostri laboratori. Alternative open-source
Esistono due tipologia di software per circuiti: EDA (Electronic design automation) per disegnarli e i simulatori come Spice. Nel primo caso troviamo gEDA, nel secondo ngSpice.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

??? Praticamente nessuna concorrenza proprietaria. . .

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

gEDA
GPL Electronic Design Automation
Lezione 2: open-source scientico Alessio Cimarelli

Cos
Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Si tratta di uno strumento molto potente per lECAD (Electronic CAD), dal 1998. Il progetto sviluppa diversi strumenti che si integrano perfettamente, oltre che una lista molto estesa di librerie aggiuntive. Come appare Linterfaccia graca sobria e funzionale, il disegno del circuito viene fatto con il drag n drop e la gestione dei collegamenti tra i vari elementi intelligente.

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

gEDA
GPL Electronic Design Automation
Lezione 2: open-source scientico Alessio Cimarelli

Cos
Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Si tratta di uno strumento molto potente per lECAD (Electronic CAD), dal 1998. Il progetto sviluppa diversi strumenti che si integrano perfettamente, oltre che una lista molto estesa di librerie aggiuntive. Come appare Linterfaccia graca sobria e funzionale, il disegno del circuito viene fatto con il drag n drop e la gestione dei collegamenti tra i vari elementi intelligente.

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Ng-Spice
Lunione fa la forza
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Integra in un unica interfaccia tre programmi: Spice, Cider e Xspice. In questo modo la precisione della simulazione altissima (a fronte naturalmente di un aumento del tempo macchina). Come appare Anche in questo caso linterfaccia graca sobria, permette di costruire la struttura logica del circuito e poi lanciare la simulazione.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Ng-Spice
Lunione fa la forza
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Integra in un unica interfaccia tre programmi: Spice, Cider e Xspice. In questo modo la precisione della simulazione altissima (a fronte naturalmente di un aumento del tempo macchina). Come appare Anche in questo caso linterfaccia graca sobria, permette di costruire la struttura logica del circuito e poi lanciare la simulazione.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Analisi dati
Da Origin a QtiPlot
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari Excel Non c molto da dire, forse nel primissimo laboratorio qualche matricola ha ancora la malsana idea di usare Excel per fare un t lineare... sic! Origin il punto di riferimento accademico per lanalisi dati: potentissimo motore di t non-lineari, uninnit di strumenti di analisi, supporto per i graci 2D e 3D. Molto usato anche nel nostro dipartimento, nonostante il prezzo: 50$ per studenti, solo in USA o Canada.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alternative open-source QtiPlot, LabPlot, SigmaPlot (win), gnuplot, PAW (cern), MagicPlot (java), sciGraphica, . . .

E tanto altro. . . gnuplot Conclusioni

Analisi dati
Da Origin a QtiPlot
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Software proprietari Excel Non c molto da dire, forse nel primissimo laboratorio qualche matricola ha ancora la malsana idea di usare Excel per fare un t lineare... sic! Origin il punto di riferimento accademico per lanalisi dati: potentissimo motore di t non-lineari, uninnit di strumenti di analisi, supporto per i graci 2D e 3D. Molto usato anche nel nostro dipartimento, nonostante il prezzo: 50$ per studenti, solo in USA o Canada.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Alternative open-source QtiPlot, LabPlot, SigmaPlot (win), gnuplot, PAW (cern), MagicPlot (java), sciGraphica, . . .

E tanto altro. . . gnuplot Conclusioni

LabPlot e sciGraphica
Due tentativi di inseguire Origin
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

LabPlot Ispirato chiaramente ad Origin, si interfaccia con le principali librerie di calcolo numerico (GSL, Qwt3d, OpenGL, FFTW, . . . ) ed molto essibile. Produce graci adatti alla pubblicazione, ma non risulta superlativo nellambito del tting. sciGraphica Si tratta di un altro clone di Origin, ma il suo sviluppo rimasto molto indietro e le sue capacit sono ancora scarse rispetto alloriginale.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Qtiplot
LOrigin del pinguino
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta del tentativo di sviluppare una valida alternativa open-source a Origin, a mio avviso molto promettente e gi pienamente usabile. Produce graci di ottima qualit, gi adatti alla pubblicazione su rivista. Come appare Linterfaccia graca identica a quella di Origin, cos come le nestre dei dati. Chi gi usa Origin non avr problemi ad ambientarsi e a meno di utilizzi estremi, ritrover tutte le funzioni utili, in un sistema molto pi stabile e razionale di Origin. Le funzioni modello per i t non sono molte, ma possono essere estese denendone di nuove (il wizard molto intuitivo) oppure caricando plug-in esterni.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Qtiplot
LOrigin del pinguino
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta del tentativo di sviluppare una valida alternativa open-source a Origin, a mio avviso molto promettente e gi pienamente usabile. Produce graci di ottima qualit, gi adatti alla pubblicazione su rivista. Come appare Linterfaccia graca identica a quella di Origin, cos come le nestre dei dati. Chi gi usa Origin non avr problemi ad ambientarsi e a meno di utilizzi estremi, ritrover tutte le funzioni utili, in un sistema molto pi stabile e razionale di Origin. Le funzioni modello per i t non sono molte, ma possono essere estese denendone di nuove (il wizard molto intuitivo) oppure caricando plug-in esterni.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Sommario
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Programmazione Librerie Compilatori Debugging Computazione simbolica e numerica Computazione simbolica Computazione numerica Analisi statistica Simulazione di circuiti Analisi dati e plotting Analisi dati Plotting (and reverse) E tanto altro. . . gnuplot Conclusioni

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

3 4 5

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

6 7 8

Plotting
Larte di analizzare guardando...
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Capire e far capire In qualsiasi ambito di analisi dati, uno degli strumenti pi potenti per capire cosa si sta facendo guardare i dati negli occhi. Mostrare su graco i dati, grezzi o elaborati, quindi unoperazione importante e delicata, tra laltro necessaria una volta che ci si mette al lavoro su una futura pubblicazione. La chiarezza e lusabilit dei graci sono caratteristiche fondamentali.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Grace
GRaphing, Advanced Computation and Exploration of data
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta di uno dei migliori plotter 2D su Linux. molto usato in ambito accademico per preparare le illustrazioni per le pubblicazioni ufciali, ma possiede anche avanzati strumenti di analisi, come t non-lineari, deconvoluzioni, trasformazioni di Fourier e smoothing. Come appare Linterfaccia graca ricchissima, ma ben organizzata: a differenza di tanti altri casi Grace maggiormente utilizzabile mediante questa rispetto alla linea di comando. inoltre utilizzata spesso da altri software proprio per le funzioni di plotting (ad es. GNU Octave).

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Grace
GRaphing, Advanced Computation and Exploration of data
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Si tratta di uno dei migliori plotter 2D su Linux. molto usato in ambito accademico per preparare le illustrazioni per le pubblicazioni ufciali, ma possiede anche avanzati strumenti di analisi, come t non-lineari, deconvoluzioni, trasformazioni di Fourier e smoothing. Come appare Linterfaccia graca ricchissima, ma ben organizzata: a differenza di tanti altri casi Grace maggiormente utilizzabile mediante questa rispetto alla linea di comando. inoltre utilizzata spesso da altri software proprio per le funzioni di plotting (ad es. GNU Octave).

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Aviz
Atomistic Simulation Vizualization software
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Gracare aggregati discreti tridimensionali tra le cose pi difcili, soprattutto per evidenziare informazioni utili per unanalisi esplicita. Aviz permette di visualizzare facilmente strutture atomiche e soprattutto spin-glass, anche dinamicamente durante una simulazione. Permette di colorare interattivamente gli elementi, in base a parametri passati nel le che contiene la descrizione della struttura. Come appare Linterfaccia graca molto scarna, ma la nestra di navigazione molto funzionale (anche se poco intuitiva allinizio) e il rendering piuttosto veloce.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Aviz
Atomistic Simulation Vizualization software
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Gracare aggregati discreti tridimensionali tra le cose pi difcili, soprattutto per evidenziare informazioni utili per unanalisi esplicita. Aviz permette di visualizzare facilmente strutture atomiche e soprattutto spin-glass, anche dinamicamente durante una simulazione. Permette di colorare interattivamente gli elementi, in base a parametri passati nel le che contiene la descrizione della struttura. Come appare Linterfaccia graca molto scarna, ma la nestra di navigazione molto funzionale (anche se poco intuitiva allinizio) e il rendering piuttosto veloce.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

g3data
Ricavare i dati dai graci pubblicati
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Ecco un software inatteso e utilissimo. Quante volte avete trovato in un articolo graci di dati... senza dati? Per esempio spettri? g3data permette di splottare il graco, ricavando dallimmagine i dati originali con un certo errore associato (sostanzialmente dovuto alla risoluzione dellimmagine). Come appare Linterfaccia graca molto semplice: si carica limmagine, si ssa lorigine degli assi e la scala di misura e il programma ricava le coordinate dei punti sul graco, fornendo una tabella dei dati.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

g3data
Ricavare i dati dai graci pubblicati
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Cos Ecco un software inatteso e utilissimo. Quante volte avete trovato in un articolo graci di dati... senza dati? Per esempio spettri? g3data permette di splottare il graco, ricavando dallimmagine i dati originali con un certo errore associato (sostanzialmente dovuto alla risoluzione dellimmagine). Come appare Linterfaccia graca molto semplice: si carica limmagine, si ssa lorigine degli assi e la scala di misura e il programma ricava le coordinate dei punti sul graco, fornendo una tabella dei dati.

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Altri software utili


Celestia, Boinc, . . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Celestia un fenomenale space simulator che permette di volare attraverso la nostra Galassia ed oltre, esplorando un numero incalcolabile di oggetti ricavati dai principali cataloghi astronomici. Richiede naturalmente una buona scheda video. La NASA e lESA usano Celestia nei loro programmi educativi o nelle mostre, e risulta molto utile anche come interfaccia graca per il programmi di analisi delle traiettorie. Si tratta dellinfrastruttura sviluppata a Berkeley per la computazione parallela e distribuita. Si tratta sostanzialmente di un piccolo programma locale che comunica con server remoti, scarica sul computer dati da analizzare e sfrutta i tempi morti della CPU per portare avanti analisi molto complesse, affrontabili solo con il calcolo distribuito. Il progetto pi famoso senzaltro SETI@home, ma ce ne sono decine attivi al momento.

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

GNUplot
Tanto bello quanto potente. . .
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Larte del gracare dati Curiosamente non distribuito sotto licensa GPL, ma ne ha una propria, che protegge il codice sorgente dalle modiche, ma permette di distribuirlo gratuitamente. probabilmente il pi potente strumento di plotting esistente, oltre a possedere una routine di tting superlativa. Tra i suoi punti di forza, la capacit di gestire un numero enorme di formati in ingresso e uscita e lintegrazione stretta con la shell di Linux. Interfaccia solo mediante linea di comando.

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

GianlucaMalato gianluca.malato@gmail.com

Introduzione a gnuplot

Novembre2009

Cos' gnuplot? Dove si pu trovare?


gnuplotunsoftwareperlacreazionedigrafici.utilizzabile conWindows,LinuxeMacOS. disponibileildownloadgratuitodalsito

http://www.gnuplot.info gnuplotunprogrammachelavoradallarigadicomando,quindi nonhaun'interfacciagrafica

Come installare gnuplot?


Visitarelapagina http://sourceforge.net/projects/gnuplot/files/ scaricarelaversioneperilpropriosistemaoperativo eseguireleistruzioniperl'installazionecontenutenel fileINSTALLall'internodell'archiviozip corrispondente

SuUbuntu/Debian SuFedora/Redhat

# apt-get install gnuplot # yum install gnuplot

Come avviare gnuplot?

SuLinuxoMacOS Avviareunasessionedelterminaleedigitare: gnuplot SuWindows Posizionarsinellacartelladoveinstallatognuplot efaredoppioclicsulfilewgnuplot.exe

Una finestra di gnuplot (su Linux)

Realizzare i grafici
plot cos(x)

Realizzare i grafici
Ilcomandoplotammettediverseopzioni
plot cos(x) with linespoints \ pointtype 3 \ linecolor rgbcolor 'blue' \ title 'Funzione coseno'

Realizzare i grafici
possibileabbreviareicomandidignuplot
plot cos(x) with linespoints \ pointtype 3 \ linecolor rgbcolor 'blue' \ title 'Funzione coseno'

plot cos(x) w lp pt 3 lc rgb 'blue' t 'Funzione coseno'

Realizzare i grafici
Pigraficisovrapposti
plot cos(x), sin(x) plot cos(x) replot sin(x)

Realizzare i grafici
Spostarelalegenda
set key left set key right set key below set key at 0,0 unset key

Legendaasinistra Legendaadestra Legendasottol'assedelleascisse Legendanelpunto(0,0) Rimuoverelalegenda

Realizzare i grafici
Tacchesugliassi
set xtics 1 set xtics 0.5

Letacchevengonospaziatedi1 Letacchevengonospaziatedi0.5

Realizzare i grafici
Impostareleetichettesugliassieiltitolodelgrafico
set set set set set xlabel 'Asse delle ascisse (in basso)' ylabel 'Asse delle ordinate (a sinistra)' x2label 'Asse delle ascisse (in alto)' y2label 'Asse delle ordinate (a destra)' title 'Titolo del grafico'

Realizzare i grafici
Impostareilrangedivariazionedeivalorisugliassi
set xrange [0:2*pi] set yr [-1:1] plot [0:2*pi] [-1:1] (cos(x)+sin(x))/2

Realizzare i grafici
Scaladoppiologaritmica
set log xy

Scalalogaritmicainbasenaturale
set log y exp(1)

Perritornareallascalalineare
unset log x

Realizzare i grafici
Etichettesullascala
set format x "%.2e" set format y "%1.t * 10^%T" set log y plot [1:5] exp(x)

Perinformazioni...
help set format specifiers

Realizzare i grafici
Mostrareilcontenutodiunfile
plot 'file.dat' using 1:2:3 with yerrorbars plot 'file.dat' u 1:3:(abs($5-$3)/$5) w ye

Realizzare i grafici
Seilfilecompostodablocchiseparatida2righevuote file.dat
1 4.5 2 6.3 3 5.7 1 6.4 2 4.7 3 1.4 ... ... plot 'file.dat' index 0:4:2

Verrannomostratiidatideiblocchidal primoalquintosaltandoiblocchidi dueindue Notarechegliindicipartonoda0 Esempi


plot 'file.dat' index 4 plot 'file.dat' index 4:9

Realizzare i grafici
possibileutilizzarel'outputdiuncomandocomesorgentedi datidamostrare
plot '< comando'

file.dat MostraresoltantoidatietichettaticonParticella1
plot '< grep Particella1 file.dat' u 2:3 Particella1 Particella1 Particella2 Particella1 Particella2 Particella2 1 2 3 1 2 3 4.5 6.3 5.7 6.4 4.7 1.4

Realizzare i grafici
Istogrammi
plot 'hist.dat' w boxes

Realizzare i grafici
Campivettoriali
plot 'griglia.dat' w vec

Ilfile'griglia.dat'devecontenerelecoordinatedeipuntinei qualicalcolareilcampo
r(x,y) = sqrt(x**2+y**2) epsilon = 1 q = 3 Ex(x,y)=(r(x,y)>=epsilon) ? q*x/r(x,y)**3 : 0.0 Ey(x,y)=(r(x,y)>=epsilon) ? q*y/r(x,y)**3 : 0.0 plot 'griglia.dat' u 1:2:(Ex($1,$2)):(Ey($1,$2)) w vec

8 q > r < j~j3 ~ r ~ r) = E(~ > : 0

se se

j~j r j~j < r

serve per evitare di mostrare freccetroppograndiacausadella divergenzadelcampoin(0,0)

Realizzare i grafici

Realizzare i grafici
Inseriredeltesto
set label 3 Testo at 0.4,0.9 right

Numero univocoche identifica l'etichetta

Testoda visualizzare

Coordinatedi unpunto diriferimento

Allineamento rispettoalpunto

Questocomandocreaunanuovaetichettaoaggiornal'etichetta contrassegnataconilnumeroscelto. Pereliminareun'etichetta

unset label 3

L'etichettaditestoverrmostrata,aggiornataorimossaconil successivocomandodiplot(oreplot)

Realizzare i grafici
Inserirefrecce
set arrow 3 from 0.5,0.6 to 0.4,1.7

Numero univocoche identificala freccia

Coordinatedel Coordinatedel puntofinale puntodi partenza

Comeperleetichetteditesto,questocomandocreaunanuova frecciaoaggiornalafrecciacontrassegnataconilnumeroscelto. Pereliminarelafreccia

unset arrow 3

Lafrecciaverrmostrata,aggiornataorimossaconilsuccessivo comandodiplot(oreplot)

Realizzare i grafici

set xlabel "T" set ylabel "M" set label 1 "T_c = 2.269185" at 1.46377,0.21 set arrow 1 from 1.88123,0.170785 to 2.26919,0 plot [0:3] [0:1.2] 'ising2d.dat' w l notitle

Realizzare i grafici
Perleggerelaguidariguardanteunparticolarecomando,sipu usarelafunzionehelp
help plot

Realizzare i grafici
Grafici3D
splot x**2+y**y

Gliargomentidisplotsonoglistessidiplot

Realizzare i grafici
Infittireilcampionamento
set isosamples 30,30

Realizzare i grafici
Mostrarelecurvedilivello
set contour base

Realizzare i grafici
Colorarelesuperfici
set pm3d

Realizzare i grafici
Eliminarelagrigliadicampionamento
set hidden3d set pm3d

Salvare i grafici
gnuplotpermettedisalvareigraficicreatiusandoilcomando
save 'miografico.gp'

Ilrisultatounfileditestoformattatochecontieneicomandi necessariagnuplotperriprodurrel'ultimograficocreato. Perripristinareilgraficosiusailcomando

load 'miografico.gp'

Salvare i grafici
gnuplotpermettedisalvareigraficiancheinvariformatidi immagine Jpeg Postscript EPS PNG GIF(ancheanimate) EMF

Ilpiusatoperle pubblicazioni scientifiche

...

Salvare i grafici
Ilcomandoset terminalspecificailtipodioutput.Ilcomando set out direzionailplotsuunfileanzichsulloschermo.
set terminal postscript color eps set out 'coseno.eps' plot cos(x) set out

L'ultimocomandoset outnecessarioperconcludere ilsalvataggiodelfile. Perritornareavisualizzareilplotsulloschermo: Linux


set term x11

MacWindows
set term aqua set term windows

Perulterioriinformazioni:
help set terminal

Salvare i grafici
Apici,pediciesimbolispeciali:opzioneenhanced
set terminal postscript color eps enhanced set out 'x_quadro.eps' plot x**2 title x^2 set out

Moltiterminalisupportanol'opzioneenhanced,tracuipostscript

Salvare i grafici
Tuttiicomandisipossonotrovarenelfileps_guide.ps, reperibileinreteonell'archiviodiinstallazionedeisorgentidi gnuplot

e^x A_{ij} P={/Symbol r}kT {/Symbol a \261 Da} {/Symbol \341{/Times-Roman a}\361} |T-T_c|^{/Symbol -g}

ex Aij P = kT a a hai jT Tc j

Salvare i grafici
Terminaleepslatex.L'immaginevienesalvatainun formatoimportabileinLaTeXcheneereditaleproprietdi formattazionematematica
set terminal epslatex color set out 'sinquadro.tex' plot sin(x)**2 title "\\sin^2 x$ set out

\usepackage{graphicx} \begin{document} ... \input{prova.tex} ... \end{document}


Salvare i grafici

gnuplot e i fit
gnuplotpermettedieseguirefitdeiminimiquadrati

f (xj~ ) a ~ = (a1 ; a2 ; : : : ; an ) a a1 ; a2 ; : : : ; an sonoiparametridellafunzione

yi xi Siadatouninsiemedicon xi ; yi ; i yi xi
Eseguireunfitdeiminimiquadraticonsisteneltrovareilsetdi parametricherendeminimalafunzione

2 =

Essaunavariabiledelchiquadrocongradidilibert. N n

N X yi f (xi j~ ) 2 a i=1

gnuplot e i fit
Tipicamente,pertrovareilminimodel,sicercanoivaloridei 2 parametricheneannullanolederivateparzialiechecorrispondono aminimirelativi(studiandoquindilamatricehessiana). Incasodipiminimi,sisceglieilminimoassoluto

@2 =0 @ai
Percurvesemplici(funzionilineari,polinomialioriconducibili aqueste),ilproblemahaunasoluzioneanalitica. Intuttiglialtricasi,bisognausarealgoritmidiminimizzazione numerica.

gnuplot e i fit
gnuplotusaunalgoritmodiminimizzazionenumericanotocome algoritmodiLevenbergMarquardt Essocercailminimodelchiquadropartendodaunpunto qualsiasinellospaziodeiparametri,fermandosiquandoviene raggiuntaunasogliaditolleranza,ovveroquandoilchiquadro noncambiatroppotradueiterazionisuccessive. ATTENZIONE:l'algoritmotrovailminimodelchiquadropi vicinoalpuntodipartenza. Seilminimononassoluto,ilrisultatosbagliato!

gnuplot e i fit
Esempiodifitcongnuplot Siadatounfiledidatidinomedati.dat,contenentenumeridisposti in3colonne:ascissa,ordinataeerrorestatisticosull'ordinata.
f(x) = a*x + b fit f(x) 'dati.dat' u 1:2:3 via a,b plot 'dati.dat' u 1:2:3 w ye, f(x)

possibilespecificarel'insiemedeipuntisuiqualieseguireilfit
fit [1.5:3.4] [0.5:4.9] f(x) 'dati.dat' u 1:2:3 via a,b

gnuplot e i fit
beneinizializzaresempreiparametridelfitavaloriragionevoli
a = 4.9 b = pi f(x) = a*x + b fit f(x) 'dati.dat' u 2:3:5 via a,b plot 'dati.dat' u 2:3:5 w ye, f(x)

LatolleranzasipuimpostaretramitelavariabileFIT_LIMIT.
FIT_LIMIT = 1e-4

2 Alpasso,l'algoritmoproduceuncertovaloreesiarrestaquando n n

j2 2 j FIT_LIMIT n n1

gnuplot e i fit
Glierrorisuiparametrivengonotrovatiusandoilcomando
set fit errorvariables

Unavoltatrovatoilchiquadrominimo,gnuplottroval'errore suiparametririsolvendonumericamente(unparametroallavolta) l'equazione

2 (a ) = 2 + 1 min
a = ja a j Sipudimostrarechelaquantitrappresenta unastimapereccessodell'erroresulparametro a

gnuplot e i fit

Regolegeneralipereseguireunbuonfit
1. Impostarelaprecisione(FIT_LIMIT) 2. Inizializzareiparametri 3. Usareilcomandoset fit errorvariablesperunamigliore stimadeglierrorisuiparametri
FIT_LIMIT = 1e-6 f(x) = a*x + b a = 1.0 b = 4.5 set fit err fit [1.5:6.4] f(x) 'dati.dat' u 2:3:5 via a,b plot 'dati.dat' u 2:3:5 w ye, f(x) print a,a_err print b,b_err

La prossima volta...
A Mondo LTEX!
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

A Lezione numero 3: il meraviglioso pianeta LTEX Filosoa, utilit e regole di composizione Cenni sul funzionamento: classi e pacchetti Editor (Kyle,TexMaker, ..., Lyx) Guide e manuali (CTAN) Tesi, tesine, dissertazioni e articoli

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

Classi e pacchetti utili (CTAN) Utilizzo di base Matematica Immagini e graci Compilazione: latex e pdfLatex Errori e debugging

Bibliograa con bibtex Presentazioni con Beamer


Regole generali Uso di base: stili e temi Transizioni Opzioni avanzate

E tanto altro. . . gnuplot Conclusioni

Fine
TUX vi ringrazia!
Lezione 2: open-source scientico Alessio Cimarelli Programmazione
Librerie Compilatori Debugging

TUX vi ringrazia!

Computazione simbolica e numerica


Computazione simbolica Computazione numerica

Analisi statistica Simulazione di circuiti Analisi dati e plotting


Analisi dati Plotting (and reverse)

E tanto altro. . . gnuplot Conclusioni

Potrebbero piacerti anche