Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

29
Metodi e Applicazioni numeriche nell’Ingegneria Chimica 1 Guido Buzzi- Ferraris

Transcript of Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Page 1: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 1Guido Buzzi-Ferraris

Page 2: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 2Guido Buzzi-Ferraris

Soluzione di sistemi non lineari(continua)

Page 3: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 4: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 5: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 6: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 7: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 8: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 9: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 10: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 11: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 11Guido Buzzi-Ferraris

Metodi di sostituzione

Obsoleti

Page 12: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 12Guido Buzzi-Ferraris

Promemoria

Che cosa è lo Jacobiano di un sistema di equazioni?

Page 13: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 14: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 15: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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:

Page 16: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 17: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 18: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 18Guido Buzzi-Ferraris

Metodi di continuazione

Da non portare all’esame

Page 19: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 19Guido Buzzi-Ferraris

Breve parentesi sull’argomento

Come imparare a imparare

Page 20: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 21: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 22: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 23: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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.

Page 24: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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”

Page 25: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 25Guido Buzzi-Ferraris

Chiusa la parentesi sull’argomento

Come imparare a imparare

Page 26: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 27: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 28: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

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

Page 29: Metodi e Applicazioni numeriche nellIngegneria Chimica 1 Guido Buzzi-Ferraris.

Metodi e Applicazioni numeriche nell’Ingegneria Chimica 29Guido Buzzi-Ferraris