image

Programmi liberi per il Calcolo Scientifico:

suggerimenti e guide a cura di Raffaele Vitolo

  1. Premesse: Software Libero e GNU/Linux
  2. Sul Calcolo Scientifico
  3. Maxima per il Calcolo Simbolico
  4. REDUCE per il Calcolo Simbolico
  5. GNU Octave per il Calcolo Numerico
  6. Fortran per il Calcolo Numerico
  7. C/C++ per il Calcolo Numerico
  8. Emacs: ambiente di scrittura e programmazione
  9. LaTeX: videoscrittura professionale

Premesse: Software Libero e GNU/Linux

I sistemi operativi nel quale il Calcolo Scientifico ha avuto maggiore sviluppo sono quelli della famiglia UNIX e derivati. I sistemi UNIX proprietari sviluppati da grandi aziende come IBM, Sun, Silicon Graphics sono stati progressivamente soppiantati da sistemi GNU/Linux, che seguono lo standard internazionale per i sistemi UNIX. La fondazione GNU ha sviluppato il compilatore del linguaggio C, gcc, ed alcuni altri strumenti essenziali per un Sistema Operativo UNIX (tra cui Emacs, si veda più sotto), mentre Linus Torvalds ha sviluppato il nucleo (kernel) del sistema operativo, Linux.

Uno dei motivi di successo dei sistemi GNU/Linux è il loro modello di sviluppo, unito alla loro licenza. Si tratta, infatti, di software libero, che è gratuito ed è anche forniti con il codice sorgente (a richiesta); è possibile modificare tale codice e ridistribuire le modifiche a condizione che il codice delle modifiche sia reso pubblico. Per maggiori informazioni sul software libero si veda questo link.

Esistono molte guide introduttive ai sistemi operativi GNU/Linux. Qui trovate un' introduzione a UNIX, un'introduzione a GNU/Linux, un' introduzione alla linea di comando UNIX (bash).

Per iniziare consiglio la distribuzione GNU/Linux Ubuntu, anche se io uso la Debian.

Tutti i programmi descritti più sotto sono software libero, e sono inclusi in tutte le distribuzioni GNU/Linux. I programmi esistono anche in versione per Windows; tuttavia, non ritengo Windows (o qualunque altro sistema operativo proprietario e/o chiuso come MacOS) adatto nell'ambito educativo e scientifico per molte buone ragioni. Una ragione per me molto importante, legata all'etica dell'insegnamento, è che Windows non è aperto: il suo codice non è disponibile per l'analisi e l'apprendimento. Un saggio di R.M. Stallman, presidente della Free Software Foundation, approfondisce le ragioni della necessità del software libero nelle scuole.

Sul Calcolo Scientifico

Il calcolo scientifico si divide in due ambiti: il Calcolo Numerico ed il Calcolo Simbolico.

Il Calcolo Numerico utilizza i numeri, tipicamente in virgola mobile, e produce soluzioni approssimate a problemi matematici di interesse applicativo. Il primo calcolatore elettronico, l'ENIAC, è stato costruito per fare Calcolo Numerico; il Calcolo Numerico è uno degli scopi più naturali per un calcolatore elettronico moderno.

Il Calcolo Simbolico utilizza espressioni simboliche, o letterali. Lo sviluppo e l'implementazione di programmi per il Calcolo Simbolico è iniziato molti anni più tardi rispetto allo sviluppo e l'implementazione di programmi per il Calcolo Numerico. Il Calcolo Simbolico occupa un posto minore, rispetto al Calcolo Numerico, nel Calcolo Scientifico. Tuttavia la sua importanza non può essere trascurata.

Maxima per il Calcolo Simbolico

Maxima è un programma per il calcolo simbolico. Il programma, la documentazione e numerosi esempi si possono reperire in http://maxima.sourceforge.net/. Maxima ha anche capacità grafiche, per mezzo del programma GNUplot. Il programma e la documentazione sono inclusi nell'installer di Maxima per Windows, ma sono reperibili indipendentemente in http://www.gnuplot.info/. In Linux è necessario installare GNUplot separatamente, il pacchetto è incluso in tutte le distribuzioni.

Ho realizzato delle dispense su Maxima per la didattica della matematica negli ultimi anni di Scuola Secondaria (quarto e quinto) e nel primo anno di Università (ovunque si studi matematica). Gli argomenti trattati nelle dispense sono: introduzione all'ambiente di lavoro di Maxima, fattorizzazione e semplificazione di polinomi, soluzione di equazioni e sistemi anche per via grafica, studio delle funzioni, principali funzioni per la grafica 3D.

Reduce per il Calcolo Simbolico

Recentemente ho scritto un pacchetto software per Reduce. Qui trovate il sito ufficiale, il sito degli sviluppatori su SourceForge, la pagina di Wikipedia.

Potete scaricare Reduce dal sito degli sviluppatori, nella sezione Files. Sono disponibili versioni di Reduce installabili su tutte le piattaforme, compilate a partire dal codice sorgente ad una certa data, denominate snapshots. Conviene scaricare lo snapshot più recente.

Per molti anni Reduce è stato all'avanguardia tra i programmi di calcolo simbolico, per via dell'impostazione innovativa con la quale fu programmato. Dopo una fase di stasi, il programma è stato reso software libero e lo sviluppo è lentamente ripreso. Per l'utilizzo scientifico il software ha aspetti di eccellenza, in particolare per quanto riguarda il motore algebrico. Tuttavia l'interfaccia grafica è meno sviluppata di quella di Maxima, che risulta, pertanto, più consigliabile in ambito didattico.

Programmare Reduce è un'esperienza molto interessante e consigliabile a chiunque voglia utilizzare pienamente uno strumento per il calcolo simbolico. Insieme ad A.C. Norman (Trinity Colelge, Cambridge) ho realizzato una guida per programmatori alle caratteristiche interne di Reduce ed linguaggio in cui Reduce è scritto, RLisp.

GNU Octave per il Calcolo Numerico

Octave è un programma per il calcolo con le matrici e per il calcolo numerico in genere, sviluppato dalla Fondazione GNU. Octave è quasi completamente compatibile con il linguaggio Matlab. Matlab è un ambiente per il calcolo numerico di fondamentale importanza per l'ingegneria; tuttavia è molto costoso. Suggerisco un' ottima guida al linguaggio Matlab scritta da D. Houcque, Northwestern University.

Octave è libero e si appoggia per il calcolo alle librerie standard di Calcolo Numerico, esattamente come Matlab; per questo può essere una valida alternativa a Matlab, specialmente a livello didattico dove il fatto che il codice sorgente sia libero permette di comprenderne il funzionamento in profondità.

Il programma, la documentazione e numerosi esempi si possono reperire in http://www.octave.org/. Il programma dispone di un'interfaccia grafica dalla versione 3.8 in poi.

Octave ha anche capacità grafiche, per mezzo del programma GNUplot. Il programma GNUplot e la documentazione sono inclusi nell'installer di Octave per Windows, ma sono reperibili indipendentemente in http://www.gnuplot.info/. In Linux è necessario installare GNUplot separatamente, il pacchetto è incluso in tutte le distribuzioni.

Ho scritto un testo introduttivo ad Octave che potete trovare qui nel formato PDF. Una versione ridotta di questo testo è apparsa sulla rivista Linux & C. nel 2006.

Ho realizzato delle dispense su Octave per la didattica in corsi di Calcolo Numerico, corredate da esempi di programmi; scaricare il file corso_octave.zip.

Fortran per il Calcolo Numerico

Una pagina con molti link a guide e tutorial sul Fortran si può trovare qui: http://www.fortran.bcs.org/resources.php Una guida gratuita al Fortran, scritta da Biagio Raucci, si può reperire a questo indirizzo.

Ci sono due principali compilatori Fortran liberi in ambiente GNU/Linux: il compilatore gfortran, della suite di compilatori GNU (incluso in Debian), ed il compilatore g95 (scaricabile dal sito). Il migliore sembra essere, almeno per il momento, g95. Il miglior compilatore Fortran, tuttavia, sembra essere il compilatore Intel, scaricabile liberamente dal sito Intel per scopi non commerciali solo in ambiente GNU/Linux.

C/C++ per il Calcolo Numerico

Il testo di riferimento per il C è il libro di Kernighan e Ritchie.

Il testo di riferimento per il C++ èil libro di Stroustrup. Esistono molti utili corsi online di C++; tra questi segnalo un'introduzione abbastanza elementare.

Per quanto riguarda il calcolo numerico, il libro più famoso è il Numerical Recipes in C/C++ (per il C troverete una versione da scaricare gratuitamente). Le edizioni più moderne del libro sono per il linguaggio c++. Una delle più interessanti librerie per il calcolo numerico in c ed in c++ e' la GNU Scientific Library.

Il principale compilatore C/C++ libero è gcc, della suite di compilatori GNU (funziona in Windows tramite l'IDE devc++ ed in Linux).

Emacs: ambiente di scrittura e programmazione

Emacs e' un editore di archivi di tipo testo. Tra le sue caratteristiche fondamentali:

Per imparare ad usare Emacs basta avviarlo e poi scegliere il tutorial dal menu 'Help'. Per saperne di piu':

L'installazione in Linux e' molto semplice, i binari sono in qualsiasi distributione. Si noti che per utilizzare LaTeX al meglio (si veda il punto successivo) e' necessario il pacchetto AUCTeX.

Seguendo questo collegamento potrete trovare guide per l'installazione in Windows.

Si noti che molte delle caratteristiche di emacs si attivano mediante l'archivio di configurazione. Un esempio di archivio di configurazione per Linux e' qui. Insieme all'archivio di configurazione troverete anche la cartella 'elisp' contenente alcuni programmi che attivano funzionalità aggiuntive molto comode, come: supporto al modo gnuplot, supporto al modo post, conversione di archivi di tipo testo da PC a Linux ed a Mac e viceversa, ecc.. La cartella va copiata nella propria 'home directory' per essere letta da emacs in fase di avvio.

LaTeX: videoscrittura professionale

Una presentazione 'rapida' di LaTeX si può scaricare qui

Per sapere cosa e' il LaTeX, consiglio il manuale (in Italiano) Una (non cosi' corta) introduzione al LaTeX.

Per comporre (scrivere) documenti LaTeX ci sono molte soluzioni, ad esempio Texstudio o Texmaker, ma lo strumento piu' potente rimane comunque Emacs (tutte le piattaforme, si veda la descrizione precedente).

Per compilare, visualizzare e stampare documenti LaTeX, consiglio TeXLive (funziona con tutti i sistemi operativi).

In LaTeX esistono migliaia di pacchetti che ne estendono le funzionalità Di seguito ne sono elencati alcuni dei più comuni, per un elenco aggiornato si consulti il Catalogo Online.

Last updated: 24/11/2018