Una collezione di tools per la differenziazione automatica.

Una collezione di tools per la differenziazione automatica, molto utile per chi si occupa di calcolo numerico.

Automatic differentiation
(AD) (differenziazione automatica) è una tecnica di computazione
numerica per la
derivazione.Tale tecnica sfrutta la enorme versatilità dei calcolatori
che eseguono senza difficoltà sequenze di operazioni aritmetiche quali
somme o funzioni elementari tipo exp().Derivate di ordine arbitrario possono
essere calcolate automaticamente applicando ripetutamente la regola della catena
di calcolo derivativo alle operazioni aritmetiche prima menzionate, ottenedo
una certa accuratezza e lavorando con precisione.

Tradizionalmente,
due approcci alla differenziazione automatica sono stati sviluppati,cioè
i cosidetti:

forward mode
reverse mode

La differenza
tra i due modi è nel diverso modo di propagazione del calcolo.Forward
mode calcola la derivata della variabile intermedia rispetto alla variabile
indipendente.Sia x la variabile indipendente e y la variabile dipendente allora
la linearità della differenziazione permette al forward mode di computare
combinazioni lineari e arbitrarie J * S di colonne dello Jacobiano:

Per
una matrice S (n *p) , lo sforzo richiesto è di ordine O(p). In particolare,
quando S è un vettore s, noi calcoliamo il direzionale derivativo .
Questo tipo di differenziazione è usato anche per ottenere un modello
cosiddetto lineare tangente.

In
contrasto, la reverse mode propaga le derivate rispetto ad una quantità intermedia,
detta adjoint quantity.Si deve poter invertire il flusso del programma per propagare
l’adjoints, e si deve ricordare o recomputare qualsiasi valore intermedio che
ha un impatto sul risultato finale. Per una matrice di W (q *m),
la reverse mode ci permette di calcolare la fila combinazione lineare W * J
con ordine O(q);sono richieste operazioni floating-point per la valutazione
di f.

Le
moderne tecniche utilizzano un ibrido tra le due appena viste.

In
seguito sono riportati parecchi link a siti che offrono tools per tali tecniche
in fortran 77 ed in fortran 90.

Fortran 77

href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/adifor.html">ADIFOR: Automatic
Differentiation of Fortran
TAMC:
Adjoint Model Complier

href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/dafor.html">DAFOR: Differential
Algebraic Extension of Fortran
href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/gress.html">GRESS: Gradient-Enhanced
Software System
href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/odyssee.html">Odyssée:
Automatic Differentiation of Fortran Programs
href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/padre2.html">PADRE2: Partial
Derivatives and Rounding Errors up to 2nd order

Fortran 90

AD01:
A Fortran 90 Package for Automatic Differentiation

href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/adolf.html">ADOL-F: Automatic
Differentiation of FORTRAN Codes
IMAS:
Integrated Modeling and Analysis System

href="http://www-unix.mcs.anl.gov/autodiff/AD_Tools/optima90.html">OPTIMA90:
Automatic Differentiation Tools

PUBBLICITÀ
PUBBLICITÀ
Le vostre opinioni
Pubblicato il domenica 26 agosto 2001 in: {post_cat_name}

Ultimi interventi

Vedi tutti

Link correlati

Inserisci per primo un commento a questo articolo.

PUBBLICITÀ
PUBBLICITÀ
L'email è richiesta ma non verrà mostrata ai visitatori.
Commenta questo articolo

Registrati per riservare il tuo nickname preferito e per caricare il tuo avatar. Se sei già registrato, effettua il login per usare il tuo nickname.

Si No

Anteprima del commento