Matematica al computer

Matematica con il computer

Software opensource per il calcolo scientifico

Spesso si utilizzano per effettuare calcoli con il computer software commerciali, chiusi, proprietari e con licenze coste come Mathematica, MatLab, Maple, Magma, MathCad ed altri. Ma è molto meglio usare dei programmi opensource, a codice sorgente aperto, liberamente utilizzabili e modificabili.

SageMath

SageMath (a volte abbreviato in Sage, acronimo di System for Algebra and Geometry Experimentation ), è la migliore piattaforma aperta per l’algebra computazionale ed il calcolo simbolico e numerico. L’obiettivo del progetto, diretto dal matematico americano William Stein (Univ. Washington), è un’alternativa opensource e gratuita a software commerciali simili come Mathematica e Maple. Il sistema è tra i più completi per studiare algebra astratta, algebra lineare, teoria dei gruppi, combinatoria, teoria dei grafi, teoria dei numeri, calcolo, statistica, analisi numerica, geometria algebrica, geometria differenziale, analisi tensoriale e molti altri settori della matematica pura ed applicata. Il programma è sviluppato nei linguaggi Python, Cython e C, la prima versione è del 2005, la più recente, SageMath 9.2, è stata rilasciata ad ottobre 2020.

La sua forza è l’integrazione di molti progetti di ricerca opensource tra cui: GAP, Singular, FLINT, PARI, Maxima, FriCAS, ATLAS, BLAS, LAPAC, SymPy, NumPy, SciPy, R. Tutti questi strumenti sono utilizzabili insieme con un linguaggio di programmazione basato su Python. Inoltre ha un’interfaccia grafica utilizzabile via web con qualunque browser, Sage Notebook, ed è quindi anche utilizzabile senza installare nulla sui propri computer grazie a servizi internet come CoCalc.

CoCalc

CoCalc (precedentemente chiamato SageMathCloud) è una piattaforma web di cloud computing (SaaS, Software as a Service) e di gestione dei corsi per la matematica. Parte del progetto Sage, supporta la modifica di fogli di lavoro Sage, documenti LaTeX, Markdown, HTML e notebook Jupyter. I fogli di lavoro supportano molti linguaggi di programmazione tra cui Python, Cython, R, MatLab/Octave, Julia e altri. CoCalc supporta i notebook Jupyter, migliorati con la sincronizzazione in tempo reale per la collaborazione e una funzione di registrazione della cronologia. Inoltre, c’è anche un editor LaTeX completo, con supporto per SageTex, la collaborazione, un’anteprima del documento risultante. Con il terminale Linux online, CoCalc supporta anche la modifica e l’esecuzione di molti altri linguaggi, inclusi C / C ++, Perl, Ruby, Go, Scala, Java, ed i file possono essere tracciati utilizzando sistemi di controllo di revisione come Git. Gli utenti possono avere più progetti su CoCalc, e più utenti possono collaborare a un singolo progetto con la sincronizzazione dei documenti. CoCalc offre account sia gratuiti che a pagamento. Gli abbonamenti forniscono più risorse di archiviazione e di elaborazione. Un abbonamento può essere utilizzato per aumentare le quote per un progetto utilizzato da più account. Esistono piani di abbonamento per i corsi. Centinaia di corsi utilizzano CoCalc.

Octave

GNU Octave è un software opensource per il calcolo numerico, alternativa gratuita al software commerciale MatLab, con cui è largamente compatibile, con poche differenze nei comandi, nelle funzioni base e nel linguaggio di programmazione. Ci sono altre alternative a MatLab, per esempio SciLab, meno compatibile, e FreeMat, non aggiornato dal 2013. Ma Octave è la scelta più sicura per eseguire programmi scritti nel linguaggio di MatLab, facendo solo piccole modifiche.
Software come GNU Octave, MatLab, SciLab hanno come tipo di dato principale le matrici ed i vettori, su cui operano direttamente. In questo modo molti problemi numerici complessi possono essere espressi in un numero ridotto di righe di codice, rispetto a soluzioni simili che utilizzano linguaggi tradizionali, come Fortran, C o C ++. Inoltre la memoria è gestita automaticamente, ed i programmi sono eseguiti in modo interattivo. Ciò consente agli utenti di costruire rapidamente modelli per una serie di problemi matematici.

Octave dispone di strumenti estesi per risolvere problemi comuni di algebra lineare numerica, trovare le radici di equazioni non lineari, integrare funzioni ordinarie, manipolare polinomi e integrare equazioni differenziali ordinarie e algebriche differenziali, strumenti per la visualizzazione dei dati ed il plotting 2D e 3D. È facilmente estensibile e personalizzabile tramite funzioni definite dall’utente scritte nel linguaggio di Octave o utilizzando moduli caricati dinamicamente scritti in C ++, C, Fortran o altri linguaggi. Mentre eccelle nel calcolo numerico, ha poche funzioni per il calcolo simbolico rispetto a SageMath o Mathematica. GNU Octave è stato sviluppato da John W. Eaton e molti altri, a partire dal 1988, oggi è giunto alla versione 6.1 (novembre 2020). E’ ridistribuibile gratuitamente e / o modificabile secondo i termini della GNU General Public License (GPL) come pubblicata dalla Free Software Foundation (FSF).

SciLab

Scilab è un pacchetto di calcolo numerico multipiattaforma gratuito e open source e un linguaggio di programmazione di alto livello ad orientamento numerico. Può essere utilizzato per l’elaborazione del segnale, analisi statistica, miglioramento dell’immagine, simulazioni fluidodinamiche, ottimizzazione numerica e modellazione, simulazione di sistemi dinamici espliciti e impliciti Scilab è insiema ad Octave una delle due principali alternative a MATLAB, ed include anche:

  • un pacchetto gratuito chiamato Xcos (un fork di Scicos basato sul linguaggio Modelica) per la modellazione e la simulazione di sistemi dinamici espliciti e impliciti, i inclusi sottosistemi sia continui che discreti. Xcos è l’equivalente open source di Simulink di MathWorks.

  • un traduttore del codice sorgente per assistere la conversione del codice da MATLAB a Scilab.

  • un toolbox per manipolazioni simboliche. Nel calcolo simbolico non è comunque al livello di SageMath, Mathematica e Maple.

wxMaxima

Maxima è un sistema di algebra computazionale (CAS) e calcolo simbolico gratuito con una lunga storia. L’origine del software è il progetto Macsyma (Project MAC’s SYmbolic MAnipulator), sviluppato nei laboratori di Intelligenza Artificiale del MIT dal 1968 al 1982, con i finanziamenti del Dipartimento dell’Energia degli Stati Uniti e di altre agenzie governative.

Maxima si basa su una versione del 1982 di Macsyma, mantenuta da Bill Schelter dal 1982 fino alla sua prematura scomparsa nel 2001 (chi scrive ha avuto l’onore di conoscere e lavorare con Bill Schelter intorno al 1988). Nel 1998, Schelter ha ottenuto il permesso dal Dipartimento dell’Energia per rilasciare la sua versione sotto GPL. Quella versione, ora chiamata Maxima, è gestita da un gruppo indipendente di utenti e sviluppatori. Maxima non include nessuna delle numerose modifiche e miglioramenti apportati alla versione commerciale di Macsyma. Sebbene la funzionalità di base rimanga simile, il codice che dipende da questi miglioramenti potrebbe non funzionare su Maxima e i bug che sono stati corretti in Macsyma potrebbero essere ancora presenti in Maxima e viceversa. Maxima è scritto in Common Lisp, include un linguaggio di programmazione con sintassi simile a ALGOL ma semantica simile a Lisp. Usa GnuPlot per disegnare. Maxima è un CAS completo specializzato in operazioni simboliche, ma offre anche capacità numeriche come l’aritmetica a precisione arbitraria: numeri interi e razionali che possono crescere fino a dimensioni limitate solo dalla memoria della macchina e numeri in virgola mobile la cui la precisione può essere impostata arbitrariamente grande. Per i calcoli che utilizzano pesantemente virgola mobile e array, Maxima offre la possibilità di generare codice in altri linguaggi di programmazione (in particolare Fortran), che possono essere eseguiti in modo più efficiente. Ci sono diverse interfaccie grafiche disponibili per utilizzarlo più facilmente, come wxMaxima {}, software multipiattaforma.

Jupyter Notebook

Project Jupyter è un’organizzazione senza scopo di lucro creata per supportare la scienza dei dati ed il calcolo scientifico in tutti i linguaggi di programmazione attraverso lo sviluppo di software open source, standard aperti e servizi per il calcolo interattivo. Il nome del progetto Jupyter è un riferimento ai tre linguaggi di programmazione principali supportati da Jupyter, che sono Julia, Python e R, e anche un omaggio ai taccuini di Galileo Galilei che registrano la scoperta delle lune di Giove.

Jupyter Notebook è un ambiente di calcolo interattivo basato sul Web per la creazione di documenti nel formato onomimo. Un documento Jupyter Notebook, in un file con estensione .ipynb, è un documento JSON contenente un elenco ordinato di celle di input / output che possono contenere codice, testo (in Markdown), matematica, grafici e rich media.
Un Jupyter Notebook può essere convertito in numerosi formati: HTML, LaTeX, PDF, ReStructuredText, Markdown, Python. Jupyter Notebook fornisce un ambiente di programmazione semplice e interattivo, basato su browser costruito su una serie di popolari librerie open source (nei linguaggi Python e JavaScript). Jupyter Notebook può connettersi a molti kernel per consentire la programmazione in circa 50 diversi linguaggi. Un kernel Jupyter è un programma responsabile della gestione di vari tipi di richieste (ad es. esecuzione del codice) e della fornitura di una risposta. I kernel comunicano con gli altri componenti di Jupyter usando ZeroMQ, nota piattaforma di messagistica distribuita, e quindi possono trovarsi sulla stessa macchina o su macchine remote, e possono essere collegati a molti utenti contemporaneamente. Il termine notebook (quaderno, taccuino per appunti) si usa, a seconda del contesto, per l’applicazione web Jupyter, il server web Jupyter Python o il formato di documento Jupyter, ed è uno stile di interfaccia computazionale introdotto da MathCad nel 1986, e divenuto popolare con software come Mathematica, Maple e SageMath.

Cantor

Cantor è un’interfaccia utente grafica per Linux che delega le sue operazioni matematiche a uno dei numerosi motori di calcolo (backend) supportati. La sua struttura basata su plugin consente di aggiungere diversi backend. Può utilizzare Julia, KAlgebra, Lua, Maxima, Octave, Python, Qalculate !, R, SageMath e Scilab.

Cantor fornisce un’interfaccia coerente a questi backend; la sua pagina del progetto elenca le seguenti caratteristiche:

  • Visualizzazione del foglio di lavoro per la valutazione delle espressioni
  • Visualizzazione dei risultati della stampa all’interno del foglio di lavoro o in una finestra separata
  • Composizione di formule matematiche utilizzando LaTeX
  • Evidenziazione della sintassi consapevole del backend
  • Finestre di dialogo amichevoli basate su plug-in (come l’integrazione di una funzione o l’inserimento di una matrice)

Gap

GAP (Gruppi, algoritmi, programmazione ) è un sistema per l’algebra discreta computazionale con particolare enfasi sulla Teoria dei Gruppi. GAP fornisce un linguaggio di programmazione, una libreria di migliaia di funzioni che implementano algoritmi algebrici scritti nel linguaggio GAP e grandi librerie di dati di oggetti algebrici. GAP è utilizzato nella ricerca e nell’insegnamento per lo studio di gruppi e loro rappresentazioni, anelli, spazi vettoriali, algebre, strutture combinatorie e altro ancora.

Software Commerciale per il calcolo scientifico

MatLab

MATLAB (abbreviazione di Matrix Laboratory) è un ambiente per il calcolo numerico e l’analisi statistica scritto in C, che comprende anche l’omonimo linguaggio di programmazione creato dalla MathWorks. MATLAB consente di manipolare matrici, visualizzare funzioni e dati, implementare algoritmi, creare interfacce utente, e interfacciarsi con altri programmi. Nonostante sia specializzato nel calcolo numerico, uno strumentario opzionale interfaccia MATLAB con il motore di calcolo simbolico di Maple. MATLAB è usato da milioni di persone nell’industria e nelle università per via dei suoi numerosi strumenti a supporto dei più disparati campi di studio applicati e funziona su diversi sistemi operativi. Ottime alternative opensource sono Octave e SciLab.

Mathematica

Mathematica è un ambiente di calcolo simbolico e numerico multipiattaforma, ideato da Stephen Wolfram e successivamente sviluppato da un team di matematici e programmatori. Mathematica usa un potente linguaggio di programmazione interpretato, chiamato linguaggio Wolfram. Wolfram e il suo gruppo iniziarono a lavorare al programma nel 1986 e pubblicarono la prima versione nel 1988. La versione corrente è la 12.3, uscita il 20 maggio 2021. Il sistema Mathematica è disponibile per le piattaforme Windows, MacOS e Linux

Maple

Maple è un pacchetto applicativo matematico commerciale ad uso generico. Fu sviluppato per la prima volta nel 1981 dal Symbolic Computation Group all’Università di Waterloo, Canada. Dal 1988, è stato sviluppato e venduto dalla Waterloo Maple (conosciuta anche come Maplesoft). Maple combina un linguaggio di programmazione con un’interfaccia che consente agli utenti di scrivere formule matematiche usando la notazione matematica tradizionale. La maggior parte delle funzioni di Maple sono scritte nel linguaggio Maple, che è interpretato dal kernel di Maple, il quale è scritto in C. Il linguaggio di programmazione Maple è un linguaggio di programmazione interpretato a tipizzazione dinamica.