Sistema di algebra computazionale
Con il termine sistema di algebra computazionale (o anche con il termine inglese computer algebra system e con il suo acronimo CAS) si intende un sistema software in grado di facilitare l'esecuzione di elaborazioni simboliche. La funzionalità di base di un CAS è la manipolazione di espressioni matematiche in forma simbolica. Lo studio degli algoritmi e delle strutture informative concretamente utilizzabili per i sistemi CAS viene detto algebra computazionale o anche computer algebra.
Tipi di espressioni
modificaLe espressioni che un CAS è in grado di manipolare tipicamente comprendono polinomi e funzioni razionali in una e più variabili; funzioni elementari standard (potenza, esponenziale, logaritmo, seno, coseno, tangente, varianti iperboliche, funzioni inverse, ...); varie funzioni speciali (gamma, zeta[ambiguo, vedere pagina Funzione zeta], erf, Bessel, ...); composizioni delle funzioni precedenti; derivate, integrali, somme, prodotti delle espressioni trattabili; serie troncate con coefficienti dati da espressioni, matrici di espressioni e così via. In modo più preciso l'insieme delle espressioni manipolabili da un CAS viene individuato da una definizione ricorsiva alla quale corrispondono i meccanismi interni per il riconoscimento delle espressioni e la determinazione degli schemi per le loro manipolazioni e valutazioni.
Manipolazioni simboliche eseguibili
modificaLe manipolazioni simboliche supportate in genere comprendono
- semplificazione, inclusa la semplificazione automatica e la semplificazione con presunzioni;
- sostituzione di valori simbolici o numerici per le espressioni;
- cambiamenti di forma delle espressioni mediante: sviluppo di prodotti e di potenze, riscrittura sotto forma di frazioni parziali, riscrittura di funzioni trigonometriche come esponenziali, ... ;
- differenziazione rispetto a una o più variabili;
- ottimizzazione globale simbolica sotto vincoli o senza vincoli;
- fattorizzazione parziale e completa;
- soluzione di equazioni lineari e di alcune equazioni non lineari su vari domini;
- soluzione di alcune equazioni differenziali e di alcune equazioni alle differenze;
- valutazione di limiti;
- integrazione indefinita e integrazione definita di varie funzioni, inclusi gli integrali multidimensionali;
- trasformate integrali;
- sviluppi in serie di Taylor, di Laurent e di Puiseux opportunamente troncati;
- sviluppi di alcune serie infinite;
- sommazione di alcune serie;
- operazioni su matrici, come somme, prodotti, inversioni, prodotti diretti, ... ;
- presentazione bidimensionale delle espressioni matematiche secondo le forme della tradizionale tipografia matematica, spesso utilizzando sistemi per la composizione tipografica simili a TeX (vedi anche pretty print)
La parola "alcuni" in molte espressioni precedenti pone in rilievo che un sistema CAS è in grado di effettuare una data operazione solo su determinati insiemi di espressioni, ovvero solo su determinati insiemi di funzioni. Va rilevato che tutti i sistemi CAS che riescono a rimanere sul mercato vanno progressivamente ampliando questi insiemi.
Altre funzioni
modificaMolti sistemi CAS consentono di effettuare operazioni numeriche:
- algebra lineare numerica;
- valutazione di espressioni per particolari valori delle variabili e dei parametri;
- calcoli di precisione molto elevata (aritmetica di precisione illimitata), che, ad esempio, permettono di valutare numeri algebrici come 21/3 con 10.000 cifre decimali;
- tracciamento di grafici e diagrammi parametrici di funzioni che si sviluppano in due e tre dimensioni.
Molti sistemi CAS dispongono anche di un proprio specifico linguaggio di programmazione di alto livello il quale consente agli utenti di implementare propri algoritmi e proprie funzioni. Talora questi linguaggi possono essere sviluppati in ambienti di sviluppo dotati di buoni strumenti per i programmatori.
Infine alcuni sistemi dispongono di strumenti per la gestione di files e archivi di dati da utilizzare nelle elaborazioni o prodotti dalle stesse.
I tempi di esecuzione dei programmi che richiedono prevalentemente operazioni numeriche implementati nei sistemi CAS sono normalmente superiori a quelli di programmi equivalenti che possono essere implementati in sistemi computazionali come MATLAB e GNU Octave oppure mediante linguaggi di livello medio-basso come Fortran e C, in quanto i CAS sono programmati per riuscire a governare elaborazioni simboliche di elevata generalità e tendenzialmente non sono in grado di far intervenire nel modo più diretto le operazioni numeriche di macchina per gran parte delle loro funzionalità.
Storia
modificaI primi sistemi di algebra computazionale sono diventati disponibili nei primi anni 1970, anche come derivati dalla ricerca in intelligenza artificiale; i due settori dell'algebra computazionale e della intelligenza artificiale si sono però presto separati piuttosto nettamente. I primi sistemi a raggiungere la popolarità sono stati Reduce, Derive e Macsyma, tutti sistemi ancora commercialmente disponibili; una versione copyleft di Macsyma chiamata Maxima viene attivamente manutenuta. Gli attuali leader di mercato sono Mathematica e Maple; entrambi sono ampiamente utilizzati per ricerca e sviluppo da matematici, scienziati e ingegneri. Un altro diffuso sistema commerciale è MuPAD; esso è disponibile in una versione gratuita con una interfaccia con leggere limitazioni per usi di ricerca senza scopo di lucro e per attività didattiche. Sono inoltre disponibili molti altri sistemi di algebra computazionale, per esempio CoCoA, che concentrano le proprie prestazioni su aree computazionali specifiche; per taluni ristretti campi di applicazione spesso questi sistemi specializzati sono molto più efficienti di quelli di portata più generale, in quanto implementano algoritmi validi per situazioni molto particolari; questi sono tipicamente sviluppati in ambienti accademici e sono gratuiti.
Nozioni matematiche usate nei sistemi di algebra computazionale
modificaBibliografia
modifica- Richard J. Fateman (1972): "Essays in algebraic simplification". Technical report MIT-LCS-TR-095. (Rapporto tecnico di interesse storico per le prime direzioni della ricerca nell'algebra computazionale. accessibile nel sito di MIT LCS [1])