Upload
calogera-lisa
View
220
Download
1
Embed Size (px)
Citation preview
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 1Guido Buzzi-Ferraris
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 2Guido Buzzi-Ferraris
Soluzione di sistemi non lineari(continua)
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 3Guido Buzzi-Ferraris
Quattro categorie di metodi
1. Metodi di sostituzione
2. Metodo del gradiente
3. Metodi di Newton e suoi derivati
4. Metodi di continuazione
Soluzione di sistemi non lineari
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 4Guido Buzzi-Ferraris
Metodi di sostituzioneI metodi di sostituzione sono concettualmente molto semplici. Per poterli utilizzare è necessario trasformare le equazioni che costituiscono il sistema da risolvere:
0xf )(
in modo che i termini di sinistra costituiscano un sistema facile da risolvere rispetto alle variabili x.
)()( xdxs
Conoscendo un valore di tentativo, xi, lo si pone a destra delle equazioni in modo da ricavare un valore di xi+1 ottenuto utilizzando il sistema costituito dalle equazioni di sinistra.
)()( i1i xdxs
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 5Guido Buzzi-Ferraris
Esempio
Trovare il valore di x, xs, che azzeri le due equazioni:
01xx10000)(f 211 x
partendo dal punto di primo tentativo x1 = 0, x2 = 1
00001.1)xexp()xexp()(f 212 x
Sommando alla prima equazione x1 e alla seconda x2 si ottiene:
)(d1xx10000x x)(s 121111 xx
)(d0001.1)xexp()xexp(xx)(s 221222 xx
Le iterazioni sono:
Il metodo diverge
x1= 0.000; -1.000; -3.086 104
x2= 1.000; -3.086; 1.10308
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 6Guido Buzzi-Ferraris
Esempio di Ingegneria Chimica
Metodo BP (Boiling Point) per risolvere le equazioni di simulazione di una colonna di distillazione.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 7Guido Buzzi-Ferraris
Vengono usate le equazioni stechiometriche
M
1kkjkj 1xk
per ricavare un valore aggiornato di Tj
Dato un valore di tentativo di Tj, Lj, Vj e yij
Vengono usate le equazioni di Bilancio Materiale per il componente i Lj-1xij-1 – (Vjkij + Lj)xij + Vj+1kij+1xij+1 = Fjzi per ricavare
le variabili xij
Vengono usate le equazioni di Bilancio Materiale: Lj-1 - Vj - Lj + Vj+1 = Fj
e le equazioni di Bilancio Energetijco: Lj-1 hj-1 - Vj Hj - Lj hj + Vj+1 Hj+1 + Qj-1 = Fj HFj
per ricavare un valore aggiornato di Lj e Vj
Si itera il processo
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 8Guido Buzzi-Ferraris
Osservazioni
Le equazioni:
Lj-1xij-1 – (Vjkij + Lj)xij + Vj+1kij+1xij+1 = Fjzi
risolte per un componente, i, alla volta costituiscono dei sistemi lineari con struttura tridiagonale.
Le equazioni:
sono analoghe a quelle già viste per il calcolo del punto di bolla di una miscela. Il metodo prende il nome BP da questo fatto.
M
1kkjkj 1k x
Lj-1 - Vj - Lj + Vj+1 = Fj
Le equazioni:
risolte rispetto alle variabili Lj e Vj costituiscono un sistema lineare con struttura a blocchi (di dimensioni 2) tridiagonali.
Lj-1 hj-1 - Vj Hj - Lj hj + Vj+1 Hj+1 + Qj-1 = Fj HFj
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 9Guido Buzzi-Ferraris
Il metodo BP se converge, converge lentamente alla soluzione.
Il metodo BP ha problemi di convergenza quando la miscela contiene elementi molto volatili (per es. Idrogeno o Metano) o pochissimo volatili (per es. nel caso di assorbitori).
Perché?
Perché in entrambi i casi si sfrutterebbero equazioni mal condizionate rispetto alle variabili usate per risolverle.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 10Guido Buzzi-Ferraris
Vantaggi dei metodi di sostituzione
Svantaggi dei metodi di sostituzione• Spesso il metodo non converge perché alcuni dei sottoproblemi in cui è stato suddiviso il problema originale sono mal condizionati.
• Talvolta si può trovare un metodo che riesca a sfruttare algoritmi relativamente semplici.
• Anche se dovesse convergere il metodo richiede molte iterazioni.
• La ricerca di una formulazione che converga e che converga in modo accettabile può richiedere molto tempo uomo.
• Il programma ottenuto può portare ad una formulazione del problema molto diversa da quella del problema originale (si veda l’esempio del metodo BP). Il codice può perciò non essere di facile lettura.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 11Guido Buzzi-Ferraris
Metodi di sostituzione
Obsoleti
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 12Guido Buzzi-Ferraris
Promemoria
Che cosa è lo Jacobiano di un sistema di equazioni?
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 13Guido Buzzi-Ferraris
Lo Jacobiano di un sistema di equazioni f(x) è la matrice, J, delle derivate prime delle funzioni fj.
N
N
2
N
1
N
N
2
2
2
1
2
N
1
2
1
1
1
x
f....
x
f
x
f................x
f....
x
f
x
fx
f....
x
f
x
f
J
Lo Jacobiano, J, di solito non è una matrice simmetrica.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 14Guido Buzzi-Ferraris
Metodo del gradiente
iTi
n
1ji
2ji1 2
1)(f
2
1)(F ffxx
Il gradiente della funzione di merito:
è iTii
Tiii )()()( fJxfxJgxg
Perciò la direzione –gi è la direzione lungo la quale tale funzione di merito diminuisce più rapidamente possibile.
Sappiamo che il metodo del gradiente non è un metodo molto valido per minimizzare una funzione.
Perciò il metodo del gradiente verrà utilizzato solo quando tutti gli altri metodi vanno male nella speranza di sbloccare la situazione.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 15Guido Buzzi-Ferraris
Metodo di NewtonSe le funzioni f possono essere espanse in serie di Taylor:
f(xi +di) = f(xi) + J(xi) di + O(||di||2)
e il punto xi è sufficientemente vicino alla soluzione è possibile arrestare lo sviluppo ai termini di primo grado.
In questo caso il vettore delle correzioni di da apportare al punto xi si ottiene risolvendo il sistema lineare:
f(xi +di) = fi + Ji di = 0
Il metodo di Newton, nella sua forma elementare, utilizza iterativamente la relazione:
xi+1 = xi + di
Ji di = - fi
con di ricavato risolvendo il sistema lineare:
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 16Guido Buzzi-Ferraris
Vantaggi del metodo di Newton
Svantaggi del metodo di Newton• Il metodo va in crisi se lo Jacobiano è singolare o molto mal condizionato.
• Il metodo di Newton, quando converge, converge molto rapidamente (ha una velocità di convergenza quadratica).
• Il metodo può non convergere.
• La previsione può essere peggiore di quella dell’iterazione precedente rispetto a tutte le funzioni di merito considerate.
• Ad ogni iterazione deve essere calcolato lo Jacobiano. Se come spesso avviene lo Jacobiano è calcolato numericamente ad ogni iterazione le funzioni f(x) devono essere calcolate N volte.
• Se lo Jacobiano non è singolare la direzione di del metodo di Newton è tale da garantire la diminuzione di tutte le funzioni di merito.
• Ad ogni iterazione deve essere risolto il sistema lineare: Ji di = - fi
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 17Guido Buzzi-Ferraris
Sono state proposte numerose varianti del metodo di Newton.
Esse possono essere raggruppate in due categorie a seconda di come viene calcolato lo Jacobiano.
1. Metodi di Newton modificato. Lo Jacobiano viene calcolato (numericamente o analiticamente) ad ogni iterazione. In questi metodi ad ogni iterazione deve essere risolto anche il sistema lineare Ji di = - fi .2. Metodi Quasi Newton. Lo Jacobiano viene aggiornato ad ogni iterazione sommandogli una opportuna matrice. In questi metodi ad ogni iterazione può essere evitata (o no) la soluzione del sistema lineare Ji di = - fi .
In entrambi i casi vengono apportate delle modifiche al metodo di Newton elementare che cercano di evitare i problemi di convergenza o di crisi.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 18Guido Buzzi-Ferraris
Metodi di continuazione
Da non portare all’esame
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 19Guido Buzzi-Ferraris
Breve parentesi sull’argomento
Come imparare a imparare
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 20Guido Buzzi-Ferraris
Molti anni fa quando ero un giovane pimpante durante un’escursione estiva in Dolomiti dovetti mettere nel sacco da montagna due grossi sassi che mio figlio riteneva bellissimi.
Alla fine della gita sia io che mio figlio ci dimenticammo dei due sassi che perciò rimasero in fondo al sacco.
Passarono i mesi, passarono molte gite di medie difficoltà e i sassi rimasero in fondo al sacco ricoperti da altra roba inutile.
Essi furono scoperti e finalmente tolti dal sacco solo in giugno dell’anno dopo in occasione di una gita molto impegnativa che richiedeva tutta la capienza del sacco.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 21Guido Buzzi-Ferraris
Il teorema dello zio Giacomo
Qualunque sia la difficoltà di una gita in montagna e qualunque sia la capienza del vostro sacco, esso sarà sempre pieno.
Primo lemma
Se state facendo una gita banale non usate il sacco che usereste per andare in cima all’Everest. In caso contrario vi ritrovereste con un sacco enorme pieno di cose inutili.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 22Guido Buzzi-Ferraris
Morale
La regola numero undici per imparare una materia che si deve portare ad un esame è di non perdersi dietro lo studio di cose inutili.
Allo stesso modo quando si studia per preparare un esame non si deve esagerare con il materiale utilizzato.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 23Guido Buzzi-Ferraris
Il teorema dello zio Giacomo nasconde un lemma più sottile e importante
Secondo lemma
Se avete un sacco di grandi dimensioni non limitatevi a fare gite banali. In caso contrario salireste per tutta la vita su cime senza valore mentre magari potreste salire in cima all’Everest.
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 24Guido Buzzi-Ferraris
Morale
La regola numero dodici per imparare una nuova materia e più in generale per imparare a costruirsi una vita piena e interessante è di non sottovalutare le proprie capacità.
Questa metafora nel campo dello studio e più in generale per il tipo di vita che vi aspetta ha la seguente
Wooka: Quest’ultima regola mi ricorda quel famoso libro “Istruzioni per un’aquila che si crede un pollo”
Flinks: Personalmente aggiungerei un monito per quelli che invece sopravvalutano le loro capacità e consiglierei quell’autore a scrivere anche un libro intitolato “Istruzioni per tutti quei polli che si credono aquile”
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 25Guido Buzzi-Ferraris
Chiusa la parentesi sull’argomento
Come imparare a imparare
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 26Guido Buzzi-Ferraris
Trovare il valore di x, xs, che azzeri le due equazioni:
01xx10000)(f 211 x
partendo dal punto di primo tentativo x1 = 0, x2 = 1
00001.1)xexp()xexp()(f 212 x
Esercitazione
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 27Guido Buzzi-Ferraris
Il programma necessario è il seguente.
#include "BzzMathBasic.hpp“#include "BzzMathAdvanced.hpp"
// prototypevoid NonLinearSys(BzzVectorDouble &x, BzzVectorDouble &f);
void main(void) {// bzzFileOut = stdout; BzzPrint("\nSoluzione di un sistema non lineare"); BzzVectorDouble x0(2,0.,1.); BzzNonLinearSystemDouble nls(x0,NonLinearSys); nls(); nls.BzzPrint("Results"); BzzPause(); }
Per prima cosa bisogna mettere gli includePoi bisogna mettere
il prototipo della funzione
NonLinearSys serve per calcolare i residui delle funzioni
bzzFileOut è una variabile globale che serve per dire dove la funzione BzzPrint scriverà
Qui bzzFileOut è commentato e la funzione BzzPrint scriverà sul FILE di default BzzFile.txt
Ecco un esempio di uso della funzione BzzPrint
Viene creato l’oggetto nls
nls chiama il suo costruttore che riceve il valore di primo tentativo di x e il nome della funzione in cui sono calcolati i residui
nls chiama la funzione () che azzera la funzionenls chiama la BzzPrint che stampa i risultati
La funzione BzzPause ferma il programma in attesa di ricevere un carattere
Viene creato l’oggetto x0 che viene inizializzato con il valore di primo tentativo di x
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 28Guido Buzzi-Ferraris
void NonLinearSys(BzzVectorDouble &x, BzzVectorDouble &f) { f[1] = 10000. * x[1] * x[2] – 1.; f[2] = exp(-x[1]) + exp(-x[2]) – 1.0001; }
NonLinearSys serve per calcolare i residui delle funzionie da azzerare
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 29Guido Buzzi-Ferraris