28.03.2015 Views

Modellistica e Simulazione

Modellistica e Simulazione

Modellistica e Simulazione

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Appunti sul corso di<br />

MODELLISTICA<br />

E<br />

SIMULAZIONE<br />

tenuto dal Prof. Balestrino e dall’Ing. Caiti<br />

nell’A.A. 1996/97<br />

a cura dello studente Francesco Papariello


Realizzato utilizzando:<br />

Microsoft Word 7.0 per Windows<br />

AutoCAD LT per Windows<br />

Matlab 4.2 per Windows


INDICE<br />

0. Introduzione.....................................................................................................................................7<br />

0.1 <strong>Modellistica</strong> ...............................................................................................................................7<br />

0.2 Identificazione...........................................................................................................................9<br />

0.3 Ottimizzazione ........................................................................................................................10<br />

0.4 <strong>Simulazione</strong> .............................................................................................................................11<br />

Parte I: Ottimizzazione<br />

1. Ottimizzazione statica...................................................................................................................15<br />

1.1 Ottimizzazione statica non vincolata....................................................................................15<br />

1.2 Metodo del gradiente..............................................................................................................15<br />

1.3 Metodo di Newton ..................................................................................................................16<br />

1.4 Direzione di ricerca di Levenberg-Morquardt ....................................................................17<br />

1.5 Metodi quasi-Newton.............................................................................................................17<br />

1.6 Metodi per il calcolo del passo γ i...........................................................................................18<br />

1.6.1 Metodo di Fibonacci ........................................................................................................18<br />

1.6.2 Metodo della sezione aurea ............................................................................................20<br />

1.7 Criteri d’arresto.......................................................................................................................20<br />

1.8 Ricerca del minimo globale....................................................................................................21<br />

1.9 Simulated annealing ...............................................................................................................22<br />

1.10 Algoritmi genetici.................................................................................................................22<br />

1.11 Metodi di approssimazione della funzione f......................................................................23<br />

2. Principio di Bellman......................................................................................................................25<br />

2.1 Esempio n.1: segmento da suddividere in n parti................................................................25<br />

2.2 Esempio n.2: percorso ottimo.................................................................................................26<br />

3. Minimizzazione di un indice di qualità......................................................................................29<br />

3.1 Equazione di Eulero-Lagrange...............................................................................................29<br />

3.2 Condizioni per l’ottimalità della x(t) ....................................................................................31<br />

3.3 Generalizzazioni del problema..............................................................................................32<br />

3.4 Esempio: minimizzazione del percorso che collega due punti...........................................34<br />

4. Funzione hamiltoniana .................................................................................................................35<br />

4.1 Esempio: sistema massa-molla ...............................................................................................36<br />

4.2 Esempio: giuntura di due soluzioni.......................................................................................36<br />

4.3 Condizioni di continuità sulle giunture nel caso generale.................................................38<br />

4.4 Minimizzare un integrale mantenendo costante un altro integrale..................................38<br />

4.5 Esempio: massimizzazione dell’area sottesa da un filo di lunghezza fissata.....................39<br />

4.6 Presenza di un vincolo di disuguaglianza ............................................................................40<br />

5. Applicazione ai sistemi tempo-continui......................................................................................43<br />

5.1 Equazione di Riccati................................................................................................................44<br />

5.2 Caso di sistema lineare stazionario ed indice di qualità quadratico..................................47<br />

5.3 Caso di sistema lineare con indice di qualità dipendente da (x-x d) in modo quadratico47<br />

5.4 Sistemi non lineari ..................................................................................................................49<br />

5.5 Esempio. Curva più corta che unisce due punti..................................................................50<br />

5.6 Esempio. Curva di lunghezza assegnata tale che l’area sottesa sia massima ....................51<br />

5.7 Matrice hamiltoniana.............................................................................................................52<br />

5.8 Proprietà della matrice hamiltoniana ...................................................................................54<br />

5.9 Luogo simmetrico delle radici................................................................................................55


5.10 Esempi....................................................................................................................................57<br />

5.10.1 Filtro di Butterworth.....................................................................................................57<br />

5.10.2 Sistema a fase non minima...........................................................................................57<br />

5.10.3 Sistema a fase minima...................................................................................................58<br />

5.10.4 .........................................................................................................................................58<br />

5.10.5 Sistema instabile a ciclo aperto....................................................................................59<br />

5.10.6 .........................................................................................................................................60<br />

5.10.7 Approssimazione di un ritardo....................................................................................61<br />

5.10.8 .........................................................................................................................................61<br />

5.11 Metodo di Potter per ricavare la soluzione dell’equazione di Riccati .............................61<br />

5.12 Scelta di R e Q .......................................................................................................................62<br />

5.13 Controllo switching..............................................................................................................63<br />

5.14 Gramiano di controllabilità .................................................................................................67<br />

6. Applicazione ai sistemi tempo-discreti .......................................................................................71<br />

6.1 Equazione di Riccati................................................................................................................71<br />

6.2 Indice di qualità ......................................................................................................................74<br />

6.3 Proprietà della matrice hamiltoniana ...................................................................................76<br />

6.4 Luogo reciproco delle radici ..................................................................................................77<br />

6.5 Esempi ......................................................................................................................................78<br />

6.5.1............................................................................................................................................78<br />

6.5.2............................................................................................................................................79<br />

6.5.3............................................................................................................................................80<br />

6.5.4............................................................................................................................................80<br />

6.5.5............................................................................................................................................81<br />

6.6 Filtro di Kalman.......................................................................................................................82<br />

Parte II: <strong>Modellistica</strong> ed Identificazione<br />

7. <strong>Modellistica</strong>....................................................................................................................................87<br />

7.1 Modello ad equazione d’errore (ARX) ..................................................................................89<br />

7.2 Modello ARMAX......................................................................................................................91<br />

7.3 Differenza tra autoregressione e media mobile...................................................................92<br />

7.4 Altri modelli.............................................................................................................................93<br />

7.5 Criteri nella scelta del modello..............................................................................................94<br />

8. Identificazione ...............................................................................................................................95<br />

8.1 Metodo di identificazione ad errore di predizione..............................................................95<br />

8.2 Stima a massima verosimiglianza..........................................................................................97<br />

8.3 Criteri di bontà dell’identificazione......................................................................................99<br />

8.3.1 Disuguaglianza di Cramer-Rao................................................................................... 100<br />

8.3.2 Entropia di informazione............................................................................................. 101<br />

8.3.3 Distanza di informazione di Kullback-Leibler .......................................................... 102<br />

8.4 Criterio di Akaike................................................................................................................. 103<br />

8.5 Metodo della variabile strumentale ................................................................................... 103<br />

8.6 Applicazioni del filtro di Kalman all’identificazione ricorsiva ....................................... 105<br />

8.7 Identificabilità ...................................................................................................................... 106<br />

8.8 Altri metodi di identificazione di sistemi lineari stazionari ............................................ 108<br />

8.9 Riferimenti............................................................................................................................ 109<br />

9. Funzione modulante................................................................................................................... 111<br />

10. Riduzione del modello ............................................................................................................. 113<br />

10.1 Matrice di controllabilità e matrice di osservabilità ...................................................... 113<br />

10.2 Trasformazione bilanciata ................................................................................................ 114<br />

10.3 Modello ridotto nel caso di sistemi tempo-discreti ........................................................ 116<br />

10.4 Modello ridotto nel caso di sistemi tempo-continui ...................................................... 117<br />

11. Filtri di Laguerre ...................................................................................................................... 119<br />

11.1 Funzioni di Laguerre ......................................................................................................... 119<br />

11.2 Analisi di sistemi tempo-continui lineari stazionari...................................................... 119


11.3 Sistemi non lineari............................................................................................................. 121<br />

11.4 Miglioramenti dei filtri di Laguerre ................................................................................ 121<br />

11.5 Generalizzazioni delle funzioni di Laguerre................................................................... 122<br />

12. Cenni sull’identificazione dei sistemi non lineari ................................................................ 125<br />

12.1 Modelli di Hammerstein e di Wiener.............................................................................. 125<br />

13. Reti neurali ............................................................................................................................... 127<br />

13.1 Percettrone ......................................................................................................................... 128<br />

13.2 Reti a due strati .................................................................................................................. 130<br />

13.3 Reti multistrato................................................................................................................... 133<br />

13.4 Back Propagation ............................................................................................................... 134<br />

13.5 Miglioramenti della Back Propagation............................................................................ 135<br />

13.6 Utilizzo delle reti neurali per il controllo di sistemi...................................................... 136<br />

Appendici<br />

A. Inversione di matrici di grandi dimensioni............................................................................. 141<br />

B. Metodi di integrazione numerica ............................................................................................. 143<br />

B.1 Metodo di Eulero.................................................................................................................. 143<br />

B.1.1 Metodo esplicito............................................................................................................ 143<br />

B.1.2 Metodo implicito........................................................................................................... 144<br />

B.2 Metodi a predittore-correttore ........................................................................................... 144<br />

B.2.1 Metodo di Adams-Bashfort .......................................................................................... 145<br />

B.3 Metodi di Runge-Kutta ........................................................................................................ 146<br />

B.4 Sistemi “stiff”........................................................................................................................ 146<br />

B.5 Metodi a passo variabile...................................................................................................... 148<br />

B.6 Tabella riassuntiva ............................................................................................................... 149<br />

C. Teoria della regolarizzazione .................................................................................................... 151<br />

C.1 Problemi mal posti............................................................................................................... 151<br />

C.2 Applicazione al caso dell’approssimazione funzionale.................................................... 152<br />

C.3 Altre funzioni a base radiale............................................................................................... 153


Introduzione<br />

0. INTRODUZIONE<br />

Il corso si occupa di quattro argomenti collegati tra di loro:<br />

• modellistica<br />

• identificazione<br />

• ottimizzazione<br />

• simulazione<br />

0.1 <strong>Modellistica</strong><br />

I sistemi studiati nel corso di Teoria dei Sistemi si potevano distinguere in sistemi tempocontinui<br />

(TC) e sistemi tempo-discreti (TD). Le leggi dei sistemi TC sono date da equazioni alle<br />

derivate parziali o alle derivate ordinarie:<br />

⎧&x = Ax + Bu<br />

⎨<br />

⎩ y = Cx<br />

(sistema TC lineare)<br />

⎧&x<br />

=f ( x, u,t)<br />

⎨<br />

⎩ y=h ( x,t)<br />

(sistema TC non lineare)<br />

Le leggi dei sistemi TD sono date da equazioni alle differenze:<br />

⎧x + 1<br />

= Ax + Bu<br />

⎨<br />

⎩ y<br />

k<br />

= Cx<br />

k<br />

⎧x<br />

k+ 1=f k( x<br />

k, u<br />

k,t)<br />

⎨<br />

⎩ y<br />

k=h k( x<br />

k,t)<br />

k k k<br />

(sistema TD lineare)<br />

(sistema TD non lineare)<br />

Esistono anche sistemi ad eventi discreti, nei quali lo stato varia quando certe situazioni<br />

esterne, dette eventi, variano. I sistemi ad eventi discreti possono essere asincroni (gli eventi<br />

non sono collegati fra di loro) o sincroni (che sono simili ai sistemi TD, perché gli eventi<br />

possono accadere solo ad intervalli regolari di tempo).<br />

Inoltre, esistono anche i sistemi linguistici o sistemi a regole, nei quali l’unico metodo<br />

utilizzabile per specificare le transizioni da uno stato all’altro è quello dato dalle regole di<br />

produzione del tipo if...then, tipiche dei sistemi esperti.<br />

La modellistica si occupa della modellizzazione matematica di un sistema reale. Quando<br />

cercheremo un modello per un sistema dovremo inserire il sistema in una classe.<br />

Possiamo avere diversi modelli per lo stesso sistema perché il modello dipende fortemente<br />

dall’obiettivo che ci si pone. Ad esempio, alcune volte ci può interessare linearizzare un<br />

sistema intorno al suo punto di equilibrio, mentre altre volte ci può interessare lavorare con<br />

un sistema non lineare.<br />

Vediamo come si possono classificare i modelli:<br />

• modelli fisici:<br />

7


Introduzione<br />

• analogici (ad esempio, il sistema massa-molla-smorzatore è equivalente, dal<br />

punto di vista delle equazioni, ad un circuito RLC: per simulare il comportamento di<br />

un ammortizzatore si potrebbe costruire un circuito RLC con i componenti<br />

opportunamente tarati)<br />

• scala ridotta (si costruisce un modello in scala ridotta del sistema)<br />

• modelli matematici<br />

• modelli grafici:<br />

• rappresentazione poli/zeri<br />

• risposta in frequenza<br />

• schema a blocchi<br />

• reti di Petri (per i sistemi ad eventi discreti sincroni o asincroni)<br />

• modelli concettuali (per i sistemi linguistici), contenenti regole di produzione<br />

La scelta tra i vari modelli grafici dipende dalla classe a cui appartiene il sistema. Ad esempio,<br />

la rappresentazione poli/zeri e la risposta in frequenza non possono utilizzate per i sistemi<br />

non lineari.<br />

Per la modellizzazione del sistema si passa attraverso le seguenti fasi:<br />

• definizione del sistema: si isola la parte di mondo fisico a cui siamo interessati<br />

• definizione degli ingressi del sistema:<br />

• ingressi di controllo (sui quali si può agire per controllare il sistema)<br />

• disturbi esterni (in genere identificare tutti i disturbi in ingresso ad un sistema è<br />

abbastanza difficile)<br />

• definizione delle uscite del sistema:<br />

• uscite desiderate<br />

• side-effects (anche queste uscite in genere sono abbastanza difficili da<br />

identificare)<br />

• definizione delle relazioni costitutive del sistema:<br />

• relazioni ingresso-uscita (modellistica a scatola nera: black box)<br />

• relazioni che esprimono la fisica del sistema (definizione e determinazione dello<br />

stato del sistema: modellistica a scatola trasparente)<br />

• relazioni di entrambi i tipi (modellistica a scatola grigia)<br />

La modellistica a scatola nera è la più semplice ma ci fornisce meno informazioni rispetto alla<br />

modellistica a scatola trasparente.<br />

Dopo aver ottenuto un modello del sistema bisogna verificare se esso è valido (fase di<br />

validazione o confutazione 1 del modello). In pratica, per modellare un sistema si segue un<br />

procedimento così schematizzabile:<br />

1<br />

Questa fase è anche detta di confutazione del modello perché il modello viene testato con esperimenti critici,<br />

cercando di confutarlo.<br />

8


Introduzione<br />

dove il blocco decisionale rappresenta un criterio di confronto che dipende dal caso in esame.<br />

Se il modello del sistema è corretto ma i parametri utilizzati sono errati il test dà risultato<br />

negativo. La scelta del modello e quella dei parametri (identificazione) dovrebbero essere<br />

effettuate in due fasi distinte, anche se in pratica vengono svolte quasi contemporaneamente.<br />

0.2 Identificazione<br />

Dopo aver trovato, tramite un’analisi preliminare, una classe di modelli da usare per un<br />

sistema bisogna determinare i parametri del modello.<br />

Ad esempio, nel caso di un sistema TD descritto dalla seguente relazione:<br />

( )<br />

Y( z)<br />

= N z<br />

( )<br />

D( z)<br />

U z<br />

N( z)<br />

= n + n z − 1<br />

0 1<br />

+ ... + n k<br />

z<br />

D( z)<br />

= d + d z − 1<br />

+ ... + d z<br />

0 1<br />

bisogna determinare i parametri n i<br />

e d i<br />

. Per far questo si scelgono degli opportuni segnali<br />

d’ingresso, come gli ingressi permanentemente eccitanti. Questi segnali sono tali da non<br />

annullare le alte frequenze della funzione di trasferimento. Un segnale di questo tipo può<br />

essere un impulso o un rumore bianco.<br />

Ad esempio, si abbia il seguente sistema TD:<br />

⎧x + 1<br />

= ax + bu<br />

⎨<br />

⎩y<br />

k<br />

= cx<br />

k<br />

k k k<br />

L’ingresso all’istante iniziale ( t = 0 ) sia noto e per t = 0 il sistema sia in quiete ( x 0<br />

= 0 ⇒<br />

y 0<br />

= 0). Si ottiene:<br />

⎧x1 = ax0 + bu0<br />

= bu<br />

⎨<br />

⎩y1 = cx1 = cbu<br />

0<br />

n<br />

o<br />

−n<br />

− m<br />

⎧x = ax + bu = abu + bu<br />

⎨<br />

⎩y<br />

2<br />

= cx<br />

2<br />

= cabu0 + cbu1<br />

2 1 1 0 1<br />

9


Introduzione<br />

E così via. Possiamo definire il vettore di parametri θ = c ⋅( b ab a b )<br />

2 L T . Otteniamo:<br />

⎛ y1⎞<br />

⎜ ⎟<br />

⎜ y<br />

2⎟<br />

⎜ M ⎟<br />

⎜ ⎟<br />

⎝ y ⎠<br />

n<br />

⎡u<br />

⎢<br />

= ⎢u<br />

⎣<br />

⎢ M<br />

0<br />

1 0<br />

0 0 L 0⎤<br />

⎥<br />

u 0 L 0⎥<br />

⋅θ<br />

⎦<br />

⎥<br />

che è il sistema da risolvere per calcolare i parametri del modello (gli ingressi devono essere<br />

scelti in modo che la matrice sia invertibile).<br />

In modo alternativo si può definire un vettore θ = ( a b c)<br />

T . Per una certa sequenza 2 di<br />

ingressi U k<br />

= ( u0, u1,..., u k ) la sequenza delle uscite è data da $ = ( y$ , y$ ,..., y$<br />

0 1 ) dove<br />

y$ i<br />

= f( U<br />

k<br />

, θ ) .<br />

$Y k<br />

deriva da una predizione sul comportamento del sistema (viene calcolato). Se<br />

( y , , ..., k )<br />

Y k<br />

=<br />

0<br />

y<br />

1<br />

y deriva dalla misura delle uscite del sistema si possono determinare i<br />

parametri in modo che si abbia:<br />

Y k<br />

k<br />

min Y $<br />

θ<br />

k<br />

− Y<br />

k<br />

2<br />

che dimostra come identificazione ed ottimizzazione siano strettamente correlate.<br />

Alcune volte si vogliono determinare i parametri di un sistema mentre funziona<br />

(identificazione in linea) oppure si vogliono determinare i nuovi parametri nel caso in cui essi<br />

siano variati. Ad esempio, se il nostro sistema è tempo variante:<br />

&x ( t) = A( t) x( t) + B( t) u( t)<br />

e la variazione dei parametri nel tempo è lenta rispetto alla costante di tempo del sistema<br />

possiamo utilizzare per il nostro sistema un modello che non è tempo variante. In linea si<br />

misurano gli ingressi e le uscite del sistema reale e si aggiornano i parametri del modello nel<br />

caso in cui quest’ultimo non riesca a rappresentare correttamente la dinamica del sistema.<br />

0.3 Ottimizzazione<br />

L’ottimazione nel caso del controllo permette di risolvere problemi di controllabilità ed<br />

osservabilità avendo come vincolo quello di minimizzare la spesa per il controllo ( u ) o il<br />

tempo impiegato.<br />

Inoltre l’ottimizzazione, come visto sopra, è uno strumento utile per risolvere molti altri<br />

problemi.<br />

2<br />

Consideriamo le sequenza come se fossero dei vettori.<br />

10


Introduzione<br />

0.4 <strong>Simulazione</strong><br />

Dato il modello di un sistema, un simulatore dà una predizione del comportamento del<br />

sistema. Un simulatore è utile in fase di progetto di un impianto. Esistono due strumenti<br />

software che possono semplificare la sua progettazione:<br />

• CAD (Computer Aided Design): che permette di simulare un sistema (è possibile, ad<br />

esempio, effettuare una verifica della stabilità di un sistema);<br />

• CAE (Computer Aided Engineering): che produce i risultati ed i documenti di un<br />

progetto.<br />

Esistono dei simulatori che non sono totalmente software e che hanno come compito quello di<br />

istruire un operatore:<br />

• simulatori di volo (hanno una cabina simile a quella di un aereo reale)<br />

• addestratori per impianti energetici (ad esempio, centrali nucleari)<br />

In questi casi il simulatore deve essere real-time e deve simulare il più possibile il sistema<br />

reale (deve considerare tutte le dinamiche del sistema reale, anche quelle trascurabili).<br />

11


PARTE<br />

I<br />

OTTIMIZZAZIONE


Ottimizzazione statica<br />

1. OTTIMIZZAZIONE STATICA<br />

1.1 Ottimizzazione statica non vincolata<br />

Il problema che ci poniamo in questo capitolo è quello di determinare (in modo numerico) il<br />

valore di x ∈X<br />

⊂ R<br />

n n<br />

per il quale si ha min f ( x)<br />

, con f : R → R 1<br />

.<br />

x∈X<br />

Dapprima supporremo che il minimo della funzione esista e sia unico 2 .<br />

I metodi per la ricerca del minimo si distinguono in base al tipo di informazioni che<br />

richiedono:<br />

• solo valutazioni della funzione f<br />

∂<br />

• valutazioni della funzione f e del gradiente di f : f = ∇ f ( x)<br />

x<br />

(metodo del gradiente)<br />

∂x<br />

∂<br />

• valutazioni della funzione f , del gradiente di f e della matrice hessiana ( )<br />

2<br />

f = H x<br />

∂x<br />

(metodo di Newton)<br />

Il terzo metodo è quello che richiede maggiore informazione ed è sicuramente il più veloce,<br />

ma anche il più complesso.<br />

1.2 Metodo del gradiente<br />

Il gradiente di una funzione dà delle informazioni sulla sua pendenza:<br />

1<br />

Spesso la funzione f è una norma.<br />

2<br />

Se l’insieme X è compatto e la funzione f è continua, per il teorema di Weirestrass il minimo della funzione<br />

esiste.<br />

15


Ottimizzazione<br />

Nel punto d’inizio è possibile determinare un piano tangente alla curva ed un gradiente<br />

perpendicolare a tale piano. La direzione di ∇ x<br />

f ( x ) è la direzione di massima salita, quindi la<br />

direzione opposta è quella di massima discesa. Ci si può muovere di un “passo” lungo questa<br />

direzione ed arrivare al secondo punto di partenza.<br />

Quindi, la k-esima iterazione del metodo del gradiente è la seguente:<br />

( )<br />

x<br />

+ 1<br />

= x − γ ∇ f x<br />

k k k x k<br />

dove γ k<br />

∈R è il passo di discesa. Il passo di discesa ottimo è quello per il quale il gradiente<br />

del passo attuale e quello del passo successivo sono ortogonali tra di loro:<br />

T<br />

γ k<br />

:<br />

xf( x<br />

k ) xf( x<br />

k )<br />

∇ ∇ =<br />

+ 1<br />

0<br />

Se la funzione ha un minimo ed è convessa il metodo converge, anche se si procede a “zigzag”<br />

effettuando dei passi molto piccoli.<br />

1.3 Metodo di Newton<br />

Questo metodo si basa sullo sviluppo in serie della funzione f troncato al secondo ordine 3 :<br />

1<br />

T<br />

3<br />

( x<br />

k ) = ( x<br />

k ) + ∇<br />

x ( x<br />

k )( x − x<br />

k ) + ( x − x<br />

k ) H( x<br />

k )( x − x<br />

k ) + ( x − x<br />

k )<br />

f f f o<br />

2<br />

Se non ci sono termini di ordine superiore al secondo possiamo calcolare la derivata di f ( x ) in<br />

modo analitico ed azzerarla per ottenere il minimo:<br />

∂<br />

∂x<br />

∂<br />

∂x<br />

f<br />

( x) = ∇ f( x ) + H( x )( x − x )<br />

x<br />

0 0 0<br />

f ( x)<br />

= 0 ⇒ x = x − H( x ) − 1<br />

0 0<br />

∇ xf( x0)<br />

In questo caso il passo ottimo è dato da γ = 1, ∀k . Se nello sviluppo della f ci sono termini di<br />

ordine superiore al secondo bisogna iterare il metodo più volte:<br />

∂<br />

∂x<br />

k<br />

∂<br />

∂x<br />

k<br />

f<br />

( x ) = ∇ f( x ) + H( x )( x − x )<br />

k x k k k<br />

−1<br />

f ( x<br />

k ) = 0 ⇒ x<br />

k+<br />

1<br />

= x<br />

k<br />

− H( x<br />

k ) ∇<br />

xf( x<br />

k )<br />

Con il metodo di Newton non si procede nella direzione del gradiente: la matrice H effettua<br />

una rotazione del vettore ∇ x ( k )<br />

f x senza però “ribaltarlo” (altrimenti si procederebbe nella<br />

direzione di salita, anziché in quella di discesa).<br />

3<br />

Se la funzione f è davvero quadratica il metodo di Newton converge in un passo.<br />

16


Ottimizzazione statica<br />

La matrice H( x k ) è almeno semidefinita positiva (s.d.p.) 4 −1<br />

: H( x k ) ≥ 0 . Quindi, anche H ( x<br />

k )<br />

è s.d.p.<br />

Ad ogni passo di questo metodo bisogna calcolare il gradiente e l’hessiano di f( )<br />

x<br />

k<br />

e questo<br />

può crearci dei problemi nel caso in cui non si riescano ad avere le loro espressioni analitiche:<br />

ad ogni passo bisogna effettuare n 2 valutazioni di f( x<br />

k ) (dovute al calcolo di H( x k )<br />

altre n (dovute al calcolo di ∇ x<br />

f( x k )<br />

del gradiente bisognava effettuare solo n valutazioni della funzione f( x ) ).<br />

), più<br />

) ed un’inversione di matrice (ad ogni passo del metodo<br />

k<br />

1.4 Direzione di ricerca di Levenberg-Morquardt<br />

Spesso la matrice H( x k ) non è d.p. ma solo s.d.p., cioè il suo determinante in alcuni punti è<br />

nullo o quasi nullo. In entrambi i casi la matrice H( x k ) non può essere invertita in modo<br />

numerico.<br />

Se la matrice H( x k ) non è invertibile può essere scritta nella seguente forma (decomposizione<br />

ai valori singolari della matrice H( x k ) ):<br />

T<br />

( ) = ⋅ Σ ( ) ⋅<br />

Σ( x k )<br />

H x U x V<br />

k<br />

k<br />

⎡σ<br />

⎢<br />

= ⎢<br />

⎢<br />

⎣ 0<br />

⎤<br />

⎥<br />

O ⎥ σ ≥L≥<br />

1<br />

σ<br />

σ ⎥<br />

n ⎦<br />

1<br />

0<br />

(siccome H( x k ) è s.d.p. i suoi autovalori sono reali). Se la matrice ( )<br />

allora σ n<br />

= 0 o, in generale, σ<br />

n ≤<br />

H x k<br />

non è invertibile,<br />

ε , dove ε è la precisione di macchina.<br />

Invece di invertire la matrice H( x k ) si può invertire la matrice H( x )<br />

[ ]<br />

T<br />

( k ) + λ = ⋅ Σ ( k ) + λ ⋅<br />

Σ( x )<br />

H x I U x I V<br />

k<br />

k<br />

+ λ I ( λ ∈R , λ > ε ):<br />

⎡σ1 + λ 0 ⎤<br />

⎢<br />

⎥<br />

+ λI<br />

= ⎢ O ⎥<br />

⎣<br />

⎢ 0 σ<br />

n<br />

+ λ⎦<br />

⎥<br />

e σ + n<br />

λ > ε perché λ > ε . Poiché questo metodo introduce il parametro λ si perde in<br />

precisione e velocità. Gli algoritmi che usano la direzione di ricerca di L-M non invertono la<br />

matrice H( x<br />

k ) + λ I sempre ma solo quando ( )<br />

H x k<br />

non è invertibile.<br />

n<br />

1.5 Metodi quasi-Newton<br />

Questi metodi sono meno efficienti di quello di Newton ma più efficienti di quello del<br />

gradiente. Essi utilizzano i gradienti ai passi precedenti in modo da seguire in maniera<br />

4 T<br />

Una matrice A è s.d.p. se x Ax ≥ 0 , ∀x .<br />

17


Ottimizzazione<br />

approssimata la curvatura della funzione (che è data dal suo hessiano). Esistono molti<br />

algoritmi di questo tipo:<br />

• Fletcher-Reeves<br />

• Davidson-Fletcher-Powell<br />

• Polak-Polyak-Ribier-Sorenson<br />

• Broycher-Fletcher-Goldfarb-Shanno<br />

Un passo dell’algoritmo F-R è il seguente:<br />

x = +<br />

x −<br />

1<br />

γ ν<br />

i i i i<br />

dove γ i<br />

∈R è il passo di discesa e ν i<br />

è la direzione di discesa:<br />

ν<br />

( )<br />

= ∇ f x + β −1 ν −1<br />

, β i<br />

∈R<br />

i x i i i<br />

T<br />

( x ) f( x )<br />

T<br />

f( x ) ⋅∇ f( x )<br />

f<br />

= ∇ ⋅∇<br />

∇<br />

x i x i<br />

= ∇ ∇<br />

x<br />

( xi<br />

)<br />

f( x )<br />

x i+ 1 x i+ 1 x + 1<br />

β i 2<br />

Il parametro β i<br />

pesa la nuova direzione di discesa rispetto alle direzioni dei passi precedenti.<br />

Ogni n passi il valore di β i<br />

viene posto a 0.<br />

Con questo metodo, i punti x i<br />

sono disposti all’incirca lungo una spirale tra x 0<br />

ed il minimo<br />

della funzione.<br />

I metodi quasi-Newton sono anche detti metodi dei gradienti coniugati e differiscono tra loro<br />

per la scelta dei β i<br />

. Il costo di un passo di uno di questi metodi è leggermente superiore al<br />

costo di un passo del metodo del gradiente.<br />

f<br />

i<br />

2<br />

1.6 Metodi per il calcolo del passo γ i<br />

Il valore del passo γ i<br />

dovrebbe essere calcolato in modo da minimizzare la funzione di costo<br />

lungo una direzione (la funzione di costo ristretta lungo una direzione diventa una funzione<br />

scalare). Ma calcolare l’estremo di una funzione lungo una semiretta è impossibile, perciò<br />

bisogna determinare gli estremi del segmento lungo il quale minimizzare la funzione. Il primo<br />

estremo è costituito dal punto d’inizio, mentre il secondo è tale che il segmento abbia<br />

lunghezza ∆ max<br />

(da fissare). All’interno di questo segmento è possibile applicare il metodo<br />

delle successioni di Fibonacci o quello della sezione aurea. Supporremo che sul nostro<br />

segmento il minimo della funzione esista e sia unico (un intervallo con questa caratteristica è<br />

detto intervallo di unimodalità 5 ).<br />

1.6.1<br />

.1 Metodo di Fibonacci<br />

Per il calcolo di γ i<br />

può essere utilizzata la successione di Fibonacci, data da:<br />

Quindi:<br />

F 0<br />

= 1, F 1<br />

= 1, ..., F = F + F<br />

k+ 1 k k−1<br />

5<br />

Una funzione che ammette un solo minimo locale è detta unimodale. In questo caso, quindi, il minimo locale è<br />

anche globale.<br />

18


Ottimizzazione statica<br />

F 2<br />

= 2 , F 3<br />

= 3 , F 4<br />

= 5, F 5<br />

= 8, F 6<br />

= 13 , F 7<br />

= 21, ...<br />

Il segmento in cui effettuare la ricerca del minimo sia [ a, b]<br />

:<br />

con l 0<br />

= ∆ max<br />

.<br />

l<br />

Si individua un numero N tale che F ≥ 0 N<br />

, dove ε limita il numero di passi dell’algoritmo<br />

ε<br />

( ε è l’ampiezza minima dei sottointervalli dell’intervallo iniziale che si ottengono durante i<br />

vari passi). Ad esempio, se ε = l 0<br />

10 si ottiene che F 6<br />

= 13, N = 6 .<br />

Si pone ε'= l 0<br />

( ε'≤ ε)<br />

(si divide l’intervallo di lunghezza l<br />

F 0<br />

in F N<br />

intervallini di lunghezza<br />

N<br />

ε' ), si valuta la funzione nei punti di ascisse a , a + F N −1<br />

⋅ ε' , a + F N −2<br />

⋅ ε' e b (rispetto<br />

all’estremo a ) e si elimina l’intervallino del segmento che sicuramente non contiene il<br />

minimo:<br />

Si ripete il procedimento per la parte restante del segmento iniziale. E così via. In queste<br />

iterazioni successive, però, la lunghezza dei segmenti ai quali viene applicato il metodo di<br />

1<br />

l<br />

Fibonacci non è l 0<br />

e quindi bisogna calcolare nuovamente il valore N per il quale F ≥ 0 N<br />

ε .<br />

19


Ottimizzazione<br />

Qualsiasi sia la funzione f , il metodo di Fibonacci dà il massimo rapporto tra la lunghezza<br />

dell’intervallo iniziale e quella dell’intervallo finale con numero di passi fissato.<br />

1.6.2<br />

.2 Metodo della sezione aurea<br />

In questo caso si divide l’intervallo [ a, b]<br />

in tre intervallini: [ a,γ 1 ], [ γ<br />

1, γ<br />

2 ] e [ ]<br />

5 − 1<br />

τ =<br />

2<br />

γ = b − τ( b − a )<br />

1<br />

γ = a + τ( b − a )<br />

2<br />

( γ<br />

1<br />

> γ<br />

2<br />

sempre)<br />

γ 2<br />

,b tali che:<br />

Si scarta l’intervallino che sicuramente non contiene il minimo e si riapplica questo metodo al<br />

sottointervallo di [ a, b ] restante. E così via.<br />

Il metodo della sezione aurea approssima al limite le scelte effettuate con il metodo di<br />

Fibonacci:<br />

lim<br />

k→+∞<br />

Fk<br />

+ 1<br />

5 + 1<br />

=<br />

F 2<br />

k<br />

Con numero di passi arbitrario, il metodo della sezione aurea è più efficiente di quello di<br />

Fibonacci.<br />

1.7 Criteri d’arresto<br />

Tutti gli algoritmi che abbiamo visto per determinare il min ( x)<br />

x<br />

+ 1<br />

= x − γ d<br />

k k k k<br />

x∈X<br />

f sono di tipo iterativo:<br />

dove d k<br />

è la direzione di salita della funzione f . Non è possibile continuare ad applicare il<br />

metodo finché non si arriva esattamente al minimo, ma bisogna utilizzare uno dei seguenti<br />

criteri di arresto:<br />

• xk<br />

+ 1<br />

− xk<br />

≤ ε<br />

1<br />

(nel caso di funzioni di costo molto strette)<br />

• f( xk+ 1) − f( xk)<br />

≤ ε<br />

2<br />

(nel caso di funzioni di costo piatte)<br />

• ∇<br />

xf( x<br />

k )<br />

≤ ε 3<br />

(nel caso di gradiente piatto)<br />

Spesso, invece di calcolare γ k<br />

ad ogni passo, si usa un valore γ fisso. In questo modo si evita<br />

di valutare ripetutamente la funzione di costo, anche se si possono avere dei problemi. Infatti,<br />

si può procedere molto lentamente (se γ è troppo piccolo):<br />

20


Ottimizzazione statica<br />

oppure si può “perdere” il minimo (se γ è troppo grande):<br />

1.8 Ricerca del minimo globale<br />

Nel caso in cui la funzione f non sia unimodale (cioè nel caso in cui la f abbia più minimi<br />

locali ed eventualmente un minimo globale) i metodi visti finora non possono essere applicati.<br />

Gli algoritmi che risolvono problemi di ricerca di minimi globali (algoritmi di global search)<br />

convergono in probabilità verso il minimo globale con un numero di valutazioni tendente<br />

all’infinito. In realtà, i metodi possono essere fermati utilizzando un criterio d’arresto dopo un<br />

certo numero di iterazioni, ottenendo un valore che molto probabilmente è vicino al minimo<br />

globale della funzione. Da questo punto si può calcolare il minimo locale (che, quindi, è molto<br />

probabilmente uguale a quello globale) con uno dei metodi visti sopra.<br />

Algoritmi di global search sono l’algoritmo di simulated annealing ed i genetic algorithms.<br />

Se si vuole trovare il minimo globale di una funzione si potrebbe valutare la funzione su tutto<br />

il dominio con passo fisso. Un approccio del genere può essere ammissibile in R ma non in<br />

R n , con n molto grande.<br />

Questi algoritmi cercano di effettuare i campionamenti in parte in modo casuale ed in parte in<br />

modo guidato. La casualità ci dà la possibilità di “sfuggire” dai minimi locali, mentre la ricerca<br />

guidata ci evita di cercare la soluzione in zone che molto probabilmente non la contengono.<br />

Questi metodi ci permettono di ottenere un valore di x che molto probabilmente è vicino al<br />

minimo globale della funzione. Si può comunque dimostrare che esiste sempre un<br />

controesempio per il quale il minimo globale non si riesce a trovare utilizzando questi<br />

algoritmi.<br />

21


Ottimizzazione<br />

1.9 Simulated annealing<br />

Il passo (k+1)-esimo dell’algoritmo è dato da:<br />

x<br />

k<br />

+<br />

= xk<br />

+<br />

1<br />

∆<br />

dove ∆ è un vettore generato casualmente. Si valuta f( k )<br />

punto se f( xk<br />

+ 1 ) < f( xk)<br />

oppure se f( x<br />

k+ ) − f( x<br />

k ) ≤ T<br />

x +1<br />

e si accetta x k+1<br />

come nuovo<br />

1<br />

(la variabile T è detta temperatura.),<br />

altrimenti x = k+ 1<br />

x<br />

k<br />

(si mantiene il valore precedente). Se il valore di T è alto la<br />

disuguaglianza di sopra si verifica facilmente: tanto più alto è il valore di T , tanto più<br />

l’algoritmo si comporta in modo casuale. Se ad ogni iterazione si diminuisce il valore di T , ad<br />

ogni passo l’algoritmo si comporta sempre di più in modo “intelligente”:<br />

T = +<br />

T − ⋅<br />

1<br />

δ T<br />

k k k<br />

La scelta di δ è critica e dipende dal problema, ma deve essere tale che T k<br />

non decresca molto<br />

velocemente.<br />

1.10<br />

10 Algoritmi genetici<br />

Si codifica x con una stringa di bit. I primi n 1<br />

bit della codifica sono usati per la prima<br />

componente di x , i secondi n 2<br />

bit sono usati per la seconda componente di x , e così via.<br />

Generiamo casualmente N possibili soluzioni x 1<br />

, ... x N<br />

, calcoliamo i valori della funzione di<br />

costo in tali punti ed ordiniamo le soluzioni da quella con valore della f maggiore a quella<br />

con valore della f minore.<br />

Da queste N soluzioni possono esserne generate altre k (ad esempio può essere k = N<br />

2 ) che<br />

sostituiscono le k soluzioni peggiori trovate al passo precedente. Per generare queste nuove<br />

soluzioni possono essere usate due tecniche:<br />

• crossover: si estraggono a caso due soluzioni, che vengono dette genitori, tra le prime<br />

N − k (quelle che abbiamo deciso di conservare), e viene creato un figlio, cioè una<br />

soluzione ottenuta “accorpando” delle parti dei due genitori; ad esempio, nel caso di un<br />

solo taglio si può avere:<br />

22<br />

1 0 0 1 0 1 | 1 0 0 1 1 0 0 0 1 primo genitore<br />

1 1 1 0 0 1 | 0 1 0 1 0 0 0 1 0 secondo genitore<br />

1 0 0 1 0 1 | 0 1 0 1 0 0 0 1 0 figlio<br />

• mutazione: a caso si sceglie un genitore e si crea il figlio in modo che abbia gli stessi bit<br />

del genitore tranne qualcuno che viene invertito.<br />

La scelta della tecnica da usare può essere casuale (ad esempio si può scegliere di applicare il<br />

crossover nel 90% dei casi e la mutazione nel 10% dei casi). Inoltre, nella tecnica del crossover<br />

si potrebbe applicare il taglio in più punti e/o le mutazioni potrebbero avvenire su più bit.<br />

Le mutazioni portano una certa casualità, mentre i crossover permettono di cercare (in modo<br />

casuale) nuove buone soluzioni “assemblando” parti di buone soluzioni.<br />

Le vecchie N − k soluzioni e le nuove k vengono ordinate in base al valore della funzione di<br />

costo e le tecniche di crossover e mutazione vengono applicate nuovamente.


Ottimizzazione statica<br />

In genere in un algoritmo generico il numero N di una popolazione (soluzioni al passo i-<br />

esimo) è abbastanza basso (minore di 100), mentre il numero di iterazioni è abbastanza<br />

elevato (circa 10000).<br />

1.11<br />

11 Metodi di approssimazione della funzione f<br />

Nell’algoritmo di simulated annealing e negli algoritmi genetici il numero di valutazioni della<br />

funzione f è molto elevato. Il tempo di calcolo, quindi, dipende fortemente dal tempo di<br />

valutazione della f . Nei casi in cui il tempo di valutazione della f è molto elevato (dell’ordine<br />

dell’ora) questi metodi non possono essere usati (tipicamente si effettuano almeno 500.000<br />

valutazioni della f prima di ottenere la soluzione).<br />

In questi casi bisogna utilizzare altri metodi oppure si può approssimare la f : se il problema è<br />

in R n possiamo grigliare “rozzamente” (ogni asse viene suddiviso in 2 o 3 parti) lo spazio e<br />

calcolare sulla griglia il valore della funzione di costo. Costruiamo una funzione che<br />

approssimi la f in base a queste informazioni ed utilizzando le funzioni a base radiale. La f<br />

approssimata è data da:<br />

N<br />

( )<br />

f$ 1<br />

= ∑c i<br />

ϕ x,<br />

x i<br />

i=<br />

1<br />

Le funzioni ϕ( x, xi ) sono dette funzioni a base radiale se dipendono solo dalla distanza tra x<br />

ed x i<br />

:<br />

Funzioni di questo tipo sono la gaussiana:<br />

oppure le funzioni multiquadriche:<br />

ϕ<br />

( x, xi ) = ϕ( x − xi<br />

)<br />

ϕ<br />

( )<br />

( x x )<br />

,<br />

i<br />

= e<br />

2<br />

x−xi<br />

2<br />

σ<br />

ϕ x, xi = x − xi + h<br />

I valori dei parametri c i<br />

vengono determinati in modo che nei punti della griglia si abbia:<br />

N<br />

∑ i 1<br />

i=<br />

1<br />

2<br />

( x ) − f ( x )<br />

min f $<br />

che porta ad un sistema di equazioni lineari.<br />

Il tempo di valutazione della funzione f $ 1<br />

è molto basso e a questa funzione possono essere<br />

applicati gli algoritmi genetici o quello di simulated annealing. Quando si è trovato il minimo<br />

di f $ 1<br />

si costruisce una griglia nella zona di R n intorno al minimo trovato e si calcola una<br />

nuova funzione approssimata $ f 1<br />

utilizzando i valori della funzione f nei punti della nuova<br />

griglia e conservando le informazioni trovate al passo precedente:<br />

i<br />

2<br />

23


Ottimizzazione<br />

2N<br />

( )<br />

f$ 2<br />

= ∑ c i<br />

ϕ x,<br />

x i<br />

i=<br />

1<br />

Questo procedimento può essere ripetuto per più passi.<br />

Ai passi successivi al primo otteniamo un’interpolazione su punti sparsi, ma questo non ci crea<br />

problemi utilizzando le funzioni a base radiale 6 .<br />

6<br />

In generale, l’interpolazione può creare dei problemi nel caso in cui i punti nei quali viene campionata la<br />

funzione non siano disposti in modo regolare.<br />

24


Principio di Bellman<br />

2. PRINCIPIO DI BELLMAN<br />

Secondo il principio di Bellman si può arrivare all’ottimo effettuando ad ogni passo la scelta<br />

ottima, supponendo ottime le scelte effettuate ai passi precedenti. Il principio di Bellman si<br />

applica ai problemi partendo dall’ultimo passo e risalendo via via verso il primo.<br />

2.1 Esempio n.1: segmento da suddividere in n parti<br />

Si abbia un segmento di lunghezza l da suddividere in n segmenti di lunghezza x i<br />

in modo<br />

che si abbia max<br />

n<br />

x i<br />

i=<br />

1<br />

∏<br />

n<br />

∑<br />

, con x = l .<br />

i=<br />

1<br />

i<br />

Possiamo provare a risolvere il problema (più immediato) di dividere il segmento in due parti<br />

x 1<br />

ed x 2<br />

tali che x 1<br />

x 2<br />

sia massimo. Se x = 1<br />

x e x = l − x otteniamo:<br />

2<br />

max( x( l − x)<br />

) = max( lx − x<br />

2 )<br />

⇓<br />

∂<br />

( )<br />

∂x lx − x 2<br />

= − 2 x + l =<br />

l<br />

0 ⇒ x = 2<br />

2<br />

l<br />

f1 = max( x1x2<br />

) =<br />

4<br />

Se ora vogliamo suddividere il nostro segmento in tre parti x 1<br />

, x 2<br />

ed x 3<br />

tali che x x x<br />

1 2 3 sia<br />

massimo possiamo supporre che la prima parte (di lunghezza x ) sia già stata scelta<br />

(applichiamo, in pratica, il principio di Bellman). In questo modo, 1’unica scelta che può<br />

portarci all’ottimo è quella di dividere in due parti uguali il segmento restante. Si ottiene:<br />

Calcoliamo il valore ottimo di x :<br />

⎛<br />

f x x x x l − x ⎞<br />

2<br />

=<br />

1 2 3<br />

= ⎜ ⎟<br />

⎝ 4 ⎠<br />

∂<br />

( )<br />

∂x x l 2 x 2<br />

+ − 2 lx 1<br />

2 2<br />

l<br />

= l + 3x − 4lx<br />

= 0 ⇒ x =<br />

4 4<br />

3<br />

Da questo si può estrapolare il fatto che, dividendo il segmento in n parti, la soluzione ottima<br />

è quella di avere tutte le parti di lunghezza l n :<br />

2<br />

25


Ottimizzazione<br />

l<br />

f ( l)<br />

n<br />

= ⎛ ⎝ ⎜ ⎞<br />

⎟<br />

n⎠<br />

Questo si può dimostrare anche per induzione: si suppone vero il teorema per n e lo si<br />

dimostra vero per n +1. In pratica si suppone di dover dividere il segmento in n +1 punti e di<br />

scegliere una parte di lunghezza x e le altre di lunghezza l − x :<br />

n<br />

n+1<br />

Calcoliamo il valore ottimo di x :<br />

⎛<br />

f ( l)<br />

x l − x ⎞<br />

n+ 1<br />

= ⎜ ⎟<br />

⎝ n ⎠<br />

n<br />

∂ ∂<br />

( )<br />

∂x f x ⎡<br />

∂x x ⎛ l − x ⎞<br />

n+<br />

1<br />

= ⎢ ⎜ ⎟<br />

⎣<br />

⎝ n ⎠<br />

n<br />

⎤ ⎛ l − x⎞<br />

⎥ = ⎜ ⎟<br />

⎦<br />

⎝ n ⎠<br />

⇓<br />

l<br />

x =<br />

n + 1<br />

+ 1 n−1<br />

⎛ l − ( n + 1)<br />

x⎞<br />

⋅ ⎜ ⎟ = 0<br />

⎝ n ⎠<br />

2.2 Esempio n.2: percorso ottimo<br />

Consideriamo una città di partenza, una di arrivo e delle stazioni intermedie. Le strade che<br />

collegano le varie città abbiano un costo come indicato nel grafo seguente:<br />

Le linee tratteggiate indicano le tappe del percorso (ogni percorso possibile deve passare una<br />

ed una sola volta per ogni tappa).<br />

Per trovare il percorso ottimo (di costo minimo) da A 0<br />

ad A 6<br />

si potrebbero esplorare tutti i<br />

percorsi possibili, ma questo può essere non efficiente, anche se il numero dei percorsi<br />

possibili da A 0<br />

ad A 6<br />

è finito.<br />

Anche questo problema può essere risolto con il principio di Bellman: si parte dall’ultima<br />

tappa e si procede a ritroso. Ad ogni passo si sceglie l’arco migliore che collega le varie città<br />

della tappa corrente con il resto del percorso già scelto. Nel grafo seguente su ogni nodo è<br />

indicato il costo del percorso ottimo da quel nodo ad A 6<br />

:<br />

26


Principio di Bellman<br />

27


Minimizzazione di un indice di qualità<br />

3. MINIMIZZAZIONE DI UN INDICE DI<br />

QUALITÀ<br />

3.1 Equazione di Eulero-Lagrange<br />

Vediamo un esempio in cui il numero di possibili soluzioni di un problema è infinito. In<br />

questo caso non si può trovare la soluzione ottima esaminando tutte le possibili soluzioni.<br />

Determiniamo la funzione x( t ) tale che risulti minimo l’integrale:<br />

Il nostro problema è quello di determinare il<br />

Consideriamo fissi t f<br />

ed x x( t )<br />

(3.1) ( )<br />

t f<br />

J = ∫ F x, x&,τ dτ<br />

t0<br />

min ,<br />

J = V( x0 t<br />

0 ) con x<br />

0<br />

x( t<br />

0)<br />

( )<br />

x t<br />

= .<br />

f<br />

=<br />

f<br />

e supponiamo che la funzione x( t ) esista e che si possa<br />

calcolare in qualche modo. Un caso generale dell’integrale (3.1) è il seguente, in cui abbiamo<br />

sostituito t a t 0<br />

:<br />

Possiamo porre:<br />

t f<br />

( , &, )<br />

J'<br />

= ∫ F x x τ dτ<br />

t<br />

x( t)<br />

t f<br />

( τ) τ ( )<br />

min ∫ F x, x&, d = V x,<br />

t<br />

Otteniamo:<br />

t f<br />

t+<br />

∆<br />

t f<br />

⎧⎪<br />

⎫⎪<br />

min F( x, x&, ) d min F( x, x&, ) d F( x, x&,<br />

) d<br />

x( t)<br />

∫ τ τ = ⎨ τ τ τ τ<br />

x( t)<br />

∫ + ∫ ⎬<br />

t<br />

⎩⎪ t<br />

t<br />

⎭⎪ =<br />

+ ∆<br />

Se ∆ è piccolo si ottiene:<br />

t<br />

t+<br />

∆<br />

t f<br />

⎧<br />

⎫ ⎧⎪<br />

⎫⎪<br />

= min ⎨ F( x, x&, τ)<br />

dτ min F x, x&, τ dτ<br />

V x,<br />

t<br />

x( t)<br />

∫ ⎬ + ⎨<br />

x( t)<br />

∫ ⎬<br />

⎩ t ⎭ ⎩⎪ t<br />

⎭⎪ =<br />

+ ∆<br />

( ) ( )<br />

29


Ottimizzazione<br />

t f<br />

⎧⎪<br />

⎫⎪<br />

min ⎨ F x, x&, d V x x& , t<br />

x( t)<br />

∫ ⎬<br />

⎩⎪ t+<br />

⎭⎪ = + +<br />

∆<br />

( τ) τ ( ∆ ∆)<br />

Quindi:<br />

( + & ∆, + ∆) − ( , )<br />

t+<br />

∆<br />

⎧V x x t V x t 1<br />

min⎨<br />

+ ∫ F x x<br />

⎩ ∆<br />

∆<br />

t<br />

⇓<br />

⎧dV( x,<br />

t)<br />

⎫<br />

min⎨<br />

+ F( x, x&,<br />

t)<br />

⎬<br />

&x ( t)<br />

⎩ dt<br />

⎭ = 0<br />

( , &, τ)<br />

⎫<br />

dτ⎬<br />

= 0<br />

⎭<br />

Ci siamo ridotti a calcolare il valore di &x che ci permette di spostarci lungo la direzione ottima<br />

(ci siamo ridotti al calcolo di &x in un punto). Una condizione limite è data da:<br />

Otteniamo:<br />

V( x, t f ) ≡ 0 ∀x<br />

(3.2)<br />

( , ) ⎡∂V( x,<br />

t)<br />

∂V x t<br />

∂t<br />

⎤<br />

+ min⎢<br />

x&<br />

+ F( x, x&,<br />

t)<br />

x&<br />

⎣ ∂x<br />

⎥ = 0<br />

⎦<br />

Abbiamo ottenuto un’equazione alle derivate parziali del primo ordine con un operatore di<br />

∂V( x,<br />

t)<br />

ottimizzazione. Affinchè x&<br />

+ F( x, x&,<br />

t)<br />

sia minimo (rispetto ad &x ) deve essere:<br />

∂x<br />

(3.3)<br />

( , )<br />

∂ ⎡∂V x t<br />

∂x&<br />

⎢<br />

⎣ ∂x<br />

( , &, )<br />

x&<br />

+ F x x t<br />

( , ) ∂F( x, x&,<br />

t)<br />

⎤ ∂V x t<br />

⎥ = + = 0<br />

⎦ ∂x<br />

∂x&<br />

Possiamo sostituire la (3.2) con il seguente sistema:<br />

(3.4)<br />

( , ) ∂V( x,<br />

t)<br />

x&<br />

F( x, x&,<br />

t)<br />

∂t<br />

∂x<br />

∂V( x, t) ∂F( x, x&,<br />

t)<br />

⎧∂V x t<br />

⎪<br />

+ + = 0<br />

⎨<br />

⎩⎪<br />

∂x<br />

+<br />

∂x&<br />

= 0<br />

( , )<br />

( )<br />

∂V x t<br />

Sostituiamo con − ∂ F x, x&,<br />

t<br />

nella prima equazione e poi eliminiamo la funzione V<br />

∂x<br />

∂x&<br />

derivando in ∂x la prima equazione e in ∂t la seconda equazione:<br />

⎧<br />

2<br />

∂ V x t<br />

⎪ ∂x∂t<br />

⎨<br />

⎪<br />

⎩⎪<br />

( , ) ∂ ⎛ ∂F( x, x&,<br />

t) ⎞ ∂F( x, x&,<br />

t)<br />

− ⎜<br />

∂x<br />

⎝<br />

∂ V x t<br />

∂x∂t<br />

∂x&<br />

( , ) ∂ F( x, x&,<br />

t)<br />

2 2<br />

x&<br />

⎟ + = 0<br />

⎠ ∂x<br />

+ = 0<br />

∂t∂x&<br />

30


Minimizzazione di un indice di qualità<br />

Otteniamo:<br />

(3.5)<br />

d<br />

dt<br />

( , &, ) ∂ F( x, x&,<br />

t) ∂F( x, x&,<br />

t)<br />

2 2<br />

∂ F x x t<br />

+ x&<br />

− = 0<br />

∂t∂x&<br />

∂x∂x&<br />

∂x<br />

⇓<br />

⎛ ∂F( x, x&,<br />

t) ⎞ ∂F( x, x&,<br />

t)<br />

⎜ ⎟ − = 0 (equazione di Eulero-Lagrange)<br />

⎝ ∂x&<br />

⎠ ∂x<br />

Per risolvere un’equazione differenziale abbiamo bisogno delle condizioni iniziali. In questo<br />

caso, invece, abbiamo una condizione iniziale ( t , x ) e una finale ( t x )<br />

0 0<br />

esistenza ed unicità della soluzione (Cauchy) non è più valido.<br />

Ad esempio, se la F è tale che la (3.5) diventi:<br />

si ottiene:<br />

&&x<br />

+ x = 0<br />

x( t)<br />

= A cost + Bsen<br />

t<br />

f<br />

,<br />

1<br />

e il teorema di<br />

Se t 0<br />

= 0 ed x( t 0 ) = 0 , allora x( t)<br />

= Bsen t ( A = 0). Per calcolare B bisogna imporre la<br />

f<br />

relazione x<br />

f<br />

= Bsen t<br />

f<br />

. Se t f<br />

= π 3<br />

B<br />

, otteniamo l’unica soluzione x<br />

f<br />

= B<br />

= x 2<br />

f<br />

. Ma se t 3 f<br />

= 0 si hanno infinite soluzioni possibili.<br />

3<br />

2<br />

⇒<br />

3.2 Condizioni per l’ottimalità della x(t)<br />

Nella trattazione precedente abbiamo fissato t e x e abbiamo cercato il valore di &x che<br />

minimizzasse J' . Per verificare che questo valore di &x sia davvero tale da minimizzare l’indice<br />

∂V( x, t) ∂F( x, x&,<br />

t)<br />

di qualità bisogna derivare + in ∂&x e verificare che il risultato sia positivo:<br />

∂x<br />

∂x&<br />

(3.6)<br />

∂ ⎡∂V x t<br />

∂x&<br />

⎢<br />

⎣ ∂x<br />

2<br />

( , ) ∂F( x, x&,<br />

t) ⎤ ∂ F( x, x&,<br />

t)<br />

+<br />

∂x&<br />

⎥ = ><br />

⎦ ∂x&<br />

2<br />

0<br />

Questa è la condizione necessaria per l’ottimalità.<br />

Se abbiamo due soluzioni &x m ed &x , con x& m ≠ x&<br />

, otteniamo:<br />

( , &, )<br />

F x x t<br />

( , ) ∂V( x,<br />

t)<br />

∂V x t<br />

∂V x t<br />

m<br />

+ + x& ≤ F( x, x& , t)<br />

+ +<br />

∂t<br />

∂x<br />

∂t<br />

∂V( x,<br />

t) F ( x x t ) F ( x x<br />

m t )<br />

x (<br />

m<br />

, &, − , & , ≤ x&<br />

− x&<br />

∂ )<br />

( , ) ∂V( x,<br />

t)<br />

∂x<br />

x&<br />

m<br />

1<br />

I problemi in cui è data una condizione iniziale ed una finale sono detti two-point boundary-value problems.<br />

31


Ottimizzazione<br />

Inoltre, siccome in entrambi i casi si ha un minimo e quindi in entrambi i casi vale la<br />

relazione (3.3), otteniamo:<br />

( , &, ) (<br />

m<br />

x&<br />

x&<br />

)<br />

∂F x x t<br />

F ( x x t ) F ( x x<br />

m<br />

, &, − , & , t ) ≤ −<br />

∂x&<br />

3.3 Generalizzazioni del problema<br />

In alcuni casi non ci interessa partire da un punto preciso o arrivare in un punto preciso ma<br />

ci interessa solo che il punto iniziale e/o il punto finale appartengano ad una curva. Ad<br />

esempio, si può avere un problema in cui x f<br />

è fisso, mentre x 0<br />

può muoversi lungo la retta<br />

t = t 0<br />

:<br />

Esistono infinite funzioni V considerando i vari punti ( t x )<br />

possibili quella ottimale è tale che:<br />

, sulla retta. Tra tutte le scelte<br />

0 0<br />

( , )<br />

∂V x t<br />

∂x<br />

t = t 0<br />

= 0<br />

Questa condizione deve essere aggiunta alle (3.4) e (3.6).<br />

Inoltre, siccome vale ancora la (3.3), questa equazione diventa la seguente:<br />

( , &, )<br />

∂F x x t<br />

∂&<br />

x<br />

t=<br />

t 0<br />

= 0<br />

Analogamente, se x f<br />

è libero di muoversi lungo la retta t<br />

= t f<br />

si ha la seguente equazione:<br />

( , &, )<br />

∂F x x t<br />

∂&<br />

x<br />

t=<br />

t f<br />

= 0<br />

32


Minimizzazione di un indice di qualità<br />

da aggiungere alle (3.4) e (3.6).<br />

Si può avere una situazione ancora più generale: possiamo partire da un punto ( x , t )<br />

qualsiasi su una curva c( t ) :<br />

0 0<br />

Anche in questo caso esistono infinite funzioni V considerando i vari punti ( t<br />

0<br />

x<br />

0 )<br />

curva. Tra tutte le scelte possibili quella ottimale è tale che:<br />

, sulla<br />

( , ) ∂V( x,<br />

t)<br />

⎛ ∂V x t<br />

⎜<br />

⎝ ∂x<br />

x&<br />

+<br />

∂t<br />

⎞<br />

⎟ = 0 ⇒<br />

⎠<br />

x=<br />

c( t )<br />

( , ) ∂V( x,<br />

t)<br />

∂V x t<br />

∂x<br />

c&<br />

+ = 0<br />

∂t<br />

Utilizzando la prima equazione delle (3.4) si ottiene:<br />

Infine, per la (3.3) si ha:<br />

( , ) ∂V( x,<br />

t)<br />

∂V x t<br />

∂x<br />

( , &, ) ( c& x& ) F ( x, x&,<br />

t )<br />

∂F x x t<br />

∂x&<br />

( , &, )<br />

c&<br />

− x&<br />

− F x x t = 0<br />

∂x<br />

− + = 0 (condizione di trasversalità)<br />

Questa condizione è detta di trasversalità perché il segmento più corto che congiunge un<br />

punto qualsiasi su una circonferenza con un punto qualsiasi su un’altra circonferenza è quello<br />

che giace sulla retta che congiunge i due centri: tale segmento esce con un angolo di 90° dalle<br />

due circonferenze:<br />

33


Ottimizzazione<br />

Le equazioni ottenute sopra e dovute al fatto di avere x 0<br />

e/o x f<br />

giacenti su una curva si<br />

aggiungono alle (3.4) e (3.6) e sostituiscono le condizioni iniziali e finali.<br />

Finora abbiamo esaminato il caso in cui x è una variabile scalare. Nel caso multidimensionale<br />

si ottengono gli stessi risultati sostituendo ∂<br />

∂x con ∇ x e ∂ ∂&x con ∇ &x .<br />

3.4 Esempio: minimizzazione del percorso che collega<br />

due punti<br />

Cerchiamo la curva di lunghezza minima che collega due punti. L’integrale da minimizzare è<br />

il seguente:<br />

2<br />

dove 1+ x&<br />

= (&,<br />

)<br />

Siccome<br />

t f<br />

J = ∫ 1 2<br />

+ x&<br />

dt<br />

F x t è la distanza elementare.<br />

∂F( x&<br />

)<br />

= 0 , l’equazione di E-L diventa:<br />

∂x<br />

t 0<br />

d<br />

dt<br />

∂F( x&<br />

)<br />

∂x&<br />

=<br />

d<br />

dt<br />

∂<br />

1+<br />

x&<br />

∂x&<br />

2<br />

= 0<br />

⇒<br />

∂<br />

1+<br />

x&<br />

∂x&<br />

2<br />

=<br />

2<br />

cost ⇒ ( 1 x&<br />

)<br />

1<br />

−<br />

2<br />

+ ⋅ x&<br />

=<br />

x&<br />

1+<br />

x&<br />

2<br />

= cost<br />

Siccome l’equazione di sopra dipende solo da &x e deve essere sempre vera, allora &x deve<br />

essere costante. Quindi, tutte le possibili curve con pendenza costante (rette) sono soluzioni<br />

del problema.<br />

Se utilizziamo le condizioni iniziale e finale si ottiene che la curva più corta che congiunge i<br />

due punti è il segmento che li unisce.<br />

34


Funzione hamiltoniana<br />

4. FUNZIONE HAMILTONIANA<br />

Definiamo la variabile aggiunta o variabile momento nel seguente modo:<br />

( , &, ) ∂V( x,<br />

t)<br />

∂F x x t<br />

p = = −<br />

∂x&<br />

La variabile p è (a meno di un segno) il gradiente di V e deve essere continua: V è definita<br />

come integrale di F e, se F è continua, il suo integrale è continuo.<br />

Definiamo la funzione hamiltoniana H nel seguente modo:<br />

∂x<br />

Ma, per le (3.4) è anche<br />

( , &, )<br />

∂<br />

H = x&<br />

F x x t − F x x t = xp − F x x t<br />

∂x&<br />

( , )<br />

( , &, ) & ( , &, )<br />

( , )<br />

∂<br />

H = −x&<br />

V x t<br />

∂V x t<br />

− F( x, x&,<br />

t)<br />

=<br />

∂x<br />

∂t<br />

∂H<br />

∂x<br />

( , &, )<br />

= − d ∂F x x t<br />

dt ∂x&<br />

= −p &<br />

&x = ∂ H<br />

∂p<br />

. Otteniamo:<br />

Con la definizione di p ed H possiamo trasformare l’equazione di Eulero-Lagrange, che è<br />

un’equazione differenziale del secondo ordine, in un sistema di equazioni differenziali del<br />

primo ordine:<br />

⎧ ∂H<br />

p&<br />

= −<br />

⎪ ∂x<br />

⎨ ∂H<br />

x&<br />

=<br />

⎩⎪<br />

∂p<br />

(formulazione hamiltoniana)<br />

La funzione H è tale che la sua derivata totale rispetto al tempo è uguale alla sua derivata<br />

parziale rispetto al tempo:<br />

dH ∂H ∂H dt t x x ∂H p p ∂H ∂H ∂H ∂H ∂H ∂H<br />

= + & + & = + − =<br />

∂ ∂ ∂ ∂t ∂x ∂p ∂p ∂x ∂t<br />

Nella pratica generalmente H è costante nel tempo:<br />

∂H<br />

∂t<br />

= 0 ⇒<br />

dH = 0 ⇒ H = cost<br />

dt<br />

35


Ottimizzazione<br />

Si può dimostrare che, se x è continua, anche p è continua. Possiamo ottenere altre due<br />

equazioni in cui t ed H sono coniugati tra di loro:<br />

&H = ∂ H<br />

∂ t<br />

t= 1=<br />

∂ H<br />

∂H<br />

Se il tempo è continuo (se il problema è formulato bene ci aspettiamo che lo sia) anche H è<br />

continua.<br />

4.1 Esempio: sistema massa-molla<br />

Se la funzione F è la lagrangiana L di un sistema dinamico (differenza tra energia cinetica ed<br />

energia potenziale), applicando le equazioni di sopra otteniamo le equazioni fondamentali<br />

della dinamica.<br />

Consideriamo una massa m collegata ad una molla di costante elastica k . Otteniamo:<br />

Applicando l’equazione di E-L otteniamo:<br />

& 2<br />

T =<br />

mx<br />

2<br />

(energia cinetica)<br />

V =<br />

kx 2<br />

2<br />

(energia potenziale)<br />

mx& kx<br />

L = −<br />

2 2<br />

( , &, ) d ∂L( x, x&,<br />

t)<br />

∂L x x t<br />

∂x<br />

d<br />

− = 0 ⇒ kx + ( mx& ) = 0<br />

dt ∂x&<br />

dt<br />

( mx& è la quantità di moto del sistema).<br />

Quindi, la somma della quantità di moto e della forza elastica è nulla. Se m è costante,<br />

otteniamo mx && = − kx , dove &&x è l’accelerazione del sistema.<br />

2 2 2 2<br />

∂L( x, x&,<br />

t)<br />

mx&<br />

kx mx&<br />

kx<br />

2<br />

Possiamo definire p = = mx& e H = mx&<br />

− + = + . H non dipende<br />

∂x&<br />

2 2 2 2<br />

dal tempo, quindi d H = 0 (principio di conservazione dell’energia).<br />

dt<br />

Se l’i-esima componente di x non è esplicitamente presente in H , la derivata di H rispetto a<br />

quella componente è nulla e quindi l’i-esima componente di p è costante (otteniamo il<br />

principio di conservazione della quantità di moto).<br />

4.2 Esempio: giuntura di due soluzioni<br />

Minimizziamo il seguente integrale:<br />

36


Funzione hamiltoniana<br />

tra i punti ( 0, 0)<br />

e ( 2 1)<br />

2<br />

∫ 2 2<br />

( 1 & )<br />

0<br />

J = y − y dt<br />

2<br />

2<br />

, . La quantità y ( 1− y& ) [= F( y y t)<br />

, &, ] è sicuramente non negativa. Si<br />

potrebbe minimizzare l’integrale di sopra ponendo y = 0 oppure &y = 1 ma nessuna di queste<br />

è soluzione (entrambe non passerebbero per ( 0, 0)<br />

e ( 2 1)<br />

otteniamo:<br />

Se y ≠ 0 otteniamo:<br />

( , &, ) d ∂F( y, y&,<br />

t)<br />

∂F y y t<br />

∂y<br />

− = 0<br />

dt ∂y&<br />

⇓<br />

2<br />

2<br />

2y( 1 − y & ) + d<br />

2( 1 ) 0<br />

dt y ⋅ − y&<br />

=<br />

⇓<br />

( ) 2<br />

( )<br />

y 1− y& + 2yy & 1− y& − && yy = 0<br />

( ) 2<br />

( )<br />

1− y& + 2y& 1− y& − && y = 0<br />

, ). Applicando l’equazione di E-L<br />

Possiamo porre:<br />

( , &, )<br />

∂F y y t<br />

p = = −2y<br />

2 1−<br />

∂y&<br />

( y&<br />

)<br />

2<br />

( ) ( 1 )<br />

H = yp & − F y, y&, t = yp & − y − y&<br />

2<br />

Siccome H non dipende esplicitamente dal tempo, allora H = cost , quindi:<br />

Siccome la curva deve passare per ( 0 0)<br />

( ) ( )<br />

− 2y 2 y& 1− y& − y 2 1− y& = cost<br />

, (punto iniziale) e in quel punto H = 0 , sarà<br />

H = 0 sempre. La funzione H è nulla o perché y = 0 o perché 1− &y = 0.<br />

Quindi, la soluzione esatta del problema non esiste. Si possono “giuntare” le due soluzioni<br />

y = 0 e &y = 1:<br />

2<br />

37


Ottimizzazione<br />

In questo caso H e p sono continue. Se H e p non sono continue, la soluzione trovata<br />

giuntando due soluzioni “parziali” deve essere scartata.<br />

4.3 Condizioni di continuità sulle giunture nel caso<br />

generale<br />

Le condizioni di continuità in una giuntura centrata all’istante τ sono le seguenti:<br />

• x( τ<br />

− ) = x( τ<br />

+ )<br />

• p( τ<br />

− ) = p( τ<br />

+ )<br />

• H( τ ) = H( τ )<br />

− +<br />

Queste condizioni possono essere espresse anche in funzione di F:<br />

• ∂ F ( x, x&,<br />

t ) ∂F ( x, x&,<br />

t<br />

=<br />

)<br />

∂x&<br />

∂x&<br />

( )<br />

⎛ ∂F x, x&,<br />

t<br />

• ⎜<br />

⎝ ∂x&<br />

τ − τ +<br />

( , &, )<br />

⎞ ∂F x x t<br />

x&<br />

− F( x, x&,<br />

t)<br />

x&<br />

F( x, x&,<br />

t)<br />

⎠<br />

⎟ = ⎛<br />

⎜<br />

⎝ ∂x&<br />

− ⎞<br />

⎟<br />

⎠<br />

τ − τ +<br />

4.4 Minimizzare un integrale mantenendo costante un<br />

altro integrale<br />

Minimizziamo il seguente integrale:<br />

mantenendo costante il seguente integrale:<br />

t1<br />

( )<br />

J = ∫ F1<br />

x, x&,τ dτ<br />

t0<br />

38


Funzione hamiltoniana<br />

t1<br />

( )<br />

k = ∫ F2<br />

x, x&,τ dτ<br />

t 0<br />

Se F 2<br />

è la lunghezza infinitesima di un filo di lunghezza assegnata i cui estremi sono fissi<br />

sull’asse delle ascisse e − F 1<br />

è l’area compresa tra il filo e tale asse, il problema è quello di<br />

disporre il filo in modo che sottenda un’area massima. In maniera intuitiva sappiamo che in<br />

questo caso il filo deve essere disposto in modo da formare un arco di circonferenza.<br />

Possiamo porre:<br />

con q( t 0 ) = 0 e q( t )<br />

1<br />

= k .<br />

t<br />

( ) ( , &,τ)<br />

τ ⇒ q&<br />

( t) F ( x, x&,<br />

t)<br />

q t = ∫ F2<br />

x x d<br />

t 0<br />

La funzione da minimizzare diventa F( x, x&, t) = F ( x, x&, t) + ( t) q& ( t) − F ( x, x&,<br />

t)<br />

t1<br />

∫<br />

= 2<br />

[ ]<br />

λ :<br />

1 2<br />

{ 1( ) + ( ) ⋅[ ( ) −<br />

2( )]}<br />

min F x, x&, τ λ τ q τ F x, x&,<br />

τ dτ<br />

t 0<br />

Se massimizziamo λ e se &q ≠ F 2<br />

otteniamo sicuramente che il minimo di F tende all’infinito.<br />

Questo obbliga &q = F 2<br />

.<br />

L’equazione di Eulero-Lagrange rispetto ad x è la seguente:<br />

∂<br />

{ F1 ( x, x&, t) + λ( t) [ q& ( t) − F2<br />

( x, x&,<br />

t)<br />

]}<br />

quella rispetto a λ è:<br />

∂x<br />

mentre quella rispetto alla q è la seguente:<br />

{ ( , &, ) λ( )[ &( ) ( , &, )]}<br />

d ∂<br />

−<br />

dt ∂x F x x t + t q t −<br />

&<br />

F x x t =<br />

&q<br />

− F2 = 0<br />

1 2<br />

0<br />

{ ( , &, ) λ( )[ &( ) ( , &, )]}<br />

d ∂<br />

− + − =<br />

dt ∂q&<br />

F x x t t q t F x x t<br />

1 2<br />

0 ⇒<br />

dλ( t)<br />

dt<br />

= 0 ⇒ λ( t ) = λ = cost<br />

Poiché λ è costante, possiamo derivare la prima equazione ricavando la x . Infine, imponendo<br />

( )<br />

q t<br />

1<br />

= k , riusciamo a calcolare λ .<br />

Scambiando l’operatore di minimo con quello di massimo ed F 1<br />

con F 2<br />

si può risolvere il<br />

problema duale.<br />

4.5 Esempio: massimizzazione dell’area sottesa da un<br />

filo di lunghezza fissata<br />

Calcoliamo la curva di lunghezza fissata che sottende un’area massima:<br />

39


Ottimizzazione<br />

L’integrale da massimizzare è<br />

Definiamo la funzione:<br />

B<br />

2<br />

∫ ydt , con ∫ 1+ &y dt = l .<br />

A<br />

B<br />

A<br />

( ) ( )<br />

F y, y&, t = y + λ t 1+<br />

y&<br />

F è indipendente da t . Quindi, la H deve essere costante:<br />

( , &, )<br />

∂<br />

H = y&<br />

F y y t<br />

− F( y, y&,<br />

t)<br />

= c<br />

∂y&<br />

⇓<br />

2<br />

y + λ 1+ y&<br />

− λ<br />

( y c )<br />

y&<br />

2<br />

1+<br />

y&<br />

⇓<br />

2<br />

2 λ<br />

+<br />

1<br />

=<br />

1 + y &<br />

2<br />

1<br />

+ c = 0<br />

2 1<br />

Le soluzioni di quest’equazione differenziale le soluzioni sono circonferenze del tipo:<br />

2<br />

( x c<br />

2 ) ( y c1)<br />

+ + + =<br />

Poiché i due punti A e B sono fissi quest’equazione rappresenta tutti gli archi di<br />

circonferenza che passano per i due punti. Il parametro λ ci permette di scegliere tra tutti<br />

questi archi la soluzione cercata, cioè l’arco la cui lunghezza è l .<br />

La soluzione al problema non può esistere in alcuni casi, ad esempio se l < B − A .<br />

2<br />

2<br />

2<br />

λ<br />

4.6 Presenza di un vincolo di disuguaglianza<br />

Il problema che ci poniamo in questo paragrafo è quello minimizzare il seguente integrale:<br />

40


Funzione hamiltoniana<br />

t1<br />

( )<br />

J = ∫ F x, x&,<br />

t dt<br />

t 0<br />

con il vincolo x( t) ≥ ϕ ( t)<br />

⇒<br />

2<br />

x( t) − ϕ( t) = z ( t)<br />

≥ 0. Sulla frontiera del vincolo si ha<br />

z = 0 .<br />

Derivando la disequazione precedente si ottiene:<br />

Riportando il problema in z si ottiene:<br />

x& − ϕ& = 2 zz&<br />

⇒ x& = ϕ& + 2zz&<br />

t1<br />

∫<br />

2<br />

( ϕ, ϕ& 2 &, t)<br />

J = F z + + zz dt<br />

t 0<br />

Possiamo estremizzare quest’integrale rispetto alla variabile z . Applichiamo l’equazione di E-<br />

L:<br />

2 2<br />

( + ϕ, ϕ& + 2zz& ) d ∂F( z + ϕ, ϕ& + 2zz&<br />

)<br />

∂F z<br />

∂z<br />

−<br />

dt ∂z&<br />

⇓<br />

⎡∂F( x x t) d ( )<br />

2z<br />

∂F x x t ⎤<br />

⎢ −<br />

0<br />

⎣ ∂x<br />

dt ∂x&<br />

⎥ =<br />

⎦<br />

Una soluzione è quella data da z = 0 (frontiera del vincolo). Un’altra soluzione si ottiene<br />

risolvendo l’equazione di E-L come se non ci fosse il vincolo.<br />

La soluzione al problema si ottiene giuntando la soluzione ottenuta come se il vincolo non<br />

esistesse con porzioni della frontiera del vincolo.<br />

Ad esempio, se il vincolo è un cerchio, si ottiene:<br />

= 0<br />

Esistono due soluzioni possibili e quindi due minimi locali del problema. Il minimo globale<br />

può essere ottenuto per confronto diretto.<br />

41


Applicazione ai sistemi tempo-continui<br />

5. APPLICAZIONE AI SISTEMI TEMPO-<br />

CONTINUI<br />

Si abbia un sistema la cui dinamica è descritta dalla seguente equazione:<br />

( )<br />

x& = f x, u,<br />

t<br />

Si abbia la condizione iniziale x 0<br />

all’istante t 0<br />

e un indice di qualità:<br />

t f<br />

( , , τ ) τ Φ ( x , )<br />

J = ∫ l x u d +<br />

f<br />

t<br />

t0<br />

L’integrale tiene conto dell’intero intervallo in cui si svolge il controllo, mentre Φ tiene conto<br />

solo dello stato finale del sistema. L’intervallo [ t t f ]<br />

0<br />

, è detto orizzonte di controllo.<br />

Nel controllo classico in genere è t = 0 e t f<br />

→ ∞ . Spesso, però, ci interessa che un sistema<br />

abbia determinate proprietà solo fino ad un istante t f<br />

≠ ∞ (magari dopo quell’istante il<br />

sistema si distrugge o non viene più usato):<br />

Se t 0<br />

, t f<br />

ed x 0<br />

sono fissati, la soluzione ottima è tale che:<br />

t<br />

⎡ f<br />

V( x, t<br />

0 ) = min ⎢ l x, u, d + x<br />

f<br />

, t<br />

u( t )<br />

∫ τ τ Φ<br />

⎣⎢<br />

t 0<br />

( ) ( )<br />

L’incognita del problema è la funzione u( t ) . Ma in genere le funzioni u( t ) non possono essere<br />

qualsiasi: deve essere u( t)<br />

∈U . Ad esempio, ad un motore non possiamo applicare una<br />

tensione oltre un certo valore limite. Si potrebbero, inoltre, imporre dei vincoli sulla x( t ) o si<br />

potrebbero vincolare gli andamenti della u( t ) e della x( t ) .<br />

Otteniamo:<br />

t+ ∆<br />

t f<br />

t+<br />

∆<br />

⎡<br />

⎤<br />

V( x, t)<br />

= min ⎢ l( x, u, ) d + l( x, u, ) d + ( x<br />

f<br />

, t<br />

f ) ⎥ min l( x, u, ) d V[ x( t ),<br />

t ]<br />

u( t )<br />

u( t )<br />

⎣⎢<br />

t<br />

t<br />

⎦⎥ = ⎧<br />

⎨<br />

+ + +<br />

⎫<br />

∫ τ τ ∫ τ τ Φ ∫ τ τ ∆ ∆ ⎬<br />

+ ∆<br />

⎩ t<br />

⎭<br />

⇓<br />

t+<br />

∆<br />

⎧<br />

⎫<br />

0 = min ⎨ ( ) + [ ( + ) + ] − ( ) ⎬<br />

( ) ∫ l x, u, τ dτ<br />

V x t ∆ , t ∆ V x,<br />

t<br />

u t<br />

⎩ t<br />

⎭<br />

⇓<br />

f<br />

f<br />

⎤<br />

⎥<br />

⎦⎥<br />

43


Ottimizzazione<br />

t+<br />

∆<br />

⎧<br />

⎫<br />

∫ l( x, u,<br />

τ)<br />

dτ<br />

⎪<br />

V[ x( t + ∆)<br />

, t + ∆] − V( x,<br />

t)<br />

t<br />

⎪<br />

0 = min⎨<br />

+<br />

⎬<br />

u( t )<br />

⎪ ∆<br />

∆ ⎪<br />

⎩<br />

⎪<br />

⎭<br />

⎪<br />

Se ∆ → 0 si ottiene:<br />

⎡<br />

min ⎢l<br />

, ,<br />

u( t )<br />

⎣<br />

( x u t)<br />

dV<br />

+<br />

dt<br />

( x,<br />

t)<br />

⎤ ⎧⎪<br />

V( x,<br />

t)<br />

⎥ = min l( x, u,<br />

t)<br />

+ ⎡ ⎣ ⎢ ∂ ⎤<br />

⎨<br />

⎦<br />

u( t )<br />

⎩⎪<br />

∂x<br />

T<br />

∂V<br />

⎥ f( x, u,<br />

t)<br />

+<br />

⎦<br />

∂t<br />

( x,<br />

t)<br />

⎫⎪<br />

⎬<br />

⎭⎪ = 0<br />

In questo caso non ci interessa calcolare tutta la funzione u( t ) ma solo il valore dell’ingresso<br />

u all’istante t che minimizza l’espressione tra parentesi graffe.<br />

Il valore ottimale di u si può calcolare o derivando l’espressione tra parentesi graffe, oppure<br />

applicandole il metodo del gradiente, oppure, se u( t)<br />

∈U grigliando U e valutandola<br />

ripetutamente.<br />

Otteniamo:<br />

(5.1)<br />

( x,<br />

t)<br />

( x,<br />

t)<br />

∂V<br />

⎧⎪<br />

− = ( ) + ⎡<br />

( )<br />

⎣ ⎢ ∂V<br />

⎤<br />

min ⎨l<br />

x, u,<br />

t<br />

∂t<br />

⎥<br />

u t<br />

⎩⎪<br />

∂x<br />

⎦<br />

T<br />

( , , t)<br />

f x u<br />

⎫⎪<br />

⎬<br />

⎭⎪<br />

Quella ottenuta è un’equazione alle derivate parziali contenente un operatore di minimo. Per<br />

risolvere un’equazione alle derivate parziali occorre fornire le condizioni a contorno. Una<br />

condizione a contorno si può ricavare dalla definizione di V :<br />

(5.2) V( x , t ) = Φ( x , t )<br />

f f f f<br />

5.1 Equazione di Riccati<br />

Se l’indice di qualità è quadratico:<br />

si ottiene una semplificazione del problema:<br />

t<br />

f<br />

+<br />

J = ∫ x T<br />

Qx u T<br />

Ru d + x F T<br />

τ<br />

f<br />

x<br />

2 2<br />

t 0<br />

&x ( t) = A( t) x( t) + B( t) u( t)<br />

Le matrici Q , R ed F siano simmetriche e ad elementi reali. Inoltre:<br />

T<br />

⎧Q<br />

= Q ≥ 0<br />

⎪ T<br />

⎨R<br />

= R > 0<br />

⎪ T<br />

⎩ F = F ≥ 0<br />

f<br />

44


Applicazione ai sistemi tempo-continui<br />

Un problema di questo tipo è detto problema lineare quadratico (LQ).<br />

Dalle (5.1) e (5.2) otteniamo:<br />

( ) ⎧ T<br />

T<br />

x,<br />

t x Qx u Ru ∂V( x,<br />

t)<br />

− = + + ⎡ T<br />

∂V<br />

⎪<br />

( )<br />

⎣ ⎢ ⎤ ⎫⎪<br />

min⎨<br />

⎥ Ax + Bu ⎬<br />

∂t<br />

u 2 2 ∂x<br />

⎩⎪<br />

⎦ ⎭⎪<br />

( )<br />

V x f<br />

, t f<br />

= x F T<br />

f<br />

x<br />

2 f<br />

Siccome l’integrale nell’indice di qualità contiene funzioni quadratiche, esso dipende da x 0<br />

e<br />

t 0<br />

in modo quadratico. Se la V può essere scritta nel seguente modo:<br />

V<br />

( x t)<br />

, =<br />

T<br />

x P( t)<br />

x<br />

2<br />

T<br />

, P = P ≥ 0 (perché integrale di funzioni positive)<br />

otteniamo:<br />

V<br />

( x t )<br />

f<br />

f<br />

( t )<br />

( x t)<br />

T<br />

∂V<br />

, x Px &<br />

=<br />

∂t<br />

2<br />

∂V( x,<br />

t)<br />

= Px<br />

∂x<br />

T<br />

x<br />

f<br />

P x<br />

, = = , =<br />

T<br />

x<br />

f<br />

F( t<br />

f ) x<br />

f<br />

Φ ( x t )<br />

⇒ P( t<br />

f ) = F( t<br />

f )<br />

f f<br />

f f<br />

2 2<br />

T<br />

x Px &<br />

T<br />

T<br />

⎡x Qx u Ru ⎤<br />

− = ⎢ + + x<br />

T PAx + x<br />

T<br />

min<br />

PBu<br />

2<br />

⎥<br />

u( t)<br />

⎣ 2 2<br />

⎦<br />

Per minimizzare rispetto ad u l’espressione tra parentesi quadre bisogna annullare la sua<br />

derivata rispetto ad u 1 :<br />

Il controllo ottimo è dato da:<br />

Ru<br />

T<br />

+ B Px = 0<br />

−1 T<br />

( t) = − ( t) ( t) ( t) = − ( t) ( t)<br />

$u R B P x K x<br />

Affinché si riesca a controllare il sistema occorre reazionare il suo stato. Quindi:<br />

T<br />

− −<br />

x Px & T<br />

x Qx<br />

+<br />

−<br />

− = + x PBR 1 RR 1<br />

B T<br />

P x + x PA A T<br />

P T<br />

T<br />

T 1 T<br />

x − x PBR B Px =<br />

2 2 2 2<br />

T<br />

− −<br />

x Qx<br />

+<br />

= − x PBR 1 RR 1<br />

B T<br />

P x + x PA A T<br />

P T<br />

T<br />

x<br />

2 2 2<br />

T T T T T<br />

perché x A Px = x ( PA)<br />

x = x PAx .<br />

P deve soddisfare quest’equazione che è un’identità rispetto ad x . Quindi deve essere:<br />

1 Le espressioni devono contenere vettori colonna e quindi bisogna trasporre quando si ottengono dei vettori riga.<br />

45


Ottimizzazione<br />

−1 −1 T T<br />

− &P = Q − PBR RR B P + PA + A P<br />

(sistema di equazioni di Riccati)<br />

Abbiamo ottenuto un sistema di equazioni differenziali del primo ordine. Poiché entrambi i<br />

membri dell’equazione di Riccati sono matrici simmetriche non bisogna risolvere n 2<br />

n( n + 1)<br />

equazioni (se A ∈R n×<br />

n ) ma solo .<br />

2<br />

L’espressione a secondo membro è quadratica in P (è del secondo ordine) e quindi il sistema<br />

di equazioni è non lineare.<br />

Se R = r I ed r → ∞ (cioè se vogliamo che l’ingresso sia vicino allo zero), si ha che R −1 → 0 .<br />

In questo modo, se abbiamo un tempo infinito per il controllo e A( t ) e B( t ) sono costanti,<br />

supponendo che P sia la soluzione a regime, otteniamo:<br />

&P = 0<br />

T<br />

A P + PA = − Q (equazione di Lyapunov)<br />

Se Q = 0 (cioè se ci preoccupiamo solo del controllo) l’equazione di Riccati diventa omogenea<br />

in P . Moltiplicando ambo i membri a sinistra e a destra per P −1 si ottiene:<br />

Infatti, ( )<br />

Se P<br />

−1<br />

& T T<br />

−1 −1 − P PP<br />

−1 = − BR B<br />

−1 −1<br />

+ AP + P A<br />

⇓<br />

&P −1 BR −1 B T<br />

AP −1 P −1<br />

= − + + A T<br />

d<br />

−1 d<br />

−1 −1<br />

P P = I = 0 = P& P + P P& , cioè d dt dt<br />

dt P −1 P − P − PP −<br />

= & 1 1 1<br />

= − & .<br />

= X otteniamo:<br />

−1 T T<br />

&X = − BR B + XA + AX<br />

(sistema di equazioni differenziali lineari del primo ordine)<br />

Se P = p = cost , Q = q , A = a , B = b ed R = r (scalari) l’equazione di Riccati diventa:<br />

2<br />

b<br />

r p 2<br />

+ 2 ap − q = 0<br />

Possiamo ricavare due soluzioni di cui una in generale non ci interessa (fisicamente non è<br />

ammissibile). Le soluzioni ammissibili (con significato fisico) sono quelle per le quali P ≥ 0.<br />

Nel caso generale lo schema che si ottiene è il seguente:<br />

46


Applicazione ai sistemi tempo-continui<br />

−1 T<br />

perché K( t) = R B ( t) P( t)<br />

.<br />

Se R<br />

−1<br />

= I<br />

la stabilità è assicurata: la x non diverge. Infatti, se V( t) T ( t)<br />

& T T T<br />

V & & & T T<br />

= x Px + x Px + x Px = 2x Px& + x Px & =<br />

x, = x P x , allora:<br />

T T T T T T T T T<br />

= 2x PAx − 2x PBB Px − x Qx + x PBB Px − x PAx − x A Px =<br />

T T T T T T T T T<br />

= x PAx − x A Px − x Qx − x PBB Px = −x Qx − x PBB Px ≤<br />

0<br />

5.2 Caso di sistema lineare stazionario ed indice di<br />

qualità quadratico<br />

L’unico caso in cui K( t ) = cost è quello in cui il sistema è lineare e stazionario, Q ed R sono<br />

indipendenti dal tempo e l’orizzonte nel quale si effettua il controllo è infinito ( P & = 0 ). Se<br />

t → ∞ , deve essere x f<br />

→ 0 perché altrimenti per t → ∞ l’indice J divergerebbe.<br />

In questo caso di ottiene l’Algebraic Riccati Equation (ARE):<br />

T<br />

−1 T<br />

A P + PA − PBR B P + Q = 0<br />

Quest’equazione si può risolvere anche in modo iterativo: si parte da P 0<br />

= 0 e ad ogni passo si<br />

calcola:<br />

fermandosi quando P<br />

1<br />

Pk<br />

.<br />

k+ ≅<br />

T<br />

−1<br />

T<br />

A P + P A − P BR B P + Q = 0<br />

k+ 1 k+<br />

1 k<br />

k<br />

5.3 Caso di sistema lineare con indice di qualità<br />

dipendente da (x-x d ) in modo quadratico<br />

Se il sistema è lineare e vogliamo portare la x ad un certo valore x d<br />

possiamo usare il<br />

seguente indice di qualità:<br />

47


Ottimizzazione<br />

T<br />

( ) ( )<br />

t f<br />

T<br />

−<br />

d<br />

−<br />

d<br />

+<br />

J = ∫ x x Q x x u Ru<br />

dτ<br />

2<br />

La procedura da seguire è uguale a quella vista sopra 2 . Si ottiene:<br />

∂V<br />

∂t<br />

t0<br />

T<br />

T<br />

( x,<br />

t) ⎧( x − x ) Q( x − x ) u Ru ∂V( x,<br />

t)<br />

⎪<br />

= min⎨<br />

u<br />

⎩⎪<br />

u dipende da x ed x d<br />

. Possiamo porre:<br />

Si ottiene:<br />

V<br />

d<br />

( x t)<br />

T<br />

d<br />

+ + ⎡ ( Ax Bu)<br />

⎣ ⎢ ⎤ ⎫<br />

⎪<br />

⎥ + ⎬<br />

2 2 ∂x<br />

⎦ ⎭⎪<br />

T<br />

x P( t)<br />

x<br />

T<br />

, = + p ( t) x + c( t)<br />

2<br />

(5.3)<br />

T<br />

T<br />

T<br />

T<br />

∂V( x, t)<br />

x Px &<br />

⎡<br />

T<br />

x Qx<br />

T<br />

x<br />

dQx<br />

d u Ru<br />

= + p& x + c& = min⎢<br />

− x<br />

dQx<br />

+ + +<br />

∂t<br />

2 u<br />

⎣ 2 2 2<br />

+ +<br />

Deriviamo rispetto ad u l’espressione tra parentesi quadre e poniamola a zero:<br />

( )<br />

T<br />

Ru + B p + Px = 0<br />

⇓<br />

−1 $u ( t) R B T<br />

−1<br />

T<br />

= − ( t) p( t) − R B ( t) P( t) x( t)<br />

T T<br />

( p x P)( Ax Bu)<br />

(è la somma di un termine di reazione e di un termine di comando dipendente da p( t ) ).<br />

Imponendo l’uguaglianza (5.3) si ottiene:<br />

perché:<br />

T<br />

x Px & T<br />

x Qx<br />

x PBR −1<br />

B T<br />

P x x PA A T<br />

P T<br />

T<br />

+<br />

= − +<br />

x (termini dipendenti da x 2 )<br />

2 2 2 2<br />

T T T −1 T T<br />

&p x = −x Qx − p BR B Px + p Ax (termini dipendenti da x )<br />

d<br />

T<br />

d<br />

T −1<br />

T<br />

x Qx<br />

d p BR B p<br />

&c = −<br />

2 2<br />

(termini indipendenti da x )<br />

T T T T −1 T T −1 T T T −1 T T −1<br />

T<br />

( p + x P)( Ax + Bu)<br />

= p Ax − p BR B p − p BR B Px + x PAx − x PBR B p − x PBR B Px<br />

e<br />

T T −1 T T −1<br />

T<br />

u Ru p BR B p + x PBR B Px<br />

T<br />

=<br />

+ p BR<br />

2 2<br />

−1<br />

T<br />

B Px<br />

⎤<br />

⎥<br />

⎦<br />

2 T<br />

Si potrebbe complicare il problema aggiungendo un termine x Mu<br />

questo caso la procedura resta uguale a quella vista sopra.<br />

(che dipende da x e da u ). Anche in<br />

48


Applicazione ai sistemi tempo-continui<br />

5.4 Sistemi non lineari<br />

Consideriamo un sistema non lineare descritto dalla seguente equazione:<br />

( )<br />

x& = f x, u,<br />

t<br />

con x( 0)<br />

= x<br />

0<br />

e u ∈U (considereremo solo vincoli sui valori di u ma non sulle funzioni u( t)<br />

né sulle x( t ) ).<br />

L’indice di qualità da massimizzare sia il seguente:<br />

J = ψ[ x( T)<br />

] + ∫ L( x, u,<br />

τ)<br />

dτ<br />

Siccome stiamo considerando un problema di massimo, allora F = − L .<br />

Possiamo modificare l’indice di qualità utilizzando i moltiplicatori di Lagrange:<br />

T T T<br />

T<br />

0<br />

T T T<br />

∫ ( )[ ( )] [ ( )] ∫[ ( ) ( ) ( )] ∫ ( )<br />

J = J − p τ x& − f x, u, τ dτ = ψ x T + L x, u, τ + p τ f x, u, τ dτ − p τ x&<br />

dτ<br />

0<br />

0 0 0<br />

dove L + p T f =<br />

H è l’hamiltoniano associato. Se x& f( x, u,<br />

)<br />

= τ , allora J = J . Si ha che<br />

0<br />

&x = ∂ H . Scegliamo le variabili p in modo tale che sia &p = − ∂ . Per ricondurci alla<br />

∂p<br />

∂H<br />

x<br />

formulazione hamiltoniana abbiamo aggiunto al sistema le variabili p (variabili ausiliarie),<br />

cioè abbiamo raddoppiato la dimensione dello spazio di stato.<br />

La condizione iniziale sulla x è data da x( 0)<br />

= x<br />

0<br />

e quella finale sulla p è data da<br />

p( T)<br />

= ∂ψ . Abbiamo n condizioni iniziali (per n equazioni) ed n condizioni finali (per le<br />

∂x<br />

T<br />

altre n equazioni). Questo può crearci dei problemi di tipo numerico per l’integrazione.<br />

H dipende da x , da p e da u : H = H( x, p, u)<br />

. Se $u ( t ) è ottimale, con qualsiasi scelta di x e<br />

p otteniamo:<br />

H( x, p, u$ ( t)<br />

) ≥ H( x, p,<br />

v( t)<br />

)<br />

dove v( t ) è un qualsiasi altro controllo.<br />

Questa relazione ci suggerisce come scegliere la u fissando x e p (la ricerca può essere fatta<br />

in modo numerico o analitico, se possibile). In questo caso, però, le tecniche di ricerca<br />

utilizzabili sono di tipo locale. La soluzione ottima sarà data da u$ ≡ u$ ( x, p,<br />

t ) (funzione anche<br />

delle variabili ausiliarie).<br />

Potremmo aggiungere all’equazione x& = f( x, u,<br />

t ) l’equazione x& = L( x , u 0<br />

, t)<br />

ottenendo:<br />

In questo caso possiamo scrivere:<br />

J = ψ[ x( T)<br />

] + x ( T)<br />

0<br />

T<br />

H = p 0<br />

L + p f<br />

49


Ottimizzazione<br />

Il problema non è cambiato perché p 0<br />

= cost :<br />

&p<br />

0<br />

∂H<br />

= − = 0<br />

∂x<br />

0<br />

( H dipende da x e non da x 0<br />

).<br />

Alcune volte ci interessa minimizzare la u ma ci interessa che la x finale sia particolare<br />

(dobbiamo specificare anche delle condizioni terminali sulla x ). Abbiamo un sistema di 2n<br />

equazioni in 2n incognite con n condizioni iniziali (sulle x ) ed n condizioni finali (sulle p )<br />

e, per inserire altre condizioni finali sulle x bisogna procedere in questo modo: se la<br />

condizione su x i<br />

( T ) è specificata, la corrispondente condizione su p i<br />

( T ) deve essere<br />

eliminata. In seguito si pone p 0<br />

= 1 e si cerca la soluzione. Se non si riesce ad ottenerla si pone<br />

p 0<br />

= 0 e si ritenta.<br />

5.5 Esempio. Curva più corta che unisce due punti<br />

I due punti siano x( 0)<br />

= 0 ed x( 1)<br />

= 1. Il sistema può essere descritto dall’equazione &x = u .<br />

L’indice da massimizzare è il seguente:<br />

Si ottiene:<br />

1<br />

J = − ∫ 1 2<br />

+ u dt<br />

0<br />

∂H<br />

∂u<br />

2<br />

H = − 1+ u + pu<br />

∂H &p = − = 0<br />

∂x<br />

1 1<br />

= p − 2u<br />

= p −<br />

2 1+<br />

u<br />

u<br />

1+<br />

u<br />

2 2<br />

Si ha che H è costante se u è costante. Quindi &x = c = cost ⇒ x = ct + a . Inserendo le<br />

condizioni iniziali e finali si ottiene c = 1 ed a = 0 .<br />

50


Applicazione ai sistemi tempo-continui<br />

5.6 Esempio. Curva di lunghezza assegnata tale che<br />

l’area sottesa sia massima<br />

Gli estremi della curva siano x( 0)<br />

= 0 e x( T ) = 0 . Il sistema può essere descritto<br />

2<br />

dall’equazione &x = u . L’integrale ∫ 1+ u dt = l<br />

mantenuto costante. L’indice da massimizzare è il seguente:<br />

T<br />

0<br />

J<br />

T<br />

= ∫ xdt<br />

0<br />

(lunghezza della curva) deve essere<br />

Per eliminare il vincolo aumentiamo il numero delle variabili di stato. Definiamo:<br />

con y( 0)<br />

= 0 ed y( T)<br />

Costruiamo l’hamiltoniano:<br />

Otteniamo:<br />

&y<br />

= 1+<br />

= l . Il nostro sistema di equazioni diventa:<br />

d<br />

dt<br />

u<br />

⎛x<br />

u<br />

⎝<br />

⎜ ⎞ y ⎠ ⎟ = ⎛<br />

⎜<br />

⎝ 1 + u<br />

H = x + p x&<br />

+ p y&<br />

= x + p u + p 1+<br />

u<br />

2<br />

2<br />

⎞<br />

⎟<br />

⎠<br />

1 2 1 2<br />

2<br />

∂H<br />

∂u<br />

∂H<br />

&p = − =<br />

∂x<br />

∂H<br />

&p = − =<br />

∂y<br />

1<br />

1<br />

2<br />

0<br />

= 0 = p + p<br />

⇒ p1 = t + c1<br />

⇒ p 2<br />

= cost=c 2<br />

u<br />

u<br />

= t + c + c<br />

1+<br />

u<br />

1+<br />

u<br />

⇓<br />

1 2 2 1 2 2<br />

51


Ottimizzazione<br />

at + b =<br />

u<br />

2<br />

1+ u<br />

, con a = − 1 c<br />

2<br />

e b<br />

c<br />

= − 1 c<br />

2<br />

La x( t ) che si ottiene è un arco di circonferenza con equazione del tipo:<br />

dove ( t x )<br />

c<br />

, sono le coordinate del centro.<br />

c<br />

2 2<br />

( x( t)<br />

− x ) + ( t − t ) = r<br />

L’hamiltoniano non dipende dal tempo ( H=cost=c 3<br />

) perché<br />

c<br />

c<br />

2<br />

dH<br />

dt<br />

∂H<br />

= = 0 . Siccome<br />

∂t<br />

2<br />

H = x + p u + p 1 + u = c possiamo ricavare la u in funzione degli altri parametri.<br />

1 2<br />

3<br />

5.7 Matrice hamiltoniana<br />

Consideriamo ora un sistema lineare stazionario:<br />

con x x( )<br />

0<br />

= t<br />

0<br />

noto.<br />

L’indice di qualità da minimizzare sia del tipo:<br />

&x = Ax + Bu<br />

T T T T<br />

x F( T)<br />

x ⎛ x Qx u Ru⎞<br />

J = + ∫ ⎜ + ⎟dτ<br />

2 ⎝ 2 2 ⎠<br />

0<br />

⇓<br />

T T T T<br />

⎡ x F( T)<br />

x ⎛ x Qx u Ru⎞<br />

⎤<br />

max⎢− − ∫ ⎜ + ⎟dτ⎥<br />

⎣ 2 ⎝ 2 2 ⎠<br />

0<br />

⎦<br />

con Q almeno s.d.p. ed R d.p., cioè invertibile. Otteniamo:<br />

Non abbiamo vincoli sulla u :<br />

T<br />

T<br />

T<br />

T<br />

T<br />

x Qx u Ru<br />

T<br />

T<br />

x Qx u Ru<br />

H = p x&<br />

− − = p Ax + p Bu − −<br />

2 2 2 2<br />

∂H<br />

T<br />

&p = − = − A p + Qx<br />

∂x<br />

∂H<br />

∂u<br />

T<br />

= 0 = B p − Ru<br />

−1 T<br />

⇒ $u ( t) = R B p( t)<br />

Le condizioni finali sulle p sono date da p( T) = − F( T) x( T)<br />

.<br />

Si ottiene il seguente sistema in evoluzione libera (con ingresso nullo):<br />

52


Applicazione ai sistemi tempo-continui<br />

d<br />

dt<br />

⎛x<br />

A BR B<br />

⎜ ⎞ −1<br />

T<br />

⎝p⎠ ⎟ =<br />

⎡<br />

⎢<br />

⎣Q<br />

− A<br />

T<br />

⎤ x<br />

⎥ ⎛ ⎦⎝ ⎜ ⎞ p⎠ ⎟<br />

dove la matrice M A BR −1<br />

B T<br />

⎡<br />

⎤<br />

= ⎢<br />

T ⎥ è la matrice hamiltoniana e la sottomatrice BR −1 B<br />

T è<br />

⎣Q<br />

− A ⎦<br />

una matrice reale simmetrica.<br />

La dinamica del sistema dipende solo dagli autovalori ed autovettori della matrice<br />

hamiltoniana. Una proprietà di questa matrice è che, se essa ha l’autovalore λ , ha anche<br />

l’autovalore − λ . Quindi, il suo polinomio caratteristico è funzione di s 2 : le sue radici sono a<br />

simmetria quadrantale 3 .<br />

L’evoluzione del sistema nelle variabili x e p è data da:<br />

Φ t, t<br />

0<br />

Otteniamo:<br />

⎛x( t)<br />

⎞<br />

⎜ ⎟ = Φ<br />

⎝p<br />

t ⎠<br />

( t,<br />

t<br />

0 )<br />

( )<br />

⎛x<br />

⎜<br />

⎝p<br />

( t<br />

0 )<br />

( t<br />

0)<br />

⎞<br />

⎠<br />

⎟ = ⎡ Φ<br />

⎢<br />

⎣ ⎢Φ<br />

M( t−t<br />

0 )<br />

con ( ) = e e Φ ( t ) Φ ( t t )<br />

ij<br />

, t 0 ij 0<br />

( t, t ) Φ ( t,<br />

t )<br />

( t, t ) Φ ( t,<br />

t )<br />

11 0 12 0<br />

21 0 22 0<br />

⎤⎛x<br />

⎥<br />

⎜<br />

⎦⎥<br />

⎝p<br />

( t<br />

0 )<br />

( t<br />

0)<br />

= − perché il sistema è lineare e stazionario.<br />

(5.4) p( T) = − F( T) x( T) = Φ ( T, t ) x( t ) + Φ ( T,<br />

t ) p( t )<br />

⎞<br />

⎟<br />

⎠<br />

21 0 0 22 0 0<br />

−1<br />

Da quest’equazione possiamo ricavare p( t 0 ), sapendo che Φ22 ( T − t<br />

0) = Φ22 ( t<br />

0<br />

− T)<br />

Inoltre:<br />

( T) = Φ ( T, t ) ( t ) + Φ ( T,<br />

t ) ( t )<br />

x x p<br />

11 0 0 12 0 0<br />

Se moltiplichiamo ambo i membri di quest’equazione per F otteniamo:<br />

( T) = Φ ( T, t ) ( t ) + Φ ( T,<br />

t ) ( t )<br />

Fx F x F p<br />

11 0 0 12 0 0<br />

Se sommiamo quest’equazione alla (5.4) possiamo scrivere x( t 0 ) in funzione di ( )<br />

−1 T<br />

ottenendo che p( t ) è funzione solo di p( t 0 ) ed il controllo $u ( t) = R B p( t)<br />

.<br />

p t 0<br />

,<br />

sarebbe a ciclo<br />

aperto.<br />

Se, invece, p( t) = − P( t) x( t)<br />

, con P( t ) simmetrica e d.p., otteniamo il controllo in<br />

T<br />

controreazione $u ( t) = −R −1 B P( t) x( t)<br />

trovato sopra. In questo caso si ha:<br />

&p = Qx − A T<br />

T<br />

p = Qx + A Px<br />

p& Px & Px& Px & PAx PBu Px &<br />

−1 T<br />

= − − = − − − = − − PAx + PBR B Px<br />

⇓<br />

T<br />

Qx + A Px = −Px & −1<br />

T<br />

− PAx + PBR B Px<br />

Questa relazione vale qualunque sia x . Otteniamo l’equazione di Riccati:<br />

3 Le radici del polinomio caratteristico sono simmetriche non solo rispetto all’asse reale (il polinomio è a<br />

coefficienti reali) ma anche rispetto all’asse immaginario.<br />

53


Ottimizzazione<br />

T<br />

−1<br />

T<br />

− &P = A P + PA + Q − PBR B P<br />

Il problema è sicuramente ben posto se la coppia ( A, B)<br />

è controllabile.<br />

La condizione finale su p( T ) diventa p( T) = − P( T) x( T) = − F( T) x( T)<br />

⇒ P( T) = F( T)<br />

.<br />

Il sistema:<br />

diventa:<br />

−1 T<br />

⎧x&<br />

= Ax + BR B p<br />

⎨<br />

T<br />

⎩p&<br />

= Qx − A p<br />

−1<br />

T<br />

( )<br />

T −1<br />

( )<br />

⎧x&<br />

= A − BR B P x<br />

⎨<br />

⎩p&<br />

= − A + QP p<br />

−1 T<br />

−1 T<br />

La matrice a ciclo chiuso è A<br />

c<br />

= A − BR B P . La matrice K = BR B P deve avere<br />

necessariamente tutti gli autovalori a parte reale negativa.<br />

In questo modo abbiamo disaccoppiato la dinamica delle x da quella delle p . Se l’intervallo di<br />

controllo è infinito ci aspettiamo che sia p → cost (si va a regime). D’altra parte, x → 0 per<br />

t → ∞ perché altrimenti l’indice da minimizzare divergerebbe.<br />

5.8 Proprietà della matrice hamiltoniana<br />

Dimostriamo che la dinamica delle p è uguale ed opposta a quella delle x :<br />

54<br />

−1 T<br />

⎧x&<br />

= Ax + BR B p<br />

⎨<br />

T<br />

⎩p&<br />

= Qx − A p<br />

Calcoliamo gli autovalori della matrice hamiltoniana:<br />

−1 T<br />

−1<br />

T<br />

T<br />

⎡sI − A − BR B ⎤ ⎡0<br />

− I⎤⎡sI − A − BR B ⎤⎡0<br />

− I⎤<br />

⎡ − sI − A − Q ⎤<br />

det⎢<br />

T ⎥ = − det⎢<br />

T<br />

det<br />

T<br />

⎣ − Q sI + A ⎦ ⎣I<br />

⎥⎢<br />

⎥⎢<br />

⎦⎣<br />

− Q sI + A ⎦⎣I<br />

⎥ = − ⎢ −1<br />

⎥ =<br />

0<br />

0 ⎦ ⎣− BR B − sI + A⎦<br />

−1<br />

⎡− sI − A − BR B<br />

= − det⎢<br />

⎣ − Q − sI + A<br />

perchè il determinante di una matrice è uguale a quello della sua trasposta.<br />

Quindi, se il polinomio caratteristico della matrice hamiltoniana ha un autovalore λ essa ha<br />

anche l’autovalore − λ . Siccome il sistema iniziale è stabile per ipotesi (altrimenti si avrebbe<br />

che J → ∞ ) e p ha le stesse dimensioni di x , il sottosistema in x ha gli autovalori a parte<br />

reale negativa, mentre il sottosistema in p ha gli autovalori a parte reale positiva<br />

(l’andamento delle p è instabile).<br />

Possiamo effettuare un’altra dimostrazione. Supponiamo che [ ] u w T sia un autovettore della<br />

matrice hamiltoniana e che λ sia l’autovalore associato:<br />

T<br />

T<br />

⎤<br />

⎥<br />


Applicazione ai sistemi tempo-continui<br />

−1 T<br />

⎡A BR B ⎤ u u<br />

⎢<br />

⎥ ⎡<br />

⎣Q<br />

− A ⎦⎣ ⎢<br />

⎤<br />

w<br />

⎥ = ⎡<br />

⎦ ⎣ ⎢ ⎤<br />

T<br />

λ<br />

w<br />

⎥<br />

⎦<br />

⇓<br />

−1 T<br />

⎧Au + BR B w = λu<br />

⎨<br />

T<br />

⎩ Qu − A w = λw<br />

Se esiste un autovalore λ con autovettore destro associato [ u w]<br />

T esiste l’autovalore − λ con<br />

T T<br />

autovettore sinistro associato [ w − u ] :<br />

−1<br />

⎡A BR B<br />

T T<br />

T T<br />

[ w − u ] ⎢<br />

T ⎥ = −λ[ w − u ]<br />

⎣Q<br />

− A ⎦<br />

⇓<br />

T T T<br />

⎧ w A − u Q = −λw<br />

⎨ −1<br />

⎩w BR B + u A = λu<br />

T T T T T<br />

Quindi, − λ è un autovalore della matrice hamiltoniana.<br />

Un’ulteriore dimostrazione è la seguente. La matrice A BR −1 B T<br />

⎡<br />

⎤<br />

⎢<br />

T ⎥ può essere trasformata<br />

⎣Q<br />

− A ⎦<br />

per similitudine nel seguente modo:<br />

T<br />

⎤<br />

⎡ I<br />

⎢<br />

⎣P<br />

−1 T<br />

−1 T<br />

−1<br />

T<br />

0⎤⎡A BR B ⎤ I 0 A BR B P BR B<br />

I<br />

⎥⎢<br />

1 1<br />

⎦⎣Q<br />

− A ⎦<br />

⎥ ⎡ ⎤ ⎡ −<br />

T ⎢<br />

⎣ − P I<br />

⎥ = ⎢<br />

−<br />

⎦ ⎣Q + PA + A P − PBR B P − A − BR B P<br />

−<br />

( )<br />

T T T T<br />

⎤<br />

⎥<br />

⎦<br />

⎡ I 0⎤<br />

I 0 1<br />

dove ⎢<br />

⎣−<br />

P I<br />

⎥ = ⎡ −<br />

⎦ ⎣ ⎢<br />

⎤<br />

P I<br />

⎥ . La matrice P è soluzione dell’equazione di Riccati e quindi annulla<br />

⎦<br />

la sottomatrice in basso a sinistra. In questo modo gli autovalori della matrice sono quelli dei<br />

due blocchi sulla diagonale (gli autovalori del blocco in alto a sinistra sono uguali a quelli del<br />

blocco in basso a destra cambiati di segno).<br />

5.9 Luogo simmetrico delle radici<br />

T<br />

Se abbiamo un sistema SISO, u Ru = ru<br />

L’indice di qualità può essere scritto come:<br />

2<br />

(scalare) e Q<br />

= c T c , dove c è un vettore riga.<br />

J =<br />

dove v = cx , v ∈R .<br />

La matrice hamiltoniana diventa la seguente:<br />

∞<br />

∫<br />

0<br />

T T<br />

2<br />

x c cx + Ru 1 dt = ∫ ( v<br />

2<br />

+ ru<br />

2<br />

) dt<br />

2 2<br />

∞<br />

0<br />

55


Ottimizzazione<br />

⎡<br />

⎢ A<br />

⎢ T<br />

⎣c c<br />

bb<br />

r<br />

− A<br />

T<br />

T<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

che ha polinomio caratteristico dato da:<br />

Possiamo calcolare:<br />

⎧<br />

⎪⎡( sI<br />

− A)<br />

= det⎨⎢<br />

⎩<br />

⎪⎣<br />

0<br />

T<br />

⎡<br />

det s bb<br />

⎢ I − A −<br />

⎢<br />

r<br />

T<br />

⎣ − c c sI + A<br />

⎧<br />

a ( ) ( ) ( )<br />

c<br />

s a<br />

c<br />

− s ⎪⎡<br />

sI<br />

− A<br />

= det⎨⎢<br />

a ( s) a ( s)<br />

o 0<br />

− ⎣<br />

⎩<br />

⎪ 0<br />

−1<br />

0<br />

T<br />

( sI<br />

+ A )<br />

−1<br />

T<br />

0⎤⎡I<br />

⎥⎢<br />

I⎦⎣0<br />

⎤<br />

⎥ a ( s) a ( s)<br />

c c<br />

⎥ = − = 0<br />

⎦<br />

0<br />

T<br />

( sI<br />

+ A )<br />

−1<br />

T<br />

⎡<br />

⎤<br />

bb ⎤⎫<br />

⎢sI<br />

− A − ⎥⎪<br />

⎥<br />

r ⎬ =<br />

⎦⎢<br />

T<br />

T ⎥<br />

⎣ − c c sI + A ⎦⎭<br />

⎪<br />

T<br />

⎤<br />

⎡ bb ⎤⎫<br />

⎡<br />

−1<br />

s − −<br />

( s )<br />

⎥<br />

⎢ I A ⎥⎪<br />

− −<br />

−1<br />

r ⎬ = det<br />

⎢ I I A bb<br />

T<br />

T<br />

⎦<br />

⎢<br />

⎥ ⎢<br />

r<br />

⎣ − c c sI + A ⎦⎭<br />

⎪<br />

T −1<br />

T<br />

⎣⎢<br />

− ( sI − A ) c c I<br />

T<br />

⎡<br />

⎤<br />

T T<br />

−<br />

= ⎢I − ( sI + A ) c c( sI − A )<br />

bb 1<br />

det<br />

⎥<br />

⎣<br />

r ⎦<br />

T<br />

⎤<br />

⎥<br />

⎥<br />

=<br />

⎦⎥<br />

dove a ( s)<br />

0<br />

è il polinomio caratteristico a ciclo aperto. Si può dimostrare che<br />

det<br />

[ I<br />

n× n<br />

Pn× rQ r× n ] det[ Ir× r<br />

Q<br />

r× nPn×<br />

r ]<br />

+ = + . Otteniamo:<br />

T<br />

−<br />

Definendo G( s) = c ( sI − A)<br />

1 b otteniamo:<br />

T<br />

T<br />

perché ( − s − )<br />

b I A c<br />

a ( ) ( )<br />

c<br />

s a<br />

c<br />

− s ⎡ T T T<br />

−1<br />

⎤<br />

= det − ( s + ) ( s − )<br />

a ( s) a ( − s)<br />

⎣<br />

⎢1 1 b I A c c I A b<br />

r<br />

⎦<br />

⎥<br />

o<br />

0<br />

( ) ( − )<br />

( ) ( − )<br />

−1 −1<br />

[ b ( sI A ) c c( sI A)<br />

b]<br />

a<br />

c<br />

s a<br />

c<br />

s<br />

T T T<br />

= 1− 1 + − =<br />

a s a s r<br />

0 0<br />

T T<br />

−1 T<br />

−1<br />

[ b ( sI A ) c c( sI A)<br />

b] ( ) ( s )<br />

= 1+ 1 − − − = 1+ 1<br />

r<br />

r G s G −<br />

−1<br />

[ ]<br />

è uguale ad c T<br />

−1<br />

( sI − A)<br />

b<br />

pratica è la funzione di trasferimento che lega la v alla u . Annullando<br />

T<br />

sostituendo s con − s. La G( s ) in<br />

a<br />

c( s) a<br />

c( − s)<br />

si ottiene<br />

a ( s) a ( − s)<br />

0 0<br />

il luogo simmetrico delle radici che indica l’andamento dei poli a ciclo chiuso: alcuni poli<br />

descrivono la dinamica delle x e gli altri (che non ci interessano) descrivono la dinamica delle<br />

p . Siccome i poli sono a simmetria quadrantale il baricentro del luogo delle radici sarà sempre<br />

l’origine.<br />

56


Applicazione ai sistemi tempo-continui<br />

5.10<br />

Esempi<br />

5.10<br />

10.1<br />

Filtro di Butterworth 4<br />

Si abbia un sistema con due poli immaginari puri in ± j:<br />

G( s)<br />

=<br />

s<br />

2<br />

1<br />

+ 1<br />

In questo caso G( s) = G( − s)<br />

e otteniamo il seguente luogo delle radici:<br />

1+<br />

1 1 r s 1<br />

( + )<br />

2 2<br />

= 0<br />

2<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

La dinamica instabile (quella relativa ai rami a parte reale positiva) è quella delle p .<br />

5.10<br />

10.2<br />

Sistema a fase non minima<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

s − 2<br />

G( s)<br />

=<br />

( s + )<br />

Otteniamo il seguente luogo simmetrico delle radici:<br />

1 2<br />

1 1 s − 2 s + 2<br />

−<br />

r ( s + 1) ( s − 1)<br />

2 2<br />

= 0<br />

4 I poli dei filtri di Butterworth sono disposti lungo le bisettrici dei quattro quadranti.<br />

57


Ottimizzazione<br />

3<br />

2<br />

asse immaginario<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

-4 -3 -2 -1 0 1 2 3 4<br />

asse reale<br />

Se r → 0 un polo del sistema va a − ∞ ed l’altro va a − 2 (immagine speculare dello zero in<br />

2 ). Anche se si spinge il guadagno, lo zero limita le prestazioni del sistema (la banda passante<br />

del sistema è limitata dallo zero).<br />

5.10<br />

10.3<br />

Sistema a fase minima<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

s + 2<br />

G( s)<br />

=<br />

( s + )<br />

Otteniamo lo stesso luogo delle radici relativo all’esempio precedente:<br />

1 2<br />

1 1 s + 2 s − 2<br />

−<br />

r ( s + 1) ( s − 1)<br />

2 2<br />

= 0<br />

Se r → 0 il polo va verso zero in − 2 .<br />

5.10<br />

10.4<br />

Si abbia il seguente sistema:<br />

58<br />

&x = ⎡ 0 1<br />

x<br />

⎣ ⎢ ⎤<br />

⎥ + ⎡ 0<br />

⎦ ⎣ ⎢ ⎤ 0 0 1⎦ ⎥u<br />

y =<br />

[ − ]<br />

1 1 x<br />

con x = [ x x ]<br />

T<br />

1 2<br />

. L’indice da minimizzare sia quindi il seguente:<br />

Otteniamo:<br />

2<br />

2<br />

[( ) ]<br />

∞<br />

∫ 1 2<br />

0<br />

J = x − x + ru dt


Applicazione ai sistemi tempo-continui<br />

( ) = ( s − ) = [ − ] ⎢ ⎥ ⎢ ⎤ [ ] [ ]<br />

⎦ ⎥ = − ⎢ ⎥ ⎡ ⎣ ⎢ ⎤ −<br />

c I A b 1 1<br />

⎦ ⎥ = −<br />

G s<br />

−<br />

⎡s<br />

− 1⎤<br />

1<br />

⎡0<br />

1<br />

⎣0<br />

s ⎦ ⎣1<br />

Otteniamo il seguente luogo simmetrico delle radici:<br />

( )( )<br />

1 1 1 − s 1 + s<br />

1 1 s −<br />

+<br />

1 s + 1<br />

2 2 = −<br />

4<br />

= 0<br />

r s s r s<br />

⎡s<br />

⎤<br />

⎡ s<br />

1 1 1 1 0<br />

s ⎣ s⎦<br />

s<br />

⎢ ⎤ ⎣s⎦ ⎥ =<br />

−<br />

2<br />

1 1 1 1 1<br />

2 2<br />

0 1<br />

s<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

Calcoliamo le coordinate dei due punti doppi:<br />

4 1 1<br />

s = s 1<br />

+ − s + 1<br />

⇒ s 2 = 2 ⇒ s = ± 2<br />

Se r viene spinto all’infinito otteniamo un doppio integratore.<br />

5.10<br />

10.5<br />

Sistema instabile a ciclo aperto<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

G( s)<br />

=<br />

1<br />

s( s − 2)<br />

Il luogo simmetrico delle radici è il seguente:<br />

1+<br />

1 1 2<br />

r s ( s − 2)( s + 2)<br />

= 0<br />

59


Ottimizzazione<br />

3<br />

2<br />

asse immaginario<br />

1<br />

0<br />

-1<br />

-2<br />

-3<br />

-4 -3 -2 -1 0 1 2 3 4<br />

asse reale<br />

Al limite si ottiene un filtro di Butterworth.<br />

5.10<br />

10.6<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

s + 1<br />

G( s)<br />

= −<br />

s( s − 1)<br />

Si ottiene il seguente luogo simmetrico delle radici:<br />

1 1 1 s + 1 s − 1<br />

−<br />

2<br />

0<br />

r s s − 1 s + 1<br />

=<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

I due poli e zeri in ± 2 si cancellano. Ci interessa solo il ramo del luogo delle radici che giace<br />

sul semiasse reale negativo (l’altro ramo è relativo alla dinamica delle p ).<br />

Otteniamo un controllo a banda larghissima (dipende da r ).<br />

60


Applicazione ai sistemi tempo-continui<br />

5.10<br />

10.7<br />

Approssimazione di un ritardo<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

s − 1<br />

G( s)<br />

= −<br />

s( s + 1)<br />

Otteniamo lo stesso luogo delle radici relativo all’esempio precedente:<br />

5.10<br />

10.8<br />

1 1 1 s + 1 s − 1<br />

−<br />

2<br />

0<br />

r s s − 1 s + 1<br />

=<br />

Si abbia un sistema con un polo nell’origine, due poli immaginari puri in ± j ed un polo in<br />

− 1:<br />

G( s)<br />

=<br />

s + 1<br />

2<br />

( + 1)<br />

s s<br />

Si ottiene il seguente luogo simmetrico delle radici:<br />

1 1 ( s + 1 )( s − 1 )<br />

+<br />

2 2 2<br />

r s s + 1<br />

( )<br />

= 0<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

5.11<br />

Metodo di Potter per ricavare la soluzione<br />

dell’equazione di Riccati<br />

Possiamo effettuare una decomposizione spettrale della matrice hamiltoniana separando gli<br />

autovalori a parte reale negativa da quelli a parte reale positiva:<br />

61


Ottimizzazione<br />

⎡X<br />

⎢<br />

⎣X<br />

−<br />

Y<br />

Y<br />

−<br />

+ +<br />

−1 T<br />

⎤⎡A BR B ⎤ ⎡S<br />

0 ⎤ X<br />

⎥⎢<br />

⎥ = ⎢<br />

⎦⎣Q<br />

− A ⎦ ⎣ − S<br />

⎥ ⎡ T<br />

0 ⎦⎣ ⎢ X<br />

⇓<br />

X A + Y Q = −SX<br />

+ + +<br />

−1 T T<br />

−<br />

+<br />

= −<br />

+<br />

X BR B Y A SY<br />

+<br />

⇓<br />

−<br />

Y 1 −<br />

X BR 1 T T −<br />

B − A = −Y 1 SY<br />

+<br />

+<br />

(5.5) − 1 T −1<br />

( )<br />

−<br />

Y<br />

Y<br />

−<br />

+ +<br />

T<br />

A − BR B Y X = Y SY<br />

+<br />

+ +<br />

T<br />

−T<br />

+ + +<br />

−<br />

dove A = ( A<br />

−<br />

)<br />

−1<br />

T<br />

autovalori a parte reale negativa. La matrice ( Y+<br />

X<br />

+ )<br />

−1 T<br />

−1<br />

in modo tale che A − BR B P avesse autovalori a parte reale negativa. Ma se ( Y+<br />

X )<br />

siccome P = P<br />

−1 T<br />

−1<br />

, allora ( Y+<br />

X<br />

+ ) = Y+<br />

X<br />

+<br />

.<br />

−1 Moltiplicando ambo i membri della (5.5) a sinistra per ( Y X<br />

T<br />

)<br />

−1<br />

= Y X<br />

T T 1<br />

. La matrice a primo membro è simile alla matrice S che contiene tutti gli<br />

dalla (5.5) otteniamo l’equazione di Riccati:<br />

−<br />

( + )<br />

⎤<br />

⎥<br />

⎦<br />

è uguale a P poiché avevamo scelto P<br />

+<br />

+ +<br />

−1 −1 −1 T 1<br />

T −T T −T<br />

Y X A − Y X BR B Y X = X Y Y SY =<br />

+<br />

+ +<br />

+<br />

+ + +<br />

+ +<br />

T −T T T −T T −T T T −T<br />

= X SY = −A X Y − QY Y = −A X Y − Q<br />

+ +<br />

+ +<br />

⇓<br />

−1<br />

T T<br />

− PBR B P + A P = −PA − Q (equazione di Riccati)<br />

perché S = S<br />

T e Q = Q<br />

T .<br />

Per risolvere il sistema di equazioni differenziali di Riccati basta calcolare X +<br />

ed Y +<br />

.<br />

T<br />

+ +<br />

+ +<br />

+<br />

T<br />

+<br />

=<br />

P ,<br />

e ricavando SX +<br />

5.12<br />

Scelta di R e Q<br />

Si abbia il seguente indice di qualità da minimizzare:<br />

T<br />

( u T<br />

Ru )<br />

J = ∫ x Qx +<br />

Possiamo scegliere R e Q diagonali. In genere all’inizio si pone Q = R = I e poi, se qualcosa<br />

nel controllo non va bene, ad esempio se un ingresso è troppo grande, vengono “aggiustate” le<br />

componenti di R .<br />

Nell’integrale otteniamo la seguente somma:<br />

2<br />

2 2 2<br />

q x + q x + K+ q x + r u + r u + K+<br />

r u<br />

11 1<br />

22 2<br />

dt<br />

2 2<br />

nn n 11 1 22 2 nn n<br />

Le varie variabili hanno in genere dimensioni diverse. Conviene dividere q ii<br />

per x iNOM<br />

ed r ii<br />

per u iNOM<br />

. In questo modo le variabili perdono le loro dimensioni.<br />

62


Applicazione ai sistemi tempo-continui<br />

5.13<br />

Controllo switching<br />

Si abbia il seguente sistema SISO:<br />

&x = Ax + bu<br />

con x( 0)<br />

x0<br />

A, b sia controllabile.<br />

Il nostro obiettivo è quello di passare da x 0<br />

ad x f<br />

(stato finale) nel minore tempo possibile.<br />

Per far questo possiamo introdurre un’ulteriore variabile x n+1<br />

tale che &x n+ 1<br />

= 1, con<br />

x n+<br />

( 0)<br />

= 0 . Occorre quindi minimizzare x ( t n+1 f ) . Otteniamo:<br />

1<br />

= . Il segnale di controllo abbia il vincolo u < 1 e la coppia ( )<br />

T<br />

( ) & ( )<br />

T<br />

H = p Ax + bu + p<br />

n<br />

x<br />

n<br />

= p Ax + bu + p n<br />

&p = − ∂H<br />

∂x<br />

= −A T<br />

p<br />

∂H<br />

&p<br />

n+<br />

1<br />

= − = 0<br />

∂x<br />

+ 1 + 1 + 1<br />

Dobbiamo risolvere un sistema di 2n + 2 equazioni (abbiamo n variabili in x , n variabili in<br />

p e inoltre x n+1<br />

e p n+1<br />

).<br />

Le condizioni iniziali e finali sulle x sono specificate quindi non bisogna porre delle<br />

condizioni sulle p .<br />

La u si ricava massimizzando l’hamiltoniano:<br />

T<br />

perchè p Ax<br />

max<br />

u<br />

non dipende da u e p n+<br />

=<br />

1<br />

cost .<br />

n+<br />

1<br />

T T<br />

T<br />

( p Ax + p bu + p ) = max( p bu)<br />

Se non abbiamo vincoli sulla u possiamo portarla all’infinito per massimizzare l’espressione di<br />

sopra. Ma deve essere u < 1, quindi:<br />

u<br />

ottima<br />

n+1<br />

T<br />

( t) = sgn[ p b]<br />

(p T b è uno scalare).<br />

Il controllo deve sempre essere mantenuto al massimo (in valore assoluto). Questo tipo di<br />

controllo viene detto controllo switching. Per un sistema del secondo ordine abbiamo il<br />

seguente andamento della u( t ) :<br />

u<br />

63


Ottimizzazione<br />

Se la matrice A è ad autovalori reali si dimostra che il numero di commutazioni nel periodo è<br />

pari all’ordine del sistema meno 1.<br />

Ad esempio, consideriamo un sistema che è un doppio integratore con controllo ± u : J&&θ = u .<br />

t 2<br />

0<br />

Scaliamo le variabili in modo che sia && θ = ±1. Otteniamo θ & = t e θ = + θ<br />

2<br />

θ & 2<br />

θ = + θ (otteniamo delle parabole):<br />

2<br />

0<br />

⇒<br />

Se && θ = −1 le parabole sono rivolte al contrario:<br />

Otteniamo una serie di commutazioni:<br />

Il tempo di percorrenza è dato da<br />

T<br />

∫<br />

dt =<br />

θf<br />

∫<br />

0 θ0<br />

dθ<br />

θ&<br />

perché & θ<br />

θ<br />

= d dt<br />

e dt<br />

d<br />

= θ θ & .<br />

64


Applicazione ai sistemi tempo-continui<br />

Nel caso di una sola commutazione il valor medio di & θ è maggiore e quindi è minore il valor<br />

medio di 1 & θ<br />

:<br />

Quindi, il tempo di percorrenza è minore con numero minore di commutazioni.<br />

Per realizzare un controllo di questo tipo occorre possedere un meccanismo di commutazione<br />

molto accurato. Per ovviare a questo problema si può effettuare un controllo in<br />

controreazione: leggendo i valori di θ e & θ si può sapere se si è sui due rami di parabola della<br />

figura seguente e commutare:<br />

La curva di sopra divide il piano θ − θ & in due regioni. Se si commuta dopo aver superato la<br />

curva si può recuperare l’errore:<br />

65


Ottimizzazione<br />

L’unico problema è conoscere la curva di commutazione (in genere nello spazio si ha<br />

un’ipersuperficie di commutazione).<br />

Possiamo sostituire la curva di commutazione con una retta, ma non avremo un sistema che<br />

funziona in modo ottimale:<br />

Ci si può fermare quando si ha un errore minore di un certo valore prefissato.<br />

Se un sistema ha due poli reali distinti si ha un comportamento del seguente tipo:<br />

Se il sistema risponde velocemente alla commutazione si ha il chattering: non appena la retta<br />

viene oltrepassata si ha una commutazione (praticamente il sistema si “inchioda” sulla retta).<br />

Quando il sistema si “inchioda” sulla retta la sua evoluzione è data da θ & + cθ<br />

= 0 , cioè<br />

66


Applicazione ai sistemi tempo-continui<br />

θ = e −ct<br />

ma il valore di c può essere scelto dal progettista. Quindi, il sistema si comporta come<br />

se fosse del primo ordine e come se i suoi parametri fossero quelli imposti.<br />

La linea di commutazione può anche non essere una retta:<br />

In questo modo non viene mai superato il valore massimo della velocità & θ . Quindi, in questo<br />

modo possono essere anche risolti i problemi di robustezza.<br />

La tecnica di controllo illustrata in questo capitolo è detta a struttura variabile (Variable<br />

Structure Systems o VS Control).<br />

5.14<br />

Gramiano di controllabilità<br />

Si abbia il seguente sistema:<br />

&x = Ax + Bu<br />

con x( ) = x e x( T)<br />

= x . L’indice di qualità sia tale da minimizzare la spesa per il controllo:<br />

0<br />

0<br />

f<br />

J<br />

T<br />

1<br />

T<br />

= ∫ u Rudτ<br />

2 0<br />

Otteniamo:<br />

T T<br />

1<br />

T<br />

H = p Ax + p Bu − u Ru<br />

2<br />

&p = −A T p<br />

−1 T<br />

$u ( t) = R B p( t)<br />

La soluzione di &p = −A T p è p( t)<br />

T t<br />

A<br />

= e<br />

− p<br />

0<br />

ma non conosciamo p = p ( ) . Otteniamo:<br />

0<br />

0<br />

−1<br />

− A<br />

$u = R B T T<br />

e p<br />

0<br />

p 0<br />

è un vettore di parametri che bisogna imporre in modo tale che il sistema all’istante t f<br />

vada nello stato x f<br />

:<br />

T<br />

T<br />

A A A<br />

0 ∫<br />

0<br />

A<br />

∫<br />

A T<br />

0<br />

0<br />

t<br />

( t ) ( )<br />

( ) = + ( ) = +<br />

−τ t t−τ −1<br />

T − τ<br />

x t e x e Bu τ dτ e x e BR B e p dτ<br />

0<br />

67


Ottimizzazione<br />

( )<br />

AT<br />

AT<br />

−Aτ<br />

−1<br />

T −A<br />

τ<br />

x = x T = e x + e e BR B e dτ<br />

⋅p<br />

f<br />

0<br />

T<br />

∫<br />

0<br />

−<br />

e A T<br />

− − T − − T T −<br />

− = e A τ 1<br />

e A τ<br />

d ⋅ = e A τ<br />

x x BR B p BMM B e A τ<br />

τ<br />

dτ<br />

⋅p<br />

f<br />

0<br />

T<br />

∫<br />

0<br />

0 0<br />

T<br />

−1 dove R = MM<br />

T ( R è una matrice simmetrica d.p.). La matrice sotto il segno di integrale è<br />

almeno s.d.p. se la coppia ( A, B)<br />

è completamente controllabile: integrando otteniamo una<br />

matrice sicuramente d.p..<br />

La matrice G ( )<br />

c<br />

t<br />

∫<br />

0<br />

T<br />

−Aτ<br />

T T −A<br />

τ<br />

t = e BMM B e dτ<br />

è il gramiano di controllabilità. Si ottiene:<br />

AT<br />

1<br />

( T)[ e ] ( )<br />

1<br />

p = G x − x = G<br />

0<br />

− − −<br />

c<br />

f 0 c<br />

T<br />

−1 T −A<br />

t −1<br />

( t) = e ( T)<br />

$u R B G<br />

In questo modo possiamo ricavare p 0<br />

e quindi $u .<br />

Se x f<br />

= 0 otteniamo:<br />

Il J ottimale è dato da:<br />

T<br />

T A t<br />

( t) = − − e − ( T)<br />

$u R B G x<br />

c<br />

T<br />

∫<br />

ξ<br />

1<br />

c 0<br />

T<br />

T<br />

1<br />

T<br />

⎡<br />

T ⎤<br />

T −1 −At −1 −1 T −A t −1<br />

1<br />

T −1 −At −1<br />

T −A<br />

t −1<br />

J = ξ ∫ G<br />

c<br />

( T) e BR RR B e G<br />

c<br />

( T) dt ⋅ ξ = ξ G<br />

c<br />

( T) ⎢∫<br />

e BR B e dt⎥ G<br />

c<br />

( T)<br />

ξ =<br />

2<br />

2<br />

0<br />

⎣ 0<br />

⎦<br />

1<br />

T −1 −1 1<br />

T −1<br />

= ξ G<br />

c<br />

( T) G<br />

c( T) G<br />

c<br />

( T) ξ = ξ G<br />

c<br />

( T)<br />

ξ<br />

2<br />

2<br />

T<br />

T ξ<br />

0<br />

T<br />

0<br />

1<br />

T −<br />

Se x f<br />

= 0, otteniamo J = x G ( T)<br />

x . Se gli autovalori di ( )<br />

1<br />

c<br />

2 0<br />

0<br />

G c<br />

T sono grandi la spesa per il<br />

controllo sarà piccola.<br />

−1<br />

G ( ) P( )<br />

c<br />

t = t è la soluzione dell’equazione di Riccati. Infatti, se Q = 0 , l’equazione di Riccati è<br />

data da:<br />

T<br />

−1<br />

T<br />

− &P = A P + PA − PRR B P<br />

⇓<br />

−1 −1 −1 −1 −1<br />

− P PP = P A + AP − RR B<br />

⇓<br />

−1<br />

d( P )<br />

−1 T −1 −1<br />

T<br />

= P A + AP − BR B<br />

dt<br />

⇓<br />

T<br />

−1<br />

T<br />

&X = XA + AX − BR B<br />

& T T<br />

che ha soluzione data da X = G ( t ) ⇒ P(<br />

t)<br />

G −1<br />

( t)<br />

c<br />

= .<br />

c<br />

68


Applicazione ai sistemi tempo-continui<br />

Supponendo che sia x f<br />

= 0, possiamo ricavare il controllo in controreazione (all’istante t = 0 )<br />

che porta il sistema a 0 in un tempo T :<br />

−1 T −1<br />

T<br />

u( 0) = − R B G ( T) x( 0) = −k ( 0) x( 0)<br />

c<br />

Si potrebbe utilizzare sempre k( 0 ) ottenendo il controllo u( t) = −k T ( 0 ) x( t)<br />

. La soluzione<br />

ottenuta in questo modo, che non è ottima, è detta legge di controllo ad orizzonte sfuggente o<br />

recessivo (receding horizon) perché si utilizza sempre la matrice k( 0 ) che porta a 0 il sistema<br />

(all’istante t = 0 ): è come se si traslasse l’orizzonte di controllo. In questo modo non c’è più la<br />

garanzia che dopo un certo tempo si raggiunge la posizione desiderata. La matrice k( 0 ) ,<br />

inoltre, potrebbe anche destabilizzare il sistema.<br />

−1 T −1<br />

La matrice a ciclo chiuso A A BR B G ( )<br />

c<br />

= −<br />

c<br />

T ha gli autovalori a parte reale negativa. Per<br />

dimostrare questo basta dimostrare che l’equazione di Lyapunov è soddisfatta, tenendo conto<br />

−1<br />

del fatto che G ( ) P( )<br />

c<br />

t = t :<br />

T<br />

A P + PA = −Q<br />

c<br />

⇓<br />

T −1 T −1 T T −1<br />

T<br />

A P − PBR B P + PA − PBR B P = A P + PA − 2PBR B P =<br />

T<br />

~ −1<br />

T<br />

= A P + PA − PBR B P = −Q<br />

dove R<br />

~ = 2 R .<br />

Variando il valore di T cambia il gramiano e, se T aumenta, aumenta (in norma) anche il<br />

gramiano (è un integrale di matrici d.p.). Se la norma di G c<br />

( T ) cresce al crescere di T , quella<br />

−1<br />

di G c<br />

( T)<br />

(e quindi quella di u ) decresce al crescere di T .<br />

Se una componente di u è troppo elevata per il controllo possiamo modificare la matrice R<br />

“giostrando” lo sforzo sui vari canali oppure possiamo aumentare il tempo T .<br />

c<br />

69


Applicazione ai sistemi tempo-discreti<br />

6. APPLICAZIONE AI SISTEMI TEMPO-<br />

DISCRETI<br />

6.1 Equazione di Riccati<br />

Consideriamo un sistema lineare tempo-discreto:<br />

x<br />

+ 1<br />

= Ax + Bu<br />

k k k<br />

con x( ) = x e cerchiamo una legge di controllo che minimizzi il seguente indice di qualità:<br />

0<br />

0<br />

N−1<br />

1<br />

T<br />

1<br />

J = x<br />

NFx N<br />

+ x Qx + u Ru<br />

2 2 0<br />

T<br />

T<br />

∑ ( i i i i )<br />

con F , Q ed R simmetriche almeno s.d.p. ( R sia d.p.). Supponiamo che la coppia ( A B)<br />

completamente controllabile.<br />

Applichiamo i moltiplicatori di Lagrange all’indice di sopra:<br />

i=<br />

N−1<br />

∑[ i<br />

( )]<br />

T<br />

T<br />

i i i<br />

2<br />

i+ 1 i i i+<br />

1<br />

1<br />

T<br />

1<br />

J = x<br />

NFx N<br />

+ x Qx + u Ru + p Ax + Bu − x<br />

2 2<br />

i=<br />

0<br />

, sia<br />

Se siamo in corrispondenza della posizione ottimale, J è minimo e, se imponiamo una<br />

variazione di alcune variabili, deve essere dJ = 0:<br />

N−1<br />

T<br />

T<br />

T<br />

T<br />

T<br />

( N N ) N ∑( i i+<br />

1) i ∑( i<br />

i+<br />

1)<br />

i ∑<br />

T<br />

dJ = Fx − p dx + Ru + B p du + Qx + A p dx + p dx<br />

=<br />

i=<br />

0<br />

N−1<br />

T<br />

T<br />

T<br />

T<br />

( N N ) N ∑ ( i i+<br />

1) i ∑ ( i<br />

i+<br />

1 i )<br />

= Fx − p dx + Ru + B p du + Qx + A p − p dx<br />

= 0<br />

i=<br />

0<br />

N−2<br />

N−1<br />

N−1<br />

N−1<br />

∑ i+ 1 i+<br />

1 ∑ j j ∑ i i ∑<br />

i=<br />

0<br />

j=<br />

1<br />

i=<br />

1<br />

i=<br />

0<br />

T<br />

T<br />

T<br />

T<br />

perché p dx = p dx = p dx = p dx<br />

i<br />

N−1<br />

i=<br />

0<br />

i<br />

N−1<br />

scegliere le u i<br />

e le p i<br />

opportunamente in modo che sia dJ ≡ 0.<br />

Annulliamo tutti i termini:<br />

p<br />

N<br />

= Fx<br />

N<br />

T<br />

i=<br />

0<br />

$u<br />

i<br />

= −R − 1<br />

B p<br />

i+<br />

1<br />

T<br />

p<br />

i<br />

= Qx<br />

i<br />

+ A pi+1<br />

N−2<br />

i=<br />

0<br />

T<br />

i<br />

i+ 1 i+<br />

1<br />

( dx 0<br />

= 0: x 0<br />

è fissato). Possiamo<br />

71


Ottimizzazione<br />

Quindi:<br />

72<br />

−1<br />

T<br />

x = Ax − BR B p<br />

i+<br />

1<br />

i<br />

Per poter trovare la soluzione ottima abbiamo dovuto aggiungere altre variabili p .<br />

Abbiamo il problema di dover integrare parte delle equazioni in avanti e parte all’indietro. Ma<br />

A è in genere invertibile perché spesso i sistemi tempo-discreti sono ottenuti da<br />

H<br />

discretizzazioni di sistemi tempo-continui ( A = e T , dove H è la matrice dinamica del<br />

sistema tempo-continuo). Quindi:<br />

i+<br />

1<br />

−T<br />

−T<br />

p = − A Qx + A p<br />

i+<br />

1<br />

T<br />

T<br />

T T<br />

( ) ( )<br />

−1 T − − −1 − −1<br />

T −T<br />

x = Ax − BR B − A Qx + A p = A + BR B A Q x − BR B A p<br />

i+<br />

1<br />

i<br />

i<br />

Se conosciamo p 0<br />

quest’equazione può essere integrata in avanti. Otteniamo:<br />

⎛x<br />

⎜<br />

⎝p<br />

k<br />

k<br />

⎞<br />

⎟ = ⎡ ⎠ ⎣ ⎢<br />

Φ<br />

Φ<br />

i<br />

i<br />

( k, h) Φ ( k,<br />

h)<br />

( k, h) Φ ( k,<br />

h)<br />

11 12<br />

21 22<br />

i<br />

⎤ x<br />

h<br />

⎥ ⎛ ⎦⎝ ⎜ ⎞<br />

⎟<br />

p<br />

h⎠<br />

La trattazione è del tutto generale (è valida anche per sistemi tempovarianti), per questo le<br />

Φ ij<br />

( k, h)<br />

sono funzioni di due istanti di tempo.<br />

La matrice dinamica è la seguente:<br />

Otteniamo:<br />

1 1<br />

⎡A + BR B A Q − BR B A<br />

⎢<br />

T<br />

−T<br />

⎣ − A Q<br />

A<br />

− T −T − T −T<br />

( N, i) Φ ( N,<br />

i)<br />

Φ ( N, i) Φ ( N,<br />

i)<br />

⎤<br />

⎥ ∈R<br />

⎦<br />

p = Φ x + p = Fx<br />

N 21 i 22 i N<br />

x = x + p<br />

N 11 i 12 i<br />

2n×<br />

2n<br />

⇓<br />

FΦ N, i − Φ N, i x = Φ N, i − FΦ<br />

N,<br />

i p<br />

[ 11( )<br />

21( )] i 22<br />

( )<br />

12<br />

( )<br />

⇓<br />

[ ]<br />

−1<br />

[ Φ22 ( N, i) Φ12<br />

( N, i)<br />

] Φ11( N, i) Φ21( N,<br />

i)<br />

[ ]<br />

p = − F ⋅ F − x<br />

i<br />

Le p i<br />

possono scriversi in funzione delle x i<br />

tramite una matrice di dimensione n × n (in<br />

generale dipendente dal tempo). Nel caso dei sistemi tempo-continui era p( t) = P( t) x( t)<br />

con<br />

P( t ) soluzione dell’equazione di Riccati. Nel caso dei sistemi tempo-discreti possiamo quindi<br />

scrivere:<br />

p<br />

= P x con P F<br />

i i i<br />

Le matrici P i<br />

vengono chiamate matrici o trasformazioni di Riccati. P i<br />

in genere è<br />

tempovariante e può essere calcolata in modo esplicito perché le matrici ( k h)<br />

conosciute.<br />

N =<br />

i<br />

i<br />

i<br />

Φ ij<br />

i<br />

, sono


Applicazione ai sistemi tempo-discreti<br />

Otteniamo:<br />

T<br />

p<br />

i<br />

= Qx<br />

i<br />

+ A p ⇒ P x Qx A T<br />

P x<br />

i+1 i i<br />

=<br />

i<br />

+<br />

i+ 1 i+<br />

1<br />

−1<br />

T<br />

−1<br />

T<br />

x = Ax − BR B p ⇒ x = Ax − BR B P x<br />

i+<br />

1<br />

i<br />

i+<br />

1<br />

i+<br />

1<br />

( + − 1 T<br />

+ 1)<br />

+ 1<br />

=<br />

T<br />

−1<br />

T<br />

i 1( i 1)<br />

I BR B P x Ax<br />

i i i<br />

P x = Qx + A P I + BR B P Ax<br />

i i i<br />

+<br />

⇓<br />

+<br />

−1<br />

−1<br />

T<br />

( i 1)<br />

T<br />

P = Q + A P I + BR B P A<br />

i<br />

i+<br />

1<br />

Se è nota P i+1<br />

si calcola P i<br />

partendo dalla condizione P<br />

n × n .<br />

Si può dimostrare che:<br />

N =<br />

+<br />

i<br />

i<br />

−1<br />

vera ∀x i<br />

T<br />

−1<br />

T<br />

[ i+ 1 i+ 1 ( i+<br />

1 ) i+<br />

1]<br />

T<br />

P = Q + A P − P B R + B P B B P A<br />

i<br />

(equazione di Riccati per i sistemi tempo-discreti). Infatti:<br />

−1<br />

T<br />

−1<br />

T<br />

T<br />

( + ) = − ( + )<br />

i+ 1 i+<br />

1<br />

F . P i<br />

è una matrice di dimensione<br />

−1<br />

T<br />

[ i+ 1 i+ 1 i+<br />

1<br />

i+<br />

1]<br />

T<br />

A P I BR B P A A P P B R B P B B P A<br />

i+<br />

1<br />

i+<br />

1<br />

−1<br />

T<br />

−1<br />

T<br />

−1<br />

T<br />

Pi+<br />

1( I + BR B Pi+<br />

1) = Pi + 1<br />

− Pi+ 1B( R + B Pi+<br />

1B)<br />

B Pi+<br />

1<br />

( I + BR 1 T<br />

−1<br />

T<br />

−1<br />

T<br />

B Pi<br />

+ 1) = I − B( R + B Pi+<br />

1B)<br />

B Pi<br />

+ 1<br />

( + 1 T<br />

−1<br />

T<br />

−1<br />

−1<br />

T<br />

T<br />

−<br />

i+<br />

1)( +<br />

i+<br />

1) = ( +<br />

i+ 1) − ( +<br />

i+<br />

1 )<br />

= −<br />

T<br />

−1<br />

T<br />

−1<br />

T<br />

−1<br />

T<br />

T<br />

( +<br />

i+<br />

1 ) i+<br />

1<br />

+<br />

i+<br />

1<br />

−<br />

i+ 1 ( +<br />

i+<br />

1 )<br />

(<br />

T<br />

−1<br />

T<br />

−1<br />

T<br />

−1<br />

T<br />

T<br />

−1<br />

i+<br />

1 ) i+<br />

1<br />

i+<br />

1<br />

i+ 1 ( i+<br />

1 )<br />

T<br />

T<br />

−1<br />

−1 −1<br />

T<br />

T<br />

−1<br />

− ( R + B Pi<br />

1B) + R − R B Pi<br />

1B( R + B Pi<br />

1B)<br />

= 0<br />

⇓<br />

1<br />

T<br />

[ i+<br />

1]<br />

I BR B P I BR B P I BR B P I B R B P B B P<br />

T<br />

I I B R B P B B P BR B P BR B P B R B P B B P<br />

− B R + B P B B P + BR B P − BR B P B R + B P B B P<br />

i +<br />

=<br />

+<br />

+ +<br />

−1<br />

T<br />

i+<br />

1<br />

0<br />

−1<br />

T<br />

− I + I + R B P B − R B P B =<br />

i+<br />

1<br />

T<br />

m×<br />

n<br />

In questo modo viene richiesta l’inversione della matrice R + B Pi+<br />

1<br />

B ∈R , dove m è il<br />

numero degli ingressi ed n è il numero delle variabili di stato. Di norma è m < n . Se m = 1<br />

abbiamo solo uno scalare da invertire.<br />

P risulta d.p. perché è somma di matrici simmetriche reali almeno s.d.p. (perché P = N<br />

F è<br />

reale simmetrica almeno s.d.p.) 1 .<br />

Se R = r I e r → ∞ significa che non si vuol spendere nulla per il controllo ( u ≡ 0 ). La<br />

soluzione che si ottiene è quella di lasciare il sistema in evoluzione libera:<br />

T<br />

Pi<br />

= Q + A Pi+1A<br />

−1<br />

i+<br />

1<br />

1<br />

0<br />

1 Per questioni di tipo numerico può darsi che durante i vari passi la matrice P i<br />

non risulti sempre d.p.. Esistono<br />

dei metodi che tendono a minimizzare questo inconveniente. Ad esempio, la matrice P i<br />

può essere scritta come<br />

T<br />

P = M M . Ad ogni passo deve essere calcolata la matrice M i<br />

invece della matrice P i<br />

.<br />

i i i<br />

73


Ottimizzazione<br />

+<br />

i<br />

→ 0. Portiamo il numero di passi all’infinito. Se il sistema è stabile gli<br />

autovalori di A sono in modulo minori di 1 e la matrice P i<br />

è convergente: Pi+ 1<br />

= Pi<br />

= P per<br />

i → ∞ . La soluzione di regime si ottiene risolvendo l’equazione:<br />

T<br />

perché ( R B P B)<br />

− 1<br />

P = Q + A T PA ⇒ P − A T PA = Q (equazione di Lyapunov per i sitemi tempodiscreti)<br />

In questo caso è:<br />

∞<br />

x Q x x P T<br />

T<br />

∑ i i<br />

= x<br />

2 2<br />

i=<br />

0<br />

0 0<br />

Infatti:<br />

Possiamo porre ( x )<br />

Quindi V( )<br />

∞<br />

∞<br />

∞<br />

∞<br />

∞<br />

∑ i i ∑ i i ∑ i<br />

i ∑ i i ∑<br />

i=<br />

0 i=<br />

0 i=<br />

0 i=<br />

0<br />

i=<br />

0<br />

i<br />

x T Qx x T Px x T T<br />

A PAx x T<br />

T<br />

T<br />

= − = Px − x Px = x Px<br />

V i i<br />

T<br />

= 1 x Pix<br />

2<br />

i<br />

i+ 1 i+<br />

1<br />

0 0<br />

ottenendo che ∆V < 0 se è soddisfatta l’equazione di Riccati.<br />

x è una soluzione dell’equazione di Lyapunov. Infatti:<br />

1<br />

T<br />

T<br />

1<br />

T T<br />

T<br />

1<br />

T<br />

∆V = V( x<br />

i+ 1) − V( x<br />

i ) = ( x<br />

i+ 1Pi+ 1xi+ 1<br />

− x<br />

i<br />

Pix i ) = ( x<br />

i<br />

A Pi+<br />

1Ax i<br />

− x<br />

i<br />

P1x i ) = − x<br />

i<br />

Qx<br />

2<br />

2<br />

2<br />

La legge di controllo ottenuta in questo modo assicura la stabilità.<br />

−T<br />

Poiché p<br />

+<br />

= A ( p − Qx )<br />

i 1 i i<br />

e p<br />

i<br />

Pix<br />

i<br />

= , la legge di controllo nel caso generale è data da:<br />

( )<br />

−1<br />

T −T<br />

u = −R B A P − Q x<br />

(controllo in controreazione).<br />

L’equazione di Riccati può anche essere scritta nel seguente modo:<br />

i<br />

T<br />

P = A G A + Q<br />

i<br />

T<br />

G<br />

i+ 1<br />

Pi+ 1<br />

Pi+ 1B R B Pi<br />

+ 1B B Pi+<br />

1<br />

. Se<br />

A è stabile, l’orizzonte di controllo tende all’infinito e gli elementi di R tendono all’infinito,<br />

allora G i + 1<br />

tende a P i+1<br />

:<br />

T<br />

(in modo simile all’equazione di Lyapunov) dove = − ( + )<br />

i+1<br />

T<br />

P = A P A + Q<br />

La matrice G i+1<br />

è reale simmetrica d.p. anche se contiene una differenza.<br />

i<br />

i+1<br />

i<br />

i<br />

−1<br />

i<br />

6.2 Indice di qualità<br />

L’indice di qualità è dato da:<br />

74


Applicazione ai sistemi tempo-discreti<br />

J k<br />

N−1<br />

⎛ T<br />

T<br />

N ∑ ⎜ i i i<br />

2 ⎝<br />

i=<br />

k 2 2<br />

T<br />

⎞<br />

= x F N<br />

x + x Q x + u R u<br />

i ⎟<br />

⎠<br />

⇓<br />

J N<br />

= x F x = x P x<br />

N<br />

T<br />

T N<br />

2<br />

N N<br />

2<br />

N<br />

Il problema è quello di determinare il min<br />

u k<br />

J k<br />

.<br />

Cerchiamo una formula iterativa che leghi J N−1<br />

ad J N<br />

. J N−1<br />

è dato da:<br />

In questo caso bisogna calcolare il min<br />

tutta la sequenza u k<br />

.<br />

Poiché x<br />

N<br />

= Ax<br />

N<br />

+ Bu , allora:<br />

−1 N−1 J N −1<br />

=<br />

Q R x u u<br />

2 2 2<br />

T<br />

T<br />

T<br />

J N −1 = x F N<br />

x<br />

N<br />

+ x<br />

N−1 N−1 +<br />

N−1 N−1<br />

J N −<br />

u N −1<br />

T T T T<br />

( x A + u B ) P ( Ax + Bu )<br />

N−1 N−1 N N−1 N−1<br />

1 , cioè bisogna solo scegliere l’ingresso u N−1 e non<br />

Q R<br />

+ x x + u u<br />

2 2 2<br />

Deriviamo l’espressione a secondo membro rispetto ad u N−1<br />

:<br />

∂<br />

∂u<br />

Otteniamo:<br />

N−1<br />

⎡<br />

⎢<br />

⎣⎢<br />

T T T T<br />

( x A + u B ) P ( Ax + Bu )<br />

T<br />

T<br />

N−1 N−1 N−1 N−1<br />

N N N T<br />

Q R<br />

x<br />

N x u<br />

T<br />

+<br />

N<br />

+<br />

N u<br />

2 2 2<br />

N−1 N−1 −1 −1<br />

⇓<br />

T<br />

B P Ax<br />

T<br />

+ B P Bu + Ru =<br />

N<br />

N−1 N N−1 N−1 0<br />

⇓<br />

T<br />

( N )<br />

T<br />

$u = − R + B P B B P Ax<br />

N−1<br />

−1<br />

−1 −1 −1 N−1<br />

N<br />

N−1<br />

⎤<br />

⎥<br />

⎦⎥ = 0<br />

T T T T<br />

T<br />

T<br />

( x<br />

N−1A + u<br />

N−1B ) PN ( Ax<br />

N−1 + Bu<br />

N−1)<br />

+ x<br />

N−1Qx N−1 + u<br />

N−1Ru<br />

N−1<br />

=<br />

T<br />

T<br />

T<br />

T T<br />

T<br />

T<br />

( N ) N N ( N ) N<br />

2<br />

N N N N ( N )<br />

T T<br />

T<br />

−1<br />

T<br />

T T<br />

T<br />

−1<br />

T<br />

x<br />

N−1A PN<br />

B( R B PNB)<br />

B PNAx N−1 2 x<br />

N−1A PNB( R B PNB)<br />

B PN<br />

Ax<br />

N−1<br />

T<br />

T<br />

T<br />

T<br />

−1<br />

T<br />

T<br />

= x Q + A P A − A P B( R + B P B)<br />

B P A x = x P x<br />

T<br />

= x Q + A P A x + u R + B P B u + u B P Ax = x Q + A P A x +<br />

N−1 −1 −1 −1 −1 −1 −1 N−1<br />

+ + −<br />

N−1<br />

[ N<br />

N<br />

N<br />

]<br />

+ =<br />

N N−1 N−1 N−1 N−1<br />

Quindi:<br />

Si può dimostrare che in generale è:<br />

P<br />

2<br />

T N−1<br />

J N −1 = x N −1<br />

x<br />

N−1<br />

75


Ottimizzazione<br />

T i<br />

J i<br />

= x P i<br />

x<br />

2 i<br />

6.3 Proprietà della matrice hamiltoniana<br />

Abbiamo dimostrato che gli autovalori della matrice hamiltoniana di un sistema tempocontinuo<br />

sono simmetrici rispetto all’asse immaginario. Si può dimostrare che gli autovalori<br />

della matrice hamiltoniana di un sistema tempo-discreto sono speculari rispetto al cerchio<br />

unitario (se tale matrice ha un autovalore z ha anche l’autovalore 1 z ).<br />

Abbiamo dimostrato che valgono le seguenti relazioni:<br />

Se le condizioni iniziali sono nulle si ottiene:<br />

−1<br />

T<br />

⎧x i+<br />

1<br />

= Ax<br />

i<br />

− BR B p<br />

⎨<br />

T<br />

⎩p i<br />

= Qx<br />

i<br />

+ A p<br />

i+<br />

1<br />

i+<br />

1<br />

−1 T<br />

⎧zX( z) = AX( z) − BR B zP( z)<br />

⎨<br />

T<br />

⎩ P( z) = QX( z) + A zP( z)<br />

⇓<br />

−1<br />

T<br />

⎡zI − A − BR B ⎤ X( z)<br />

⎢<br />

T ⎥ ⎛<br />

⎣ Q z I − A ⎦⎝ ⎜ ⎞<br />

−<br />

⎟ =<br />

zP( z)<br />

⎠<br />

1<br />

0<br />

dove X( z ) è la z-trasformata di x i<br />

e P( z ) è la z-trasformata di p i<br />

.<br />

Supponiamo che [ u<br />

i<br />

v<br />

i ]<br />

l’autovalore associato:<br />

T<br />

sia un autovettore della matrice hamiltoniana e che z sia<br />

−1<br />

T<br />

⎡zI − A − BR B ⎤ u<br />

i<br />

u<br />

i<br />

⎢<br />

T ⎥ ⎡ z<br />

⎣ Q z I − A ⎦⎣ ⎢<br />

⎤<br />

v<br />

⎥ = ⎡<br />

i ⎦ ⎣ ⎢ ⎤<br />

−1<br />

v<br />

⎥<br />

i ⎦<br />

⇓<br />

−1<br />

T<br />

⎧zu i<br />

− Au<br />

i<br />

− BR B v<br />

i<br />

= zu<br />

i<br />

⎨<br />

−1<br />

T<br />

⎩Qui<br />

+ z v<br />

i<br />

− A v<br />

i<br />

= zv<br />

i<br />

Se esiste un autovalore z con autovettore destro associato [ u<br />

i<br />

v<br />

i ]<br />

z −1 T<br />

con autovettore sinistro associato [ v<br />

i<br />

u<br />

T i ]:<br />

−1<br />

⎡zI − A − BR B<br />

T T<br />

−1<br />

T T<br />

[ v<br />

i<br />

u<br />

i ] ⎢<br />

−1<br />

T ⎥ = z [ v<br />

i<br />

u<br />

i ]<br />

⎣ Q z I − A ⎦<br />

⇓<br />

T T T −1<br />

T<br />

⎧v i<br />

z − v<br />

i<br />

A + u<br />

i<br />

Q = z v<br />

i<br />

⎨ T −1 T T −1 T T −1<br />

⎩− v<br />

i<br />

BR B + ui<br />

z − u<br />

i<br />

A = z u<br />

T<br />

⎤<br />

T<br />

i<br />

T<br />

esiste anche l’autovalore<br />

76


Applicazione ai sistemi tempo-discreti<br />

Quindi, z −1 è autovalore della matrice hamiltoniana.<br />

6.4 Luogo reciproco delle radici<br />

T<br />

Se abbiamo un sistema SISO, u Ru = ru<br />

L’indice di qualità può essere scritto come:<br />

2<br />

(scalare) e Q<br />

= c T c , dove c è un vettore riga.<br />

J =<br />

dove v = cx , v ∈R .<br />

La matrice hamiltoniana diventa la seguente:<br />

∞<br />

∫<br />

0<br />

T T<br />

2<br />

x c cx + Ru 1 dt = ∫ ( v<br />

2<br />

+ ru<br />

2<br />

) dt<br />

2 2<br />

∞<br />

0<br />

⎡<br />

⎢ A<br />

⎢ T<br />

⎣c c<br />

bb<br />

r<br />

− A<br />

T<br />

T<br />

⎤<br />

⎥<br />

⎥<br />

⎦<br />

che ha polinomio caratteristico dato da:<br />

Otteniamo:<br />

⎧<br />

⎪⎡<br />

= det⎨⎢<br />

⎣⎢<br />

⎩<br />

⎪<br />

a<br />

a<br />

c<br />

( zI<br />

− A)<br />

0<br />

( z) a (<br />

1<br />

c z)<br />

( z) a (<br />

1<br />

)<br />

0 0<br />

−1<br />

z<br />

0<br />

−1<br />

T<br />

( z I − A )<br />

T<br />

⎡<br />

det s bb<br />

⎢ I − A −<br />

⎢<br />

r<br />

T<br />

⎣ − c c sI + A<br />

⎧<br />

⎪⎡<br />

= det⎨⎢<br />

⎣<br />

⎩<br />

⎪<br />

( zI<br />

− A)<br />

−1<br />

⎡<br />

−1<br />

⎢I − ( zI − A)<br />

bb<br />

= det⎢<br />

⎢0<br />

⎣⎢<br />

0<br />

−1<br />

T<br />

⎤⎡<br />

bb<br />

z<br />

⎥⎢<br />

I − A −<br />

r<br />

T<br />

1<br />

⎦⎥<br />

⎢<br />

−<br />

⎣ c c z I − A<br />

T<br />

T<br />

0⎤⎡I<br />

⎥⎢<br />

I⎦⎣0<br />

⎤<br />

⎥ a ( s) a ( s)<br />

c c<br />

⎥ = − = 0<br />

⎦<br />

−1<br />

T<br />

( z I − A )<br />

T<br />

0<br />

−1<br />

⎤⎫<br />

⎡<br />

⎥⎪<br />

⎬ = det<br />

⎢<br />

⎥ ⎢<br />

⎦⎭<br />

⎪<br />

⎣⎢<br />

z<br />

T<br />

⎤<br />

⎡<br />

bb<br />

z<br />

⎥<br />

⎢ I − A −<br />

r<br />

⎦⎢<br />

T −1<br />

⎣ c c z I − A<br />

T<br />

⎤⎫<br />

⎥⎪<br />

⎬ =<br />

⎥<br />

⎦⎭<br />

⎪<br />

I<br />

−1<br />

− ( zI − A)<br />

bb<br />

r<br />

T<br />

−1<br />

T<br />

I − A c c I<br />

−1<br />

( )<br />

r<br />

T T<br />

T<br />

( z ) ( z )<br />

T T<br />

r<br />

I ( z I A ) c c( zI A)<br />

bb I I A c c I A bb<br />

−1<br />

−1 −1<br />

⎥ = det⎢<br />

+ − −<br />

−1<br />

−1 −1<br />

+ − − ⎥ ⎣<br />

⎡<br />

= ⎢ + − −<br />

⎣<br />

r<br />

T<br />

⎤ ⎡<br />

− − −<br />

⎥ = +<br />

r<br />

⎢ A bb T<br />

1<br />

I A c<br />

⎦ ⎣<br />

r<br />

−1<br />

= 1+<br />

1 ( ) ( )<br />

r G z G z<br />

T T<br />

I ( z I A ) c c( zI A)<br />

bb −1<br />

−1 −1<br />

1 1 T<br />

det det I c( zI<br />

− ) ( z − )<br />

⎤<br />

⎥<br />

⎦⎥<br />

⎡<br />

T<br />

T<br />

⎤<br />

⎥ =<br />

⎦<br />

⎤<br />

⎥ =<br />

⎦<br />

T<br />

⎤<br />

⎥<br />

⎥<br />

=<br />

⎦⎥<br />

dove a 0<br />

è il polinomio caratteristico a ciclo aperto e det( I + MN) = det( I + NM)<br />

.<br />

77


Ottimizzazione<br />

Gli autovalori relativi alle x i<br />

sono quelli interni al cerchio unitario, mentre quelli relativi alle<br />

p i<br />

sono quelli esterni al cerchio unitario.<br />

6.5 Esempi<br />

Negli esempi che seguono si vedrà che il luogo reciproco delle radici non porta tutti i poli<br />

nell’origine. Quindi i filtri FIR (che hanno la proprietà di avere tutti i poli nell’origine) non<br />

sono ottimi.<br />

6.5.1<br />

.1<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

G( z)<br />

1<br />

=<br />

z − 1<br />

Otteniamo il seguente luogo reciproco delle radici:<br />

1 1 1 1<br />

+<br />

1 1 − 1 − 1<br />

= − z<br />

−<br />

r z z r ( z − 1)<br />

1 2<br />

= 0<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

Il ramo relativo alla x è quello compreso tra l’origine ed il punto 1.<br />

Se il valore di k<br />

= − 1 fosse positivo si otterrebbe il seguente luogo delle radici:<br />

r<br />

78


Applicazione ai sistemi tempo-discreti<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

In questo caso si avrebbe stabilità solo per un valore di r maggiore di un valore r c<br />

. Ma il<br />

sistema deve essere sempre stabile a prescindere dal valore di r .<br />

6.5.2<br />

.2<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

G( z)<br />

= 1 1<br />

z − 1 z − 2<br />

Otteniamo il seguente luogo reciproco delle radici:<br />

1 1 1 z z<br />

1+<br />

= 0<br />

2r z − 1 z − 2 z − 1 z − 1 2<br />

2<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2<br />

-3 -2 -1 0 1 2 3<br />

asse reale<br />

I due rami vicini all’origine sono quelli relativi alla x .<br />

79


Ottimizzazione<br />

6.5.3<br />

.3<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

G( z)<br />

=<br />

z − 2<br />

z( z −1)<br />

Otteniamo il seguente luogo reciproco delle radici:<br />

( )<br />

( )<br />

( )( )<br />

( ) ( )<br />

1 1 2 −1<br />

2<br />

1 1 2 1 2 1 2 2 1<br />

z<br />

2<br />

+<br />

( 1)<br />

1 1 2<br />

−− ⋅ z −<br />

z − z − z z − z −<br />

= +<br />

= +<br />

− −<br />

r z z z z − 1 r z( z − 1)( 1−<br />

z)<br />

r ( z − 1)<br />

= 0<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

6.5.4<br />

.4<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

G( z)<br />

=<br />

z − 2<br />

( z − )( z − )<br />

1 1 2<br />

z − p<br />

Termini del tipo introducono solo uno sfasamento.<br />

⎛⎜<br />

⎝z<br />

− 1 ⎞⎟<br />

p ⎠<br />

Otteniamo il seguente luogo reciproco delle radici:<br />

( )<br />

1 1 2<br />

−1<br />

z −<br />

z − 2<br />

1 1 z − 2 z 1−<br />

2z<br />

+<br />

⋅<br />

r 1 1 2<br />

1 1 2<br />

1 1 2<br />

1−<br />

z 1−<br />

1 2<br />

z<br />

⋅<br />

= +<br />

−1 −1<br />

( z − )( z − ) ( z − )( z − )<br />

r ( z − )( z − )<br />

( )<br />

1 4 ( )( 2<br />

1<br />

z − z z − 2<br />

z<br />

= −<br />

⋅<br />

= −<br />

r z − 1 z − 1 2 )<br />

z − 1 z − 2 r z −<br />

1 4 ( )( ) ( 1)<br />

( )( )<br />

2<br />

= 0<br />

=<br />

80


Applicazione ai sistemi tempo-discreti<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

6.5.5<br />

Si abbia un sistema caratterizzato dalla seguente f.d.t.:<br />

z − 1<br />

G( z)<br />

2<br />

=<br />

( z − 1)( z − 2)<br />

Otteniamo il seguente luogo reciproco delle radici:<br />

1 z − 1<br />

1−<br />

2<br />

⋅<br />

4r<br />

( z − 1)( z − 2)<br />

z( z − 2)<br />

1 z<br />

= 1−<br />

z − 1 z − 1 4r<br />

z − 1<br />

2<br />

( )( ) ( )<br />

2<br />

= 0<br />

1.5<br />

1<br />

asse immaginario<br />

0.5<br />

0<br />

-0.5<br />

-1<br />

-1.5<br />

-2 -1.5 -1 -0.5 0 0.5 1 1.5 2<br />

asse reale<br />

81


Ottimizzazione<br />

6.6 Filtro di Kalman<br />

Il filtro di Kalman (che in realtà è un algoritmo) può essere utilizzato per stimare i parametri<br />

di un sistema lineare (anche non stazionario) che può presentare del rumore (incertezze) sia<br />

sulle variabili di stato che sull’uscita.<br />

Si abbia un modello del seguente tipo:<br />

⎧x + 1<br />

= Φ x + w<br />

⎨<br />

⎩zk = H<br />

kx k<br />

+ v<br />

k<br />

k k k k<br />

n<br />

m<br />

con w k<br />

∈R e v k<br />

∈R rumori bianchi. La matrice Φ k<br />

può essere tempovariante. Il modello<br />

è stocastico perché presenta dei rumori bianchi.<br />

Otteniamo:<br />

E[ w<br />

kw<br />

T<br />

i ]<br />

E[ v<br />

kv<br />

T<br />

i ]<br />

⎧0 se k ≠ i<br />

= ⎨<br />

⎩Q<br />

k<br />

se k = i<br />

⎧0 se k ≠ i<br />

= ⎨<br />

⎩R<br />

k<br />

se k = i<br />

dove Q k<br />

ed R k<br />

sono matrici di correlazione. Supponiamo che non ci sia correlazione tra w k<br />

e v k<br />

(le cause che originano i rumori w k<br />

e v k<br />

siano diverse):<br />

T<br />

E[ w k<br />

v i ] = 0 ∀k , ∀i<br />

Se abbiamo una stima $x k − della x basata sui valori precedenti a t k<br />

(abbiamo il simbolo ‘-’) 2<br />

possiamo valutare l’errore di stima, dato da:<br />

−<br />

e = x − x$<br />

−<br />

k k k<br />

Possiamo calcolare la matrice di covarianza dell’errore di stima:<br />

T<br />

T<br />

T<br />

[ $ $ ] [ k k ] [ $<br />

k k ] [ $<br />

k k ] [ $ $<br />

k k ]<br />

T<br />

T<br />

T T<br />

[ ] ( k k )( k k )<br />

P = E e e = E x − x x − x = E x x − E x x − E x x + E x x<br />

− − − − − − − − −<br />

k k k<br />

Conoscendo z k<br />

possiamo stimare x k<br />

:<br />

−<br />

( )<br />

−<br />

x$ = x$ + K z − H x$<br />

k k k k k k<br />

dove K k<br />

è una matrice di correzione (detta guadagno di Kalman) e z<br />

−<br />

− H x$ è detta<br />

k k k<br />

−<br />

innovazione. Lo scostamento tra $x k<br />

e $x k<br />

può essere esclusivamente dovuto al rumore v k<br />

sulla misura ma in genere non è così.<br />

Il problema è quello di calcolare K k<br />

in modo che la nostra previsione si discosti di poco dalla<br />

misura.<br />

2<br />

Il simbolo ‘^’ indica che si tratta di una stima.<br />

82


Applicazione ai sistemi tempo-discreti<br />

Se definiamo e<br />

k<br />

= x<br />

k<br />

− x$ k<br />

possiamo calcolare la matrice di covarianza dell’errore dopo la<br />

stima:<br />

T<br />

T T<br />

Pk = E[ e<br />

ke k ] = E[ ( x<br />

k<br />

− x$ k )( x<br />

k<br />

− x$<br />

k )]<br />

=<br />

− − − −<br />

[ x x$ K ( z H x$ )][ x x$ k k k k k k k k<br />

K<br />

k ( zk H<br />

kx$<br />

k )]<br />

T T T T<br />

T<br />

( )( k k ) k<br />

E<br />

k k k k k<br />

− T − T T T<br />

+ E K<br />

k ( zk − H<br />

kx$ k )( zk<br />

− x$<br />

k<br />

H<br />

k ) K<br />

k<br />

T<br />

{ }<br />

T<br />

E[ $ $ ] [ ( $ )( $<br />

k )]<br />

[ ]<br />

= E − − − − − − =<br />

− − − − −<br />

= P − x − x z − x H K − K z − H x x − x +<br />

k k k k<br />

T T T T T<br />

T T<br />

{( $ )[( $<br />

k ) k k ] k } E [ ( $ ) ]( $<br />

k k k k k k k )<br />

−<br />

T − T T T T<br />

+ E K<br />

k[ H<br />

k ( x<br />

k<br />

− x$ k ) + v<br />

k ] ( x<br />

k<br />

− x$<br />

k ) H<br />

k<br />

+ v<br />

k<br />

K<br />

k<br />

=<br />

{ }<br />

[ ]<br />

− − − − −<br />

P = P − E x − x x − x H + v K − K H x − x + v x − x +<br />

k k k k k<br />

{ }<br />

− − T T<br />

− − T T<br />

T<br />

= P − P H K − K H P + K H P H K + K R K =<br />

k k k<br />

k<br />

T<br />

= K R K + I − K<br />

k k k<br />

k k k k k k k<br />

−<br />

( H ) P ( I − K H )<br />

k k k k k<br />

k<br />

T<br />

k k k<br />

perché v k<br />

è scorrelato sia da x k<br />

che da $x k − . Data la matrice di covarianza dell’errore prima<br />

della stima è così possibile ottenere la matrice di covarianza dell’errore dopo la stima.<br />

Per derivare le formule di sopra abbiamo supposto di avere la matrice K k<br />

. Tale matrice deve<br />

essere scelta in modo che la matrice P k<br />

sia la più piccola possibile in norma. Siccome la<br />

matrice P k<br />

è ottenuta come somma di matrici del tipo MM T , si può mandare a zero la sua<br />

traccia (questo implica il fatto che la sua norma viene mandata a zero).<br />

Se p è uno scalare ed A è una matrice, allora:<br />

⎡ ∂p<br />

⎢∂a<br />

⎢<br />

dp p<br />

dA = ⎢<br />

∂<br />

⎢∂a<br />

⎢ M<br />

⎢<br />

⎣<br />

∂p<br />

∂a<br />

11 12<br />

21<br />

O<br />

⎤<br />

L⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

Si può dimostrare che:<br />

d d<br />

T<br />

( ) ( )<br />

dA tr AC = dA tr AC = C<br />

d<br />

T<br />

( ACA ) AC<br />

dA tr = 2<br />

Quindi, la matrice K k<br />

che minimizza trP k<br />

è data da:<br />

d<br />

T<br />

T<br />

( ) k ( k k k )<br />

K tr P = − H P −<br />

+ K H P −<br />

2 2 H + R = k<br />

0<br />

d k<br />

k k k<br />

⇓<br />

T<br />

83


Ottimizzazione<br />

− T<br />

[ k ]<br />

− T<br />

K = P H H P H + R<br />

k k k k k k<br />

Sostituendo il valore di K k<br />

così ottenuto nell’espressione di P k<br />

otteniamo:<br />

T<br />

( k k k )<br />

− − T −<br />

P = P − P H H P H + R H P<br />

k k k k<br />

Abbiamo riottenuto l’equazione di Riccati, che in questo caso si può scrivere come:<br />

− T<br />

( k )<br />

−1<br />

−<br />

P = P − K H P H + R K<br />

k k k k k<br />

−1<br />

−1<br />

k<br />

T<br />

k<br />

−<br />

k<br />

oppure<br />

( )<br />

P = I − K H P<br />

−<br />

k k k k<br />

In questo caso l’equazione di Riccati è usata in un problema di osservabilità (precedentemente<br />

era stata usata in problemi di controllabilità).<br />

−<br />

Se abbiamo $x k<br />

possiamo calcolare x$ x$<br />

k + 1<br />

= Φ<br />

k k<br />

, che è la stima prima della nuova misura.<br />

Otteniamo:<br />

−<br />

e = x − x$<br />

−<br />

k+<br />

1 k+ 1 k+<br />

1<br />

−<br />

− T<br />

−<br />

−<br />

T<br />

Pk+<br />

= E[ e<br />

k+ e<br />

k+<br />

] = E[ ( x<br />

k+ − x$ k+<br />

)( x<br />

k+ − x$<br />

1 1 1 1 1 1 k+<br />

1)<br />

] =<br />

T<br />

T<br />

[( $<br />

k k k k k )( $<br />

k k k k k ) ] E[ ( k k k )( k k k ) ]<br />

T<br />

= E Φ x + w − Φ x Φ x + w − Φ x = Φ e + w Φ e + w = Φ P Φ + Q<br />

k k k<br />

k<br />

perché e k<br />

e w k<br />

sono scorrelati.<br />

In definitiva, l’algoritmo del filtro di Kalman è il seguente:<br />

−<br />

1) K P H T − T<br />

k<br />

=<br />

k k [ H<br />

kPk H<br />

k<br />

+ R<br />

k ]<br />

−<br />

−<br />

2) x$ x$ K ( z H x$<br />

k<br />

=<br />

k<br />

+<br />

k k<br />

−<br />

k k )<br />

−<br />

3) P = ( I − K H ) P<br />

k k k k<br />

−<br />

k + 1<br />

= Φkx<br />

k<br />

−<br />

T<br />

k+<br />

1<br />

= Φk kΦk<br />

+<br />

k<br />

4) x$ $<br />

5) P P Q<br />

6) torna al punto 1)<br />

Nel caso di rumore bianco il filtro di Kalman è ottimo.<br />

Se nel sistema non abbiamo un rumore bianco ma un altro tipo di rumore possiamo pensare<br />

che esso provenga da un rumore bianco che passa attraverso un filtro (detto filtro sbiancante).<br />

Possiamo applicare il filtro di Kalman al sistema complessivo costituito dal filtro sbiancante e<br />

dal sistema iniziale per ricondurci al caso di rumore bianco.<br />

−1<br />

84


PARTE<br />

II<br />

MODELLISTICA ED<br />

IDENTIFICAZIONE


<strong>Modellistica</strong><br />

7. MODELLISTICA<br />

Il problema che ci poniamo in questo capitolo e nel successivo è quello di individuare una<br />

serie di metodi operativi per determinare il modello ed i parametri di un sistema SISO lineare<br />

tempo-invariante con un disturbo addizionale ν( t ) sull’uscita:<br />

La relazione ingresso-uscita che regola questo sistema è la seguente:<br />

dove ( )<br />

y( t) = G( q) u( t) + ν( t)<br />

G q è la funzione di trasferimento dall’ingresso u( t ) all’uscita ( ) G q è un<br />

polinomio in q , che è l’operatore di shift ( qu( t) = u( t + 1 ) ) per cui l’equazione di sopra deve<br />

essere interpretata come:<br />

k<br />

y( t) = ⎛ +∞<br />

+∞<br />

g q u( t) ( t) g u( t k) ( t)<br />

k<br />

k<br />

⎝ ⎜ −<br />

⎞<br />

∑ ⎟ + ν = ∑ − + ν<br />

⎠<br />

k=<br />

0 k=<br />

0<br />

y t . ( )<br />

Abbiamo scelto di rappresentare il sistema in tempo discreto perché i dati osservati sono<br />

sempre raccolti come campioni.<br />

Nell’equazione di sopra abbiamo assunto che il tempo di campionamento fosse uguale ad un<br />

secondo. Questo non è essenziale ma rende la notazione molto più semplice.<br />

La densità di probabilità di ν( t ) non è nota in generale. Facciamo l’ipotesi che il disturbo ν( t)<br />

sia ottenuto filtrando un rumore bianco ( )<br />

H q :<br />

con H( q)<br />

= 1+<br />

+∞<br />

∑<br />

k=<br />

1<br />

h q k<br />

−k<br />

e t mediante un filtro lineare ( )<br />

+∞<br />

( ) = ( ) ( ) = ∑ ( ) ( − )<br />

ν t H q e t h k e t k<br />

k=<br />

0<br />

indipendenti e aventi identica densità di probabilità:<br />

Si ha:<br />

( h 0<br />

= 1). Quindi e( t ) è una sequenza di variabili aleatorie<br />

f[ e( t)<br />

] = f e( t − 1)<br />

= K= f e t − k<br />

[ ] [ ( )]<br />

E{ e( t )}<br />

= 0<br />

87


<strong>Modellistica</strong> ed Identificazione<br />

dove λ è la varianza di e( t ) .<br />

Calcoliamo il valor medio di ν( t ) :<br />

{ }<br />

perché E e( t − k)<br />

= 0 .<br />

Calcoliamo ora la covarianza di ν( t ) :<br />

⎧0 se τ ≠ 0<br />

E{ e( t) e( t − τ)<br />

} = λδ( τ)<br />

= ⎨<br />

⎩λ<br />

se τ = 0<br />

+∞<br />

E{ ν ( t)<br />

} = ∑ h( k) E{ e( t − k)<br />

} = 0<br />

+∞<br />

k=<br />

0<br />

+∞<br />

E{ ν( t) ν( t − τ)<br />

} = h( k) h( s) E{ e( t − k) e( t − τ − s)<br />

} =<br />

+∞<br />

+∞<br />

∑∑<br />

∑∑<br />

k=<br />

0 s=<br />

0<br />

= h( k) h( s) λδ( k − τ − s) = λ h( k) h( k − τ) = R ( τ)<br />

+∞<br />

∑<br />

k=<br />

0 s=<br />

0<br />

k=<br />

0<br />

Il disturbo ν( t ) in generale può essere caratterizzato dal suo spettro, che dà una descrizione<br />

del suo contenuto frequenziale:<br />

+∞<br />

ωτ<br />

Φ ν ν<br />

∑ R e H e<br />

ω<br />

( ω) = ( τ) − j<br />

j<br />

= λ ( )<br />

τ=−∞<br />

Quindi, il nostro problema può essere descritto nel seguente modo:<br />

y( t) = G( q) u( t) + H( q) e( t)<br />

Siccome le funzioni di trasferimento G ed H non sono note possiamo introdurre un<br />

parametro θ nella loro descrizione che riflette la nostra carenza di informazioni. In questo<br />

modo il modello parametrizzato risultante è il seguente:<br />

(7.1) y( t) = G( q, θ) u( t) + H( q,<br />

θ) e( t)<br />

Il parametro θ può essere stimato utilizzando uno dei metodi per l’identificazione descritti nel<br />

capitolo successivo.<br />

Data la descrizione del sistema illustrata sopra e un insieme di dati di ingresso ( u( s ) ) ed uscita<br />

( y( s ) ) fino all’istante t − 1 ( s ≤ t −1), come possiamo predire l’uscita all’istante y( t ) ?<br />

Dividiamo ambo i membri dell’equazione (7.1) per H( q,θ ) :<br />

Ma:<br />

−<br />

( , θ) ( ) = ( , θ) ( , θ) ( ) + ( )<br />

−<br />

H 1 q y t H 1 q G q u t e t<br />

(7.2) ( ) 1<br />

−<br />

( )<br />

⇓<br />

1 −1<br />

[ , θ ] ( ) ( , θ) ( , θ) ( ) ( )<br />

y t = − H q y t + H q G q u t + e t<br />

2<br />

ν<br />

88


<strong>Modellistica</strong><br />

( q,<br />

θ)<br />

−1<br />

1− H =<br />

+∞<br />

( , θ)<br />

− 1 1 =<br />

( ) ( )<br />

∑<br />

H q, θ H q,<br />

θ k=<br />

1<br />

H q<br />

h q k<br />

−k<br />

[ H q ] y ( t )<br />

,θ contiene solo i valori di y( s ) per s ≤ t −1. Il secondo<br />

membro della (7.2) è conosciuto all’istante t − 1 con l’eccezione di e( t ) . La predizione di y( t)<br />

è ottenuta dalla (7.2) cancellando e( t ) :<br />

Quindi l’espressione 1 − −1<br />

( )<br />

(7.3) ( ) 1<br />

−<br />

( )<br />

1 −1<br />

[ ] ( ) ( ) ( ) ( )<br />

y$ t, θ = − H q, θ y t + H q, θ G q,<br />

θ u t<br />

Per caratterizzare completamente il nostro modello di sistema dobbiamo conoscere anche la<br />

densità di probabilità della variabile e( t ) . Non tutti i metodi che vedremo riusciranno a<br />

caratterizzare f e<br />

.<br />

Un modello di predizione permette solo l’identificazione dei parametri del vettore θ , mentre<br />

un modello probabilistico permette anche l’identificazione della densità di probabilità f e<br />

.<br />

Nei prossimi paragrafi vedremo alcune forme particolari dei polinomi G ed H .<br />

7.1 Modello ad equazione d’errore (ARX)<br />

Con questo modello vale la seguente relazione tra ingresso ed uscita:<br />

( ) + ( − ) + + ( − ) = ( − ) + + n a n ( −<br />

1<br />

1 K<br />

1<br />

1 K<br />

b )<br />

y t a y t a y t n b u t b u t n<br />

a<br />

⇓<br />

A q, θ y t = B q,<br />

θ u t + e t<br />

( ) ( ) ( ) ( ) ( )<br />

b<br />

con:<br />

( 1<br />

K<br />

n<br />

n )<br />

a 1<br />

K<br />

b<br />

θ = a a b b<br />

( )<br />

( )<br />

1<br />

2<br />

A q,θ = + a q + a q + K+<br />

a q<br />

1<br />

1<br />

− − −na<br />

2<br />

na<br />

1<br />

2<br />

B q,θ = b q + b q + K+<br />

b q<br />

1<br />

− − −nb<br />

2<br />

nb<br />

T<br />

Il termine noto di B è nullo ad indicare che l’uscita non dipende dall’ingresso corrente.<br />

Questo modello corrisponde alla seguente scelta in termini di G ed H :<br />

G<br />

= B e H = 1<br />

A<br />

A<br />

Il disturbo passa attraverso un filtro che ha i poli del sistema:<br />

89


<strong>Modellistica</strong> ed Identificazione<br />

L’espressione A( q ) y( t)<br />

,θ è una autoregressione dell’uscita:<br />

( ,θ) ( ) = ( ) + ( − 1) + ( − 2) + K+ ( − )<br />

A q y t y t a y t a y t a y t n<br />

1 2<br />

L’ingresso esterno sul sistema viene chiamato ingresso esogeno. Quindi, il modello ad<br />

equazione d’errore è anche detto ARX (AutoRegressive eXogenous).<br />

Dalla (7.3) ricaviamo la funzione di predizione:<br />

( , θ) ( ) ( , θ)<br />

na<br />

( , θ)<br />

( , θ)<br />

B q<br />

−1 −1<br />

y$ ( t, θ) = H ( q, θ) G( q, θ) u( t) + [ 1− H ( q, θ)<br />

] y( t) = A( q,<br />

θ)<br />

u( t) + [ 1− A( q,<br />

θ)<br />

] y( t)<br />

=<br />

A q<br />

Quindi $ ( , )<br />

−1<br />

−nb<br />

−1<br />

−na<br />

[ 1 ] ( ) ( 1<br />

K<br />

n ) ( ) ( 1<br />

K<br />

n ) ( )<br />

= B q u t + − A q y t = b q + b q u t − a q + a q y t<br />

y t θ è legata agli ingressi ed alle uscite passati.<br />

Definendo il seguente vettore (vettore di regressione):<br />

otteniamo l’equazione di regressione:<br />

Fissati n a<br />

ed n b<br />

otteniamo:<br />

⎛ − y( t − 1)<br />

⎞<br />

⎜ ⎟<br />

⎜ M ⎟<br />

⎜−<br />

y( t − na<br />

) ⎟<br />

ϕ( t)<br />

= ⎜ ⎟<br />

⎜ u( t −1)<br />

⎟<br />

⎜ M ⎟<br />

⎜<br />

⎝ u t<br />

⎟<br />

⎠<br />

b<br />

( − n )<br />

b<br />

T<br />

( ) = ϕ ( t)<br />

y t,θ θ<br />

T<br />

⎛ y( t)<br />

⎞ ⎛ ϕ ( t)<br />

⎞<br />

⎜ ⎟ ⎜ ⎟<br />

T<br />

⎜ y( t + 1)<br />

⎟ ⎜ ϕ ( t + 1)<br />

⎟<br />

⎜ ⎟<br />

= ⎜ ⎟ ⋅θ = Φθ<br />

M<br />

M<br />

⎜ ⎟ ⎜ ⎟<br />

T<br />

⎝ y( t + d)<br />

⎠ ⎝ϕ<br />

( t + d)<br />

⎠<br />

( 1) ( 2) L ( ) ( ) ( )<br />

a<br />

1 2 L ( b )<br />

y( t) y( t 1) L y( t n ) u( t) u( t )<br />

a<br />

1 1 L u( t n<br />

b<br />

1)<br />

⎡− y t − − y t − − y t − n u t − u t − u t − n<br />

⎢<br />

Φ = ⎢ − − − − − + − − +<br />

⎢<br />

⎣<br />

O O O O O O O<br />

dove Φ è detta matrice di regressione. Abbiamo ottenuto un sistema di equazioni lineari che<br />

deve essere risolto con la tecnica dei minimi quadrati (in generale Φ non è quadrata):<br />

y = Φθ<br />

T<br />

Φθ ⇒ = ( )<br />

−1<br />

θ Φ Φ Φ<br />

T<br />

y<br />

a<br />

a<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎦<br />

90


<strong>Modellistica</strong><br />

T<br />

dove ( Φ Φ)<br />

−1<br />

Φ<br />

T<br />

è la pseudoinversa di Φ : Φ T Φ<br />

deve essere invertibile e quindi Φ deve<br />

avere rango pieno. La matrice Φ è a bande ma può anche non avere rango pieno se stiamo<br />

campionando molto velocemente un processo lento (possiamo ottenere due righe uguali o<br />

simili). Infatti, gli algoritmi di identificazione vengono eseguiti su calcolatori elettronici, che<br />

hanno una precisione limitata.<br />

Abbiamo ottenuto una soluzione semplice (il modello ARX consente una facile identificazione)<br />

che però può presentare dei problemi di calcolo.<br />

7.2 Modello ARMAX<br />

In questo caso la relazione che lega l’ingresso con l’uscita è la seguente:<br />

( , θ) ( ) = ( , θ) ( ) + ( , θ) ( )<br />

A q y t B q u t C q e t<br />

con:<br />

( 1<br />

L<br />

n n n )<br />

a 1<br />

L<br />

b 1<br />

L<br />

c<br />

θ = a a b b c c<br />

( )<br />

( )<br />

( )<br />

1<br />

2<br />

A q,θ = + a q + a q + K+<br />

a q<br />

1<br />

1<br />

− − −na<br />

2<br />

na<br />

1<br />

2<br />

B q,θ = b q + b q + K+<br />

b q<br />

1<br />

− − −nb<br />

2<br />

nb<br />

1 2<br />

C q,θ = + c q + c q + K+<br />

c q<br />

1<br />

1<br />

− − − nc<br />

2<br />

nc<br />

T<br />

In questo caso abbiamo più parametri da identificare rispetto al modello ARX.<br />

Il termine noto di B è nullo ad indicare che l’uscita non dipende dall’ingresso corrente.<br />

Questo modello corrisponde alla seguente scelta in termini di G ed H :<br />

G<br />

= B e H =<br />

C A<br />

A<br />

Anche in questo caso il rumore passa attraverso un filtro che ha gli stessi poli del sistema:<br />

Il polinomio C impone una regressione su ( ) e t che in questo caso viene chiamata media<br />

mobile. Questo modello è dunque detto ARMAX (AutoRegressive Moving Average eXogenous).<br />

Dalla (7.3) ricaviamo la funzione di predizione:<br />

91


<strong>Modellistica</strong> ed Identificazione<br />

( , θ)<br />

( , θ)<br />

A( q,<br />

θ)<br />

C( q,<br />

θ)<br />

( , θ)<br />

⎤<br />

⎥<br />

( , θ)<br />

( , θ)<br />

( , θ)<br />

B q ⎡ A q<br />

−1 −1<br />

y$ ( t, θ) = H ( q, θ) G( q, θ) u( t) + [ 1− H ( q,<br />

θ)<br />

] y( t)<br />

= u( t)<br />

+ ⎢1<br />

−<br />

A q ⎣⎢<br />

C q<br />

B q ⎡ A q<br />

= u( t)<br />

+ ⎢1<br />

−<br />

C q ⎣⎢<br />

C q<br />

⇓<br />

( )<br />

y t<br />

⎦⎥<br />

[ ] ( )<br />

( , θ) $ ( , θ) = ( , θ) ( ) + ( , θ) − ( , θ)<br />

C q y t B q u t C q A q y t<br />

⇓<br />

( , θ)<br />

( , θ)<br />

−1<br />

−nc<br />

−1<br />

− nb<br />

−1<br />

− nc<br />

−1<br />

− na<br />

( c1q + Kc q ) y$ n<br />

( t,θ) = ( b q b<br />

n<br />

q ) u( t) ( c q c<br />

n<br />

q ) y( t) ( a q a<br />

n<br />

q ) y( t)<br />

c<br />

1<br />

+ K +<br />

b<br />

1<br />

+ K −<br />

c<br />

1<br />

+ K<br />

a<br />

⇓<br />

⎤<br />

⎥y t<br />

⎦⎥<br />

nb<br />

nc<br />

na<br />

( θ) = ( n ) ( ) ( n )[ ( ) ( )] ( n ) − 1<br />

+ − + − 1<br />

+ − − θ − − 1<br />

+<br />

−<br />

1<br />

K<br />

1<br />

K<br />

1<br />

K ( )<br />

y$ t, b q b q u t c q c q y t y$ t,<br />

a q a q y t<br />

b<br />

Quindi y$ ( t,<br />

θ ) è legata agli ingressi, alle uscite e alle stime passati.<br />

c<br />

a<br />

( )<br />

=<br />

7.3 Differenza tra autoregressione e media mobile<br />

Consideriamo la seguente relazione:<br />

con R( q ) rapporto di polinomi in q :<br />

( )<br />

( )<br />

( ) ( ) ( )<br />

ν t<br />

= R q e t<br />

( )<br />

R q<br />

( )<br />

( )<br />

C q<br />

=<br />

A q<br />

C q = + c q − 1<br />

+ K+<br />

c q<br />

1<br />

1<br />

nc<br />

A q = + a q − 1<br />

+ K+<br />

a q<br />

1<br />

1<br />

na<br />

−nc<br />

−na<br />

Si ha:<br />

( t) + a ( t − 1) + a ( t − 2) + K + a ( t − n ) = e( t) + c e( t − 1) + K + c e( t − n )<br />

ν ν ν ν<br />

1 2 na<br />

a 1<br />

nc<br />

c<br />

Se consideriamo ν( t ) come uscita e C( q ) = 1 allora:<br />

( t) = −a ( t − 1) − a ( t − 2) −K−a ( t − n ) + e( t)<br />

ν ν ν ν<br />

1 2<br />

Questa formula viene chiamata autoregressione di ν ( ν all’istante t dipende da una<br />

combinazione lineare dei valori assunti nel suo passato).<br />

Se consideriamo ( )<br />

A q = 1 allora:<br />

ν t come uscita ed ( )<br />

na<br />

a<br />

92


<strong>Modellistica</strong><br />

( ) = ( ) + ( − ) + + ( − )<br />

ν t e t c1e t 1 K c<br />

n<br />

e t n<br />

ν( t ) è funzione solo di e( t ) : questa formula è una regressione su e( t ) (non una<br />

autoregressione) e viene chiamata media mobile (moving average).<br />

Se consideriamo e( t ) come uscita e ν( t ) come ingresso la seconda equazione diventa una<br />

autoregressione, mentre la prima diventa una media mobile.<br />

c<br />

c<br />

7.4 Altri modelli<br />

Un modello generale è esprimibile con la seguente relazione che lega l’uscita all’ingresso:<br />

( , θ)<br />

( , θ)<br />

( )<br />

e<br />

( ) ( t )<br />

A ( q ) y ( t B q C q,<br />

θ<br />

, θ ) = u( t)<br />

+<br />

F q D q,<br />

θ<br />

con A , B , C , D , F anche non tutti presenti.<br />

Possiamo costruire la seguente tabella:<br />

polinomi usati<br />

B<br />

A , B<br />

A , B , C<br />

A , C<br />

B , F<br />

B , C , D , F<br />

nome del modello<br />

FIR<br />

ARX<br />

ARMAX<br />

ARMA<br />

modello ad errore d’uscita<br />

Box-Jenkins<br />

Se un modello ha il polinomio A presenta un termine autoregressivo, se ha il polinomio C<br />

presenta una media mobile su ( ) e t .<br />

93


<strong>Modellistica</strong> ed Identificazione<br />

7.5 Criteri nella scelta del modello<br />

Non esistono dei criteri generali per scegliere un modello. In genere si segue una procedura “a<br />

tentativi”: si sceglie un modello e, se non si ottengono dei buoni risultati, si cambia modello.<br />

Tuttavia, nella procedura conviene essere guidati dall’intuito e da qualche conoscenza<br />

sull’impianto.<br />

Se il sistema è deterministico, non abbiamo errori sull’uscita ( e( t ) è trascurabile) ed abbiamo<br />

solo i polinomi A , B ed F: possiamo utilizzare il modello ARX o il modello ad errore d’uscita.<br />

Se, invece, il disturbo sull’uscita è molto alto rispetto al valore dell’uscita dovuto al solo<br />

ingresso conviene usare i modelli ARMA o ARMAX o Box-Jenkins. Nel modello Box-Jenkins la<br />

parte di disturbo è completamente disaccoppiata dal sistema (non è presente il termine<br />

1<br />

( )<br />

A e t ).<br />

Se ci sono ingressi non manipolabili il modello ARMAX è il migliore.<br />

Inoltre, il successo di una procedura di identificazione è spesso determinato dagli ingressi che<br />

forniamo al sistema. Se possiamo scegliere gli ingressi (se cioè stiamo effettuando<br />

un’identificazione off-line) conviene che essi siano tali che la matrice Φ T Φ sia invertibile.<br />

94


Identificazione<br />

8. IDENTIFICAZIONE<br />

Data una struttura di modello M , M ( θ ) è uno specifico modello corrispondente ai parametri<br />

contenuti in un vettore θ ∈D<br />

⊂ R<br />

d , dove d è la dimensione di θ che dipende dalla struttura<br />

del modello.<br />

Definiamo il seguente vettore:<br />

Z N<br />

= [ y( 1) u( 1) y( 2) u( 2) K y( N) u( N)<br />

]<br />

Data una struttura di modello, un metodo di identificazione è una qualsiasi funzione con<br />

dominio nell’insieme degli Z N<br />

e a valori in D .<br />

Questa schematizzazione permette di distinguere tra modellistica, che è la scelta della<br />

struttura di modello per un sistema, e identificazione, che è la scelta dei parametri per quel<br />

modello. Quest’ultima scelta dipende da Z N<br />

e cioè dagli ingressi del sistema.<br />

8.1 Metodo di identificazione ad errore di predizione<br />

Dai dati osservati e dalla predizione y$ ( t,<br />

θ ) si può formare la sequenza di errori di predizione<br />

ε( t, θ) = y( t) − y$ ( t,<br />

θ)<br />

, con t = 1, 2,K N . L’errore di predizione può essere filtrato attraverso un<br />

filtro lineare L( q ) , ottenendo:<br />

( , θ) = ( ) ε( , θ)<br />

ε t L q t<br />

F<br />

per esaltare o ridurre bande interessanti o non importanti di frequenza nei segnali.<br />

Scelta una funzione norma l:R → R +<br />

per misurare l’errore di predizione, il metodo consiste<br />

nel calcolare:<br />

( Z ) ( Z )<br />

θ$ = θ$ = arg min θ,<br />

N N N<br />

N<br />

1<br />

dove VN ( θ, Z<br />

N ) = ∑ l( ε<br />

F( t,<br />

θ)<br />

) .<br />

N t=<br />

1<br />

La scelta naturale sulla norma è la seguente:<br />

V N N<br />

θ∈D<br />

1<br />

l( ε ) = l<br />

2( ε ) = ε<br />

2<br />

2<br />

F F F<br />

(norma euclidea)<br />

o, in generale:<br />

95


<strong>Modellistica</strong> ed Identificazione<br />

( ε ) = ( ε + ε + )<br />

1<br />

p p p<br />

l p F 1 2<br />

K (norma l p<br />

)<br />

Se si devono identificare i parametri di un modello utilizzando una macchina di acquisizione<br />

dati possiamo ottenere dei valori distribuiti più o meno uniformemente e dei valori, detti<br />

outlier, che si allontanano dalla regione in cui sono compresi tutti gli altri:<br />

Gli outlier sono molto frequenti: possono dipendere, ad esempio, da un malfunzionamento<br />

temporaneo della macchina che acquisisce i dati. Per questo possiamo voler pesare di più<br />

~<br />

alcuni dati rispetto ad altri, utilizzando una norma del tipo l( ε) = β( t) l ( ε)<br />

.<br />

Nel caso di un modello lineare si ha:<br />

[ ] ( )<br />

−1 −1<br />

( ) ( ) ( ) ( ) ( ) ( ) ( ) 1 ( )<br />

ε t, θ = y t, θ − y$ t, θ = y t, θ − H q, θ G q, θ u t − − H q, θ y t,<br />

θ =<br />

[ ]<br />

−1<br />

= H ( t, θ) y( t, θ) − G( q,<br />

θ) u( t)<br />

−1<br />

( , θ)<br />

⎤<br />

( , θ) ( ) ε( , θ)<br />

⎢ ⎥ y( t) − G( q,<br />

θ) u( t)<br />

L( q)<br />

ε t L q t H q<br />

F<br />

= = ⎡ ⎣⎢<br />

⎦⎥<br />

[ ]<br />

Calcoliamo la trasformata discreta di Fourier di ( θ,Z ) nel caso in cui ( )<br />

norma euclidea.<br />

Siano s( t ) e ( )<br />

V N<br />

N<br />

L q = 1 ed l è la<br />

w t due successioni di lunghezza N legate da un filtro lineare ( )<br />

( ) ( ) ( )<br />

s t = K q w t , con w( t)<br />

otteniamo:<br />

dove R N<br />

( ω ) è il resto. Si ha che R<br />

w( t ) è periodica di periodo N .<br />

Se s( t, θ) y( t) G( q,<br />

θ) u( t)<br />

K q :<br />

≤ C w<br />

∀t (successione d’ingresso limitata). Passando in frequenza<br />

jω<br />

(8.1) S ( ω) = K( e ) W ( ω) + R ( ω)<br />

= − applicando la (8.1) otteniamo:<br />

N<br />

N<br />

N<br />

N<br />

∝ 1 ( R<br />

N<br />

N<br />

→ 0 per N → ∞ ) ed R N<br />

( ω ) = 0 solo se<br />

jω<br />

( ω, θ) = ( ω) − ( , θ) ( ω) + ( ω)<br />

S Y G e U R<br />

N<br />

N<br />

N<br />

N<br />

96


Identificazione<br />

−1<br />

Siccome ε( t, θ) = H ( q, θ) s( t,<br />

θ)<br />

, riapplicando la (8.1) otteniamo:<br />

[ N<br />

N ] ( )<br />

−1 j<br />

( ) ( ω<br />

jω<br />

, θ) ( ) ( , θ) ( )<br />

E ω = H e Y ω − G e U ω + R ω<br />

N<br />

2<br />

∑ ∑<br />

2<br />

, con ω<br />

k= 1<br />

i=<br />

1<br />

N<br />

N<br />

⎛ 2πk⎞<br />

Applichiamo la relazione di Parseval U⎜<br />

⎟ = u( t)<br />

⎝ N ⎠<br />

V<br />

N<br />

1<br />

2N<br />

N<br />

π<br />

= 2 k<br />

N :<br />

−2 2<br />

jω<br />

jω<br />

( θ, Z<br />

N ) = ∑ H( e , θ) YN<br />

( ω) − G( e , θ) U<br />

N<br />

( ω) + R( ω)<br />

V<br />

N<br />

( θ Z )<br />

k=<br />

1<br />

( ω)<br />

( ω)<br />

⇓<br />

( ω)<br />

2 2<br />

N<br />

1 Y<br />

U<br />

N<br />

jω<br />

N ~<br />

,<br />

N<br />

= ∑ − G( e , θ)<br />

⋅<br />

2<br />

+ R<br />

2N<br />

k=<br />

1 U<br />

N<br />

H<br />

2<br />

U ( )<br />

N<br />

ω<br />

Il termine<br />

2<br />

è il rapporto segnale-rumore (SNR), che è un termine di peso: pesa di più<br />

H ( )<br />

N<br />

ω<br />

Y ( )<br />

N<br />

ω<br />

quando il disturbo è basso rispetto all’ingresso. Il termine è detto Empirical Transfer<br />

U ( )<br />

N<br />

ω<br />

Function Estimate (ETFE).<br />

In pratica V N ( N )<br />

θ,Z tiene conto della distanza tra la funzione di trasferimento reale e quella<br />

stimata, pesata con un rapporto che tiene conto del segnale d’ingresso e del rumore.<br />

N<br />

( ω)<br />

~<br />

( ω)<br />

8.2 Stima a massima verosimiglianza<br />

Consideriamo una successione di variabili aleatorie y( t ) :<br />

N<br />

Y N<br />

= [ y( 1) y( 2) L y( N)<br />

] , Y N<br />

∈R<br />

Anche Y N<br />

è una variabile aleatoria con d.d.p. data da:<br />

Otteniamo:<br />

( θ, Y ) = ( θ, ( 1) , ( 2) , K ( ))<br />

f f y y y N<br />

Y N Y<br />

N<br />

( N<br />

∈ ⊂ R ) = ∫ f ( θ )<br />

Pr Y A , Y dY<br />

N<br />

R<br />

Y N N<br />

Uno stimatore è una funzione θ $ θ $ ( )<br />

non contiene l’ingresso. Se è nota la funzione θ $ θ $ ( )<br />

Sia data la misura Y N<br />

. La probabilità Pr( Y N ) è proporzionale a f Y ( N )<br />

= Y N<br />

e, a differenza di una funzione di identificazione,<br />

= Y N<br />

, da Y N<br />

possiamo ricavare $ θ .<br />

θ, Y , che ora è una<br />

funzione deterministica della sola θ ed è detta funzione di verosimiglianza (likelihood).<br />

97


<strong>Modellistica</strong> ed Identificazione<br />

Il metodo della stima a massima verosimiglianza consiste nel calcolare:<br />

( Y ) = ( θ Y )<br />

θ $ arg max ,<br />

N<br />

f Y N<br />

θ∈D<br />

Questo metodo richiede delle informazioni (di tipo probabilistico) in più rispetto al metodo ad<br />

errore di predizione anche se spesso si fanno delle ipotesi sulle d.d.p. delle y( t ) .<br />

Ad esempio, supponiamo che le y( t ) siano gaussiane:<br />

con λ( t ) nota e θ ignoto.<br />

La d.d.p. congiunta f Y ( N )<br />

indipendenti:<br />

1 ⎧<br />

⎪<br />

f[ y( t)<br />

] = exp⎨−<br />

2πλ( t)<br />

⎩⎪<br />

[ y( t)<br />

− θ]<br />

λ( t)<br />

θ, Y è data dal prodotto delle f y( t ) perché le y( t ) sono tutte<br />

N<br />

N<br />

1 ⎧⎪<br />

fY<br />

( θ, YN<br />

) = ∏ f[ y( t)<br />

] = ∏ exp⎨−<br />

t= 1<br />

t=<br />

1 2πλ( t)<br />

⎩⎪<br />

2<br />

⎫<br />

⎪<br />

⎬<br />

⎭⎪<br />

[ ]<br />

[ y( t)<br />

− θ]<br />

λ( t)<br />

Calcoliamo θ utilizzando il metodo della stima a massima verosimiglianza:<br />

( θ Y ) f ( θ Y )<br />

arg max f , = arg max log , =<br />

θ<br />

Y N Y N<br />

θ<br />

[ y( t)<br />

− θ]<br />

λ( t)<br />

[ y( t)<br />

− θ]<br />

λ( t)<br />

2<br />

⎫⎪<br />

⎬<br />

⎭⎪<br />

[ y( t)<br />

θ]<br />

λ( t)<br />

2<br />

⎧<br />

N<br />

N<br />

N<br />

⎪ N 1 1<br />

⎫⎪<br />

= arg max⎨− log − log[ ( t)<br />

] −<br />

⎬ arg max<br />

θ<br />

θ<br />

t<br />

t<br />

t<br />

⎩⎪<br />

⎭⎪ = ⎧⎪<br />

− 1 −<br />

2π<br />

∑ λ ∑ ⎨ ∑<br />

2<br />

= 1 2 2 = 1<br />

2 = 1<br />

⎩⎪<br />

Otteniamo:<br />

θ<br />

N<br />

∑<br />

d<br />

dθ<br />

1<br />

2<br />

⎧⎪<br />

1<br />

= arg min⎨<br />

θ 2<br />

⎩⎪<br />

N<br />

∑<br />

[ y( t)<br />

− θ]<br />

λ( t)<br />

N<br />

∑<br />

t=<br />

1<br />

N<br />

t= 1 t=<br />

1<br />

⇓<br />

N<br />

1 y( t)<br />

=<br />

λ( t)<br />

∑ ⇒<br />

λ( t)<br />

t= 1 t=<br />

1<br />

2<br />

= −<br />

∑<br />

2<br />

⎫⎪<br />

⎬<br />

⎭⎪<br />

[ y( t)<br />

− θ]<br />

= 0<br />

λ( t)<br />

1<br />

$θ =<br />

N<br />

⋅<br />

1<br />

∑<br />

λ( t)<br />

Quindi, θ $ è la somma dei campioni, ciascuno scalato per la sua varianza e normalizzato per la<br />

somma degli inversi delle varianze.<br />

Se λ( t ) = λ ∀t otteniamo:<br />

t = 1<br />

N<br />

N<br />

λ 1 1<br />

$θ = ⋅ ∑ y( t) = ∑ y( t)<br />

N λ N<br />

t = 1 t = 1<br />

N<br />

∑<br />

t = 1<br />

y( t)<br />

λ( t)<br />

2<br />

⎫⎪<br />

⎬<br />

⎭⎪ =<br />

98


Identificazione<br />

Se la d.d.p. delle y( t ) non è conosciuta possiamo supporre che sia di tipo gaussiano ottenendo<br />

(in genere) dei buoni risultati.<br />

Nel caso di d.d.p. gaussiana si ottengono dei risultati simili a quelli che si ottengono con il<br />

metodo dei minimi quadrati (metodo ad errore di predizione con norma euclidea). Quindi, in<br />

questo caso, il metodo ad errore di predizione e quello della stima a massima verosimiglianza<br />

sono equivalenti.<br />

Un modello probabilistico completo, oltre a fornire la y$ ( t,<br />

θ ) , deve anche fornire la d.d.p.<br />

f y( t)<br />

t<br />

y t = g t, Z 1<br />

, θ + ε t,<br />

θ , si può dimostrare che:<br />

ε [ , ,θ]<br />

dell’errore di stima. Siccome ( ) ( t−<br />

) ( )<br />

N<br />

N<br />

[ ] ∏ ε<br />

( )<br />

( Y ) ∏ ε<br />

( ) ( Z<br />

−1<br />

)<br />

[ ]<br />

f θ, = f y t − g t, , θ , t, θ = f y t , t,<br />

θ<br />

Y N t<br />

t= 1 t=<br />

1<br />

Calcoliamo θ utilizzando il metodo della stima a massima verosimiglianza:<br />

se ε( θ)<br />

N<br />

( Y ) ( Y ) ∑ [ ( )<br />

ε ]<br />

θ$ = arg max f θ, = arg maxlog f θ, = arg max log f y t , t,<br />

θ =<br />

[ , ] log [ ( )<br />

ε<br />

, , θ]<br />

Y N Y N<br />

θ θ θ<br />

1<br />

= arg min , = arg min ,<br />

θ<br />

θ N l t<br />

t=<br />

1<br />

N<br />

N<br />

∑ l[ ε( t θ)<br />

] ∑ ε( θ)<br />

t= 1 t=<br />

1<br />

[ ]<br />

l t = − f y t t . Quindi, il metodo della stima a massima verosimiglianza è un<br />

caso generale del metodo ad errore di predizione.<br />

Se la d.d.p. f y( t)<br />

, t,θ è gaussiana a media nulla ed a varianza λ otteniamo:<br />

ε<br />

( )<br />

[ ε( t θ)<br />

]<br />

l<br />

2<br />

⎡<br />

ε<br />

k −<br />

t<br />

e<br />

λ<br />

, = − log⎢<br />

⎥ log k log λ<br />

⎣⎢<br />

λ ⎦⎥ = − + + 1<br />

2<br />

2 2 λ<br />

( t,<br />

θ ) ⎤<br />

2<br />

1 ε ( , θ)<br />

L’unico termine che dipende da θ è ε 2 ( t,θ ) . Quindi otteniamo:<br />

$ arg min 1 , arg min 1<br />

θ = θ = , θ = arg min θ ,<br />

θ N l t θ N<br />

θ<br />

N<br />

N<br />

2<br />

∑ [ ε( )] ∑ ε ( t ) VN<br />

( Z<br />

N )<br />

t= 1<br />

t=<br />

1<br />

Utilizzare il metodo ad errore di predizione con norma euclidea significa supporre che<br />

l’errore di predizione abbia una d.d.p. di tipo gaussiano.<br />

8.3 Criteri di bontà dell’identificazione<br />

Se si applica più volte un metodo di identificazione ad un sistema al quale vengono forniti<br />

ingressi diversi sicuramente si ottengono valori diversi di θ . I vari valori di θ così ottenuti<br />

dovrebbero essere tutti all’incirca uguali a θ 0<br />

, dove θ 0<br />

è il vettore dei parametri veri del<br />

sistema (che supponiamo esista per ipotesi). Il vettore θ si comporta quindi come una<br />

variabile aleatoria.<br />

Supponiamo che sia E{ θ}<br />

= θ 0<br />

: in questo caso la stima si dice non polarizzata.<br />

La matrice di covarianza è definita come:<br />

99


<strong>Modellistica</strong> ed Identificazione<br />

T<br />

{[ θ( ) θ<br />

0] [ θ( ) θ<br />

0 ] }<br />

P = Y − Y −<br />

E<br />

N N<br />

Gli elementi sulla diagonale di P sono le autovarianze dei singoli parametri. Se P è piccola<br />

(in norma) la stima è buona perché abbiamo una piccola “dispersione” dei parametri intorno<br />

a θ 0<br />

.<br />

8.3.1<br />

.1 Disuguaglianza di Cramer-Rao<br />

Nel caso monodimensionale possiamo avere il seguente andamento di θ :<br />

La varianza σ dell’errore ci dà una misura di quanto i vari θ sono vicini a θ 0<br />

:<br />

θ<br />

− θ<br />

0<br />

≤<br />

2<br />

σ<br />

Purtroppo non esiste alcun metodo con il quale la varianza σ dell’errore va a zero: esiste un<br />

limite teorico (che non può essere superato da nessuno stimatore) dato dalla disuguaglianza di<br />

Cramer-Rao.<br />

N<br />

Se Y ∈Y<br />

⊂ R , con Y indipendente da θ , allora:<br />

100<br />

N<br />

P ≥ M<br />

dove la matrice M (matrice di informazione di Fisher) è la seguente:<br />

⎡<br />

⎤<br />

M =<br />

( Y ) ( Y ) ( Y )<br />

⎣<br />

⎢<br />

⎦<br />

⎥ ⋅ ⎡ T<br />

⎧ d<br />

d<br />

⎣ ⎢<br />

⎤ ⎫<br />

⎨<br />

⎦<br />

⎥ ⎬ = − ⎧ ⎫<br />

E f<br />

f E⎨ d 2<br />

log<br />

Y<br />

θ, N<br />

log<br />

Y<br />

θ, N<br />

log fY<br />

θ,<br />

2<br />

N ⎬⎭<br />

⎩ dθ dθ ⎭ ⎩ dθ<br />

−1<br />

θ= θ θ=<br />

θ<br />

0 0<br />

La disuguaglianza di Cramer-Rao è solo una formula teorica perché deve essere calcolata in<br />

θ 0<br />

, che non conosciamo.<br />

La matrice P è una matrice di covarianza e quindi è d.p.. Si può dimostrare che anche la<br />

matrice M (e quindi anche M −1 ) è d.p.. La relazione P ≥ M<br />

−1 indica che la forma quadratica<br />

associata a P deve essere sempre maggiore o uguale di quella associata ad M −1 . Questo<br />

significa che non si possono avere sulla diagonale di P dei valori più piccoli di quelli presenti<br />

sulla diagonale di M −1 (varianze minime teoriche).


Identificazione<br />

Siccome non conosciamo θ 0<br />

la formula di sopra può essere applicata in questo modo: si<br />

griglia lo spazio contenente θ e si calcola M più volte. La matrice M ~ più grande (in norma)<br />

così ottenuta è quella che può essere usata nella disuguaglianza di Cramer-Rao (sicuramente<br />

~ −<br />

sarà P ≥ M 1<br />

).<br />

8.3.2<br />

.2 Entropia di informazione<br />

Si abbia una variabile aleatoria X con d.d.p. f ( x ) . Il valor medio di X è dato da:<br />

+∞<br />

η X<br />

= E{ X} = xf( x)<br />

dx<br />

La quantità di informazione associata al processo X è definita come:<br />

∫<br />

−∞<br />

I( X) = f( x) log f( x)<br />

dx + k<br />

mentre l’entropia di informazione è definita come:<br />

+∞<br />

∫<br />

−∞<br />

H( X) = − I( X)<br />

+ k<br />

Sia la quantità di informazione che l’entropia di informazione sono note a meno di una<br />

costante additiva.<br />

Ad esempio, consideriamo una variabile aleatoria uniformemente distribuita in [ 0,N ] :<br />

In questo caso la quantità di informazione è minima, mentre l’entropia è massima.<br />

Se abbiamo una variabile deterministica:<br />

101


<strong>Modellistica</strong> ed Identificazione<br />

l’informazione è massima mentre l’entropia è minima (sappiamo quale sarà il valore assunto<br />

dalla variabile aleatoria senza effettuare neanche un esperimento).<br />

8.3.3<br />

Distanza di informazione di Kullback-Leibler<br />

Possiamo calcolare l’informazione relativa di due distinte d.d.p. f ( x)<br />

1<br />

e f ( x)<br />

2<br />

utilizzando la<br />

formula:<br />

( ) ( ) ( )<br />

0, m<br />

= ∫ 1<br />

log<br />

2<br />

I f f f x f x dx<br />

R<br />

+∞<br />

−∞<br />

n<br />

Supponiamo che f0 ( t,Z t ) sia la d.d.p. di Z t<br />

∈R considerando i parametri in θ 0<br />

e che<br />

f ( t,Z ) sia la d.d.p. di Z t<br />

considerando i parametri relativi al modello.<br />

m<br />

t<br />

Definiamo la distanza di informazione di Kullback-Leibler nel seguente modo:<br />

f<br />

I( f0, fm<br />

) = ∫ f0( t, Z<br />

t ) log<br />

n f<br />

R<br />

0<br />

m<br />

( t,<br />

Z<br />

t )<br />

( t,<br />

Z )<br />

che indica la quantità di informazione di f m<br />

rispetto ad f 0<br />

. Quanto più I( f )<br />

tanto più l’informazione di f m<br />

è vicina a quella di f 0<br />

:<br />

( ) ( )<br />

t<br />

dZ<br />

I<br />

0<br />

= ∫ f0 t, Z<br />

t<br />

log f0<br />

t,<br />

Z<br />

t<br />

dZ<br />

t<br />

+ k<br />

n<br />

R<br />

( , ) = ( , ) log ( , )<br />

I f0 f ∫ f0<br />

t Z f t Z dZ<br />

R m t m t t<br />

n<br />

R<br />

⇓<br />

( , ) ∫ ( , ) log ( , ) ∫ ( , ) log ( , )<br />

I − I f f = f t Z f t Z dZ − f t Z f t Z dZ<br />

=<br />

0 R 0 m 0 t 0 t t 0 t m t t<br />

n<br />

n<br />

R<br />

R<br />

( t,<br />

Z<br />

t )<br />

( t,<br />

Z )<br />

f0<br />

= ∫ f0<br />

( t, Z<br />

t ) log dZ<br />

t<br />

= I f0<br />

f<br />

n f<br />

R<br />

m<br />

t<br />

t<br />

( , )<br />

m<br />

0<br />

, f m<br />

è piccola<br />

Minimizzare (rispetto ai possibili modelli ed ai possibili parametri) la distanza relativa<br />

( 0<br />

, f m ) implica massimizzare l’entropia ( 0 m )<br />

I f<br />

entropia:<br />

( )<br />

( )<br />

( )<br />

( )<br />

− I f , f + k mediante un metodo a massima<br />

[ ] [ ( )]<br />

( )<br />

θ$ = arg min I f , f = arg min I − I f , f = arg min − I f , f =<br />

0 m 0 R 0 m R 0 m<br />

M θ M θ M θ<br />

{ [ ]}<br />

= arg min ⎡ +∞<br />

⎤<br />

− , log , arg min log ,<br />

M<br />

⎣ −∞<br />

⎦<br />

⎢ ( ) ( ) ( )<br />

( θ) ∫ f0 t Z<br />

t<br />

fm t Z<br />

t<br />

dZ t ⎥ = − E<br />

0<br />

f<br />

m<br />

t Z<br />

t<br />

M ( θ) Se il modello M è fissato ( f f( t )<br />

m<br />

= θ, ,Z ), il minimo deve essere calcolato solo rispetto a θ :<br />

t<br />

{ 0[ ( θ Z )]}<br />

θ $ = arg min − E log f , t , t<br />

θ<br />

102


Identificazione<br />

Se sostituiamo al valore atteso l’osservazione ( ( θ Z )<br />

[ t ] ( θ Z<br />

t )<br />

E<br />

0<br />

log f , t, = log f , t,<br />

) otteniamo il<br />

metodo della stima a massima verosimiglianza:<br />

[ f( t Z<br />

t )] f( t Z<br />

t ) f( t Z<br />

t )<br />

θ $ = arg min − log θ , , = arg maxlog θ , , = arg max θ , ,<br />

θ θ θ<br />

Quindi, il metodo della stima a massima entropia è un caso generale di quello della stima a<br />

massima verosimiglianza.<br />

8.4 Criterio di Akaike<br />

Possiamo modificare il metodo di identificazione ad errore di predizione nel seguente modo:<br />

N<br />

$ ⎡ 1<br />

dim<br />

θ( Z t ) = arg min l( , t,<br />

θ)<br />

( θ )<br />

⎢ ∑ ε +<br />

M<br />

⎣N<br />

t=<br />

1<br />

N<br />

dim( θ)<br />

dove il termine pesa la complessità del modello (a parità di errore di predizione è<br />

N<br />

preferibile avere un modello con un numero inferiore di parametri).<br />

( θ)<br />

⎤<br />

⎥<br />

⎦<br />

8.5 Metodo della variabile strumentale<br />

Possiamo cercare di identificare i parametri di un modello in modo che l’errore di predizione<br />

( ,Z ) sia indipendente dalla sequenza Z N<br />

di ingresso ( ε( t ) ε( t)<br />

ε t<br />

N<br />

non ci sia correlazione tra ε e Z N<br />

.<br />

Definiamo ( )<br />

( ,Z ) . Se ε( t )<br />

ε t<br />

N<br />

[ ]<br />

,Z ≡ ), cioè in modo che<br />

ξ t come una sequenza derivata da Z N<br />

ed α ε( t ) come una trasformazione di<br />

,Z è indipendente da Z N<br />

vale la seguente relazione:<br />

N<br />

f<br />

N<br />

N<br />

1<br />

θ,Z = = 0<br />

N<br />

( N ) ∑ ξ( t) α[ ε( t)<br />

]<br />

t=<br />

1<br />

[ ] ( )<br />

Nel caso più semplice è ξ( t)<br />

= Z<br />

N<br />

e α ε( t)<br />

= ε t .<br />

Fatta la scelta di ξ( t ) e di α ε( t ) , il metodo della variabile strumentale consiste nel calcolare:<br />

[ ]<br />

2<br />

{ f ( Z ) 0} f ( Z )<br />

θ $ = sol θ , = = arg min θ ,<br />

N N N<br />

θ∈D<br />

N<br />

θ∈D N N<br />

(è più semplice calcolare il minimo di una funzione invece che uno zero).<br />

T<br />

Ad esempio, consideriamo il modello a regressione lineare y$ ( t,<br />

θ) = ϕ ( t)<br />

θ . In questo caso si<br />

T<br />

può porre ξ( t) = Z = ϕ( t)<br />

ed α ε( t)<br />

= ε t = y t − ϕ t θ . Si ottiene:<br />

N<br />

[ ] ( ) ( ) ( )<br />

103


<strong>Modellistica</strong> ed Identificazione<br />

$θ N<br />

⎧ 1<br />

T<br />

( )[ ( ) ( ) θ ⎫<br />

N<br />

= sol⎨<br />

∑ ϕ t y t − ϕ t ] = 0⎬<br />

⎩N<br />

t=<br />

1<br />

⎭<br />

In questo caso particolare supporre che il modello sia a regressione lineare è equivalente ad<br />

usare il metodo della variabile strumentale.<br />

Se il modello del sistema è dato da:<br />

T<br />

y( t) = ϕ ( t) + ν ( t)<br />

θ 0 0<br />

vorremmo che si avesse θ → N<br />

θ<br />

0<br />

per N → ∞ . Se ν ( )<br />

0<br />

t è correlato con ϕ( t ) allora questo<br />

non accade mai: il vettore θ N<br />

non converge al valore vero dei parametri (l’errore di<br />

predizione, che è legato alla ϕ( t ) , è correlato con il disturbo ν 0<br />

( t ) ). In questo caso la stima si<br />

dice polarizzata (biased).<br />

La ξ( t ) è detta variabile strumentale se soddisfa le seguenti proprietà:<br />

• E ξ( t) ϕ( t)<br />

≠ 0<br />

{ }<br />

{ }<br />

• E ξ( t) ν 0<br />

( t)<br />

= 0<br />

Applichiamo questo metodo al modello ARX:<br />

Sia:<br />

A( q) y( t) = B( q) u( t) + ν( t)<br />

( ) = ( )[ ( − 1) ( − 2) K ( − 1) ( − 2)<br />

K]<br />

ξ t k q x t x t u t u t<br />

dove k( q ) è un filtro e la sequenza x( t ) è generata dalla sequenza u( t ) mediante i due filtri<br />

N( q ) ed M( q ) nel seguente modo:<br />

( ) ( ) = M( q) u( t)<br />

N q x t<br />

Bisogna notare che nel vettore ξ( t ) non sono presenti le uscite del sistema.<br />

Se il sistema funziona in anello aperto:<br />

possiamo scegliere i filtri N( q ) ed ( )<br />

E{ ( t) ( t)<br />

}<br />

M q e la sequenza d’ingresso u( t ) in modo tale che sia<br />

ξ ν = 0 . In anello chiuso questo non può essere fatto (l’ingresso del sistema dipende<br />

dal disturbo ν( t ) ).<br />

Inoltre, sicuramente E{ ξ( t) ϕ( t)<br />

} ≠ 0 perché ξ( t ) e ϕ( t ) contengono delle componenti uguali,<br />

in quanto, nel caso del modello ARX, è:<br />

104


Identificazione<br />

⎛ − y( t − 1)<br />

⎞<br />

⎜ ⎟<br />

⎜ M ⎟<br />

⎜−<br />

y( t − na<br />

) ⎟<br />

ϕ( t)<br />

= ⎜ ⎟<br />

⎜ u( t −1)<br />

⎟<br />

⎜ M ⎟<br />

⎜<br />

⎝ u t<br />

⎟<br />

⎠<br />

( − n )<br />

b<br />

8.6 Applicazioni del filtro di Kalman all’identificazione<br />

ricorsiva<br />

Finora abbiamo analizzato delle tecniche di identificazione di tipo batch, nelle quali la fase di<br />

raccolta dati e quella di identificazione avvengono in due momenti diversi.<br />

Spesso può essere utile effettuare un’identificazione in linea, cioè identificare l’impianto<br />

mentre sta funzionando. I metodi di identificazione in linea si chiamano anche metodi<br />

ricorsivi.<br />

Il filtro di Kalman è per sua natura ricorsivo e può essere usato per costruire uno stimatore<br />

ricorsivo. Quindi, il filtro di Kalman può essere usato anche per il filtraggio ottimo e non solo<br />

per il controllo ottimo 1 .<br />

Le relazioni del filtro di Kalman per la stima dello stato sono le seguenti:<br />

(8.2)<br />

⎧x( t + 1) = F( t) x( t) + G( t) u( t) + w( t)<br />

⎨<br />

⎩y( t) = H( t) x( t) + ν( t)<br />

dove w( t ) è il disturbo sull’ingresso, ν( t ) è il disturbo sull’uscita e:<br />

T<br />

E{ w( t) w ( t)<br />

} = R 1<br />

( t)<br />

T<br />

E{ ν( t) ν ( t)<br />

} = R 2<br />

( t)<br />

T<br />

E{ w( t) ν ( t)<br />

} = R 12<br />

( t)<br />

La stima dello stato all’istante t + 1 può essere scritta in funzione della stima dello stato<br />

all’istante t :<br />

[ ]<br />

x$ ( t + 1) = F( t) x$ ( t) + G( t) u( t) + K( t) y( t) − H( t) x$<br />

( t)<br />

dove il termine F( t) x$ ( t)<br />

è legato al vecchio stato, il termine G( t) u( t ) è legato all’ingresso ed il<br />

termine K( t) [ y( t) − H( t) x$ ( t)<br />

], con H( t) x$ ( t) = y$<br />

( t)<br />

, è legato all’errore di predizione. Il<br />

guadagno K( t ) del filtro di Kalman è dato da:<br />

[ ][ ( ) ( ) ( ) ( )<br />

12 2 ]<br />

K( t) F( t) P( t) H T<br />

T<br />

= ( t) + R ( t)<br />

H t P t H t + R t<br />

−1<br />

1 D’altra parte, l’osservabilità è il duale della controllabilità (se si integra in avanti si effettua un controllo, se si<br />

integra all’indietro si effettua una stima).<br />

105


<strong>Modellistica</strong> ed Identificazione<br />

dove P( t ) è soluzione dell’equazione di Riccati e può essere espressa dalla seguente formula<br />

ricorsiva:<br />

[ ] ( )<br />

P( t ) P( t) K( t) H( t) P( t) H T<br />

T<br />

+ = − ( t) + R ( t)<br />

K t<br />

1<br />

2<br />

Inoltre, P( t ) è la matrice di covarianza dell’errore dopo la stima:<br />

{ }<br />

T<br />

P( t) = E e( t) e ( t)<br />

con:<br />

( ) ( ) T ( )<br />

T<br />

{ }<br />

{ } [ ( ) $ ] [ ( ) $ ]<br />

P 0 = Π = E e 0 e 0 = E x 0 − x ⋅ x 0 − x<br />

0 0 0<br />

Consideriamo un modello a regressione lineare ( $y ( t) = ϕ T ( t)<br />

θ ) e supponiamo che i parametri<br />

siano costanti ( θ( t + 1 ) = θ( t)<br />

= θ ). L’equazione di misura sia la seguente:<br />

y( t) = ϕ T ( t) θ + ν( t)<br />

che è un caso particolare della seconda delle (8.2). Poiché non è presente il disturbo w( t)<br />

sull’ingresso, otteniamo che R 1<br />

= 0 ed R 12<br />

= 0. Inoltre, poiché u( t)<br />

≡ 0, F( t ) = I, G( t ) = 0 ed<br />

T<br />

H( t) = ϕ ( t)<br />

, l’equazione del filtro di Kalman per la stima dei parametri diventa la seguente:<br />

[ ]<br />

θ $ θ $ ϕ θ $<br />

T<br />

( t + 1) = ( t) + K( t) y( t) − ( t) ( t)<br />

[ ]<br />

[ ] ( )<br />

con K( t) P( t) ( t) T<br />

−1 = ϕ ϕ ( t) P( t) ϕ( t)<br />

+ R<br />

2 e P ( t ) P ( t ) K ( t ) T ( ) P ( ) ( )<br />

T<br />

+ 1 = − ϕ t t ϕ t + R<br />

2<br />

k t .<br />

Se i parametri sono tempo-varianti si può utilizzare la stessa procedura ponendo, ad esempio,<br />

θ( t + 1) = θ( t) + w ( t)<br />

.<br />

8.7 Identificabilità<br />

Finora abbiamo sempre supposto di avere un modello usando il quale fosse possibile<br />

identificare i parametri del sistema. Ma, dato un modello M ed un sistema, possiamo sapere<br />

se il sistema è identificabile utilizzando il modello M ? La risposta a questa domanda dipende<br />

da due fattori: dal modello M scelto e dai dati di ingresso ed uscita considerati durante<br />

l’identificazione.<br />

Il nostro obiettivo è quello di ottenere un unico vettore θ dei parametri veri del sistema.<br />

Questo non succede se:<br />

• il modello non è abbastanza “ricco” come il sistema<br />

• l’insieme dei dati di ingresso e di uscita non è sufficientemente “ricco” per identificare il<br />

sistema.<br />

Diciamo che due modelli M 1 ( θ 1 ) ed M 2 ( θ 2 ) sono uguali se danno le stesse formule di<br />

predizione. I due modelli possono appartenere a classi diverse, ad esempio M 1 ( θ 1 ) può essere<br />

un modello ARX ed M 2 ( θ 2 ) può essere un modello ARMAX:<br />

106


Identificazione<br />

M 1<br />

: A( q, θ) y ( t) = B( q,<br />

θ) u( t) + ν( t)<br />

M 2<br />

: ( ) ( ) ( ) ( ) ( ) ( )<br />

A q, θ y t = B q, θ u t + C q,<br />

θ e t<br />

= poiché si<br />

ottiene in entrambi i casi la stessa formula di predizione.<br />

Se M 1<br />

ed M 2<br />

sono due classi diverse di modelli, esse sono uguali se per ogni predittore in M 1<br />

(relativo ad una qualsiasi scelta dei parametri) esiste un predittore (e quindi un vettore di<br />

parametri) in M 2<br />

che è uguale al predittore in M 1<br />

. Questo non vuol dire che le due classi<br />

sono equivalenti, ma solo che per ogni predittore in M 1<br />

esiste un predittore in M 2<br />

uguale a<br />

quello in M 1<br />

(in questo caso si può dire che M 2<br />

è più ricca di M 1<br />

: non è detto che per ogni<br />

predittore in M 2<br />

esista un predittore in M 1<br />

uguale a quello in M 2<br />

).<br />

Se θ 1<br />

= [ a K a b K b]<br />

T<br />

e θ 2<br />

= [ θ 1<br />

0 K 0]<br />

T , allora M1( θ1) M<br />

2 ( θ<br />

2 )<br />

Una classe di modelli M 1<br />

è identificabile in θ * *<br />

se, qualora M ( θ) = M ( θ )<br />

1 1<br />

(l’uguaglianza è<br />

intesa come capacità di dare lo stesso predittore), allora θ = θ<br />

* . Da questo deriva la proprietà<br />

che la predizione è unica.<br />

Una classe di modelli M 1<br />

è identificabile se è identificabile per qualunque θ ∈D .<br />

Teorema: Data la struttura di modello ( , θ) ( )<br />

( , θ)<br />

( , θ)<br />

( )<br />

( ) ( )<br />

A q y t<br />

B q C q,<br />

θ<br />

= u( t)<br />

+ e t , essa è<br />

F q D q,<br />

θ<br />

identificabile in θ * se e solo se valgono contemporaneamente le seguenti quattro condizioni:<br />

• A , B e C sono polinomi primi tra loro<br />

• B ed F sono polinomi primi tra loro<br />

• C e D sono polinomi primi tra loro<br />

• se A ≠ 1 allora anche F e D devono essere primi tra loro<br />

Tutti i polinomi sono calcolati in θ = θ<br />

* .<br />

Quindi, si ha l’unicità della soluzione θ solo quando non si hanno cancellazioni polo-zero nel<br />

modello. Se uno zero del numeratore è vicino ad uno zero del denominatore siamo vicini ad<br />

una condizione di non identificabilità. In questo caso conviene ridurre l’ordine del modello.<br />

Questo teorema è applicabile a posteriori: si calcola il valore di θ * mediante uno dei metodi<br />

visti sopra e poi si verificano le quattro condizioni.<br />

Il sistema da identificare genera in uscita una sequenza infinita ma stazionaria Z ∞<br />

(possiamo<br />

pensare che ogni Z N<br />

sia una realizzazione troncata di un processo stocastico). Se abbiamo due<br />

modelli M( θ 1 ) ed ( )<br />

informativi se la sequenza Z ∞<br />

ci permette di distinguere fra M( θ 1 ) ed ( )<br />

M θ 2<br />

(diversi per ipotesi), si dice che i dati in Z ∞<br />

sono sufficientemente<br />

M θ 2<br />

.<br />

Quindi, la sequenza Z ∞<br />

è sufficientemente informativa se, qualora<br />

1<br />

∑ E{ [ W1 ( q) − W2 ( q)<br />

] Z<br />

N<br />

( t)<br />

} = 0 (dove W1 ( q)<br />

è il predittore associato ad ( )<br />

N<br />

2<br />

è il predittore associato ad M( θ 2 ) ), allora W1 ( q) ≡ W2<br />

( q)<br />

.<br />

lim<br />

N→∞<br />

W ( q)<br />

[ ]<br />

M θ 1<br />

e<br />

La sequenza Z N<br />

può essere scritta come Z N<br />

= u( 1) y( 1) u( 2) y( 2)<br />

K oppure come<br />

Z N<br />

= [ u( 1) u( 2) K y( 1) y( 2)<br />

K ]. In questo secondo caso possiamo scrivere:<br />

[ ] ( )<br />

( )<br />

−1 −1<br />

( θ) ( θ) ( θ) ( ) ( θ)<br />

−1 −1<br />

( , θ) ( , θ) ( , θ)<br />

Z<br />

y$ t, = H q, G q, u t + I − H q,<br />

y t =<br />

[ H q G q I H q ] W ( q)<br />

= − =<br />

Z<br />

N i N<br />

107


<strong>Modellistica</strong> ed Identificazione<br />

T<br />

Se definiamo R( Z) = E{ Z N<br />

Z N }<br />

(matrice di autocorrelazione di Z N<br />

), si può dire che la<br />

sequenza Z ∞<br />

è sufficientemente informativa se la seguente matrice (matrice spettrale di Z N<br />

):<br />

Φ ( ) ( )<br />

u<br />

Φuy<br />

Φ ( ) [ ( )<br />

Z<br />

ω = ω ω<br />

F R Z ] = ⎡ ⎣ ⎢ ⎤<br />

Φ ( ) Φ ( )<br />

⎥<br />

yu<br />

ω<br />

y<br />

ω ⎦<br />

è strettamente d.p. ∀ω . Quindi, deve essere Φ ( ) Φ ( )<br />

uy<br />

ω =<br />

yu<br />

ω .<br />

Questa seconda definizione è equivalente alla prima: per calcolare la matrice Φ Z<br />

( ω ) ∀ω<br />

bisogna far tendere N a + ∞ (altrimenti non si possono ottenere tutte le frequenze).<br />

Un segnale u( t ) stazionario con spettro Φ u<br />

( ω ) è persistentemente eccitante se Φ u<br />

( ω ) > 0<br />

∀ω . Un segnale persistentemente eccitante è, ad esempio, il rumore bianco.<br />

Condizione sufficiente affinché la sequenza Z N<br />

sia sufficientemente informativa è che il<br />

segnale d’ingresso al sistema sia persistentemente eccitante.<br />

8.8 Altri metodi di identificazione di sistemi lineari<br />

stazionari<br />

Se abbiamo un sistema lineare stazionario possiamo tentare di identificare la sua risposta in<br />

frequenza 2 utilizzando un relè:<br />

A causa del relè l’uscita del sistema oscilla 3 con pulsazione ω 0<br />

e ampiezza G( j ω<br />

0 )<br />

π<br />

ω 0<br />

è la pulsazione per la quale la G( jω ) ha fase − π . Per valutare la ( )<br />

diverse da ω 0<br />

si può inserire un ritardo e − jωT<br />

∠<br />

a valle del relè, ottenendo:<br />

[ e − j<br />

( )]<br />

ω T<br />

G jω = −π ⇒ G( j )<br />

∠ ω = − π + ωT<br />

4<br />

, dove<br />

G jω per pulsazioni<br />

2 Se un sistema lineare è a fase minima il suo diagramma di fase si può ricavare direttamente conoscendo quello<br />

di ampiezza. Per questo, in genere, quando si devono effettuare delle identificazioni si considera solo l’ampiezza<br />

della risposta in frequenza e non la sua fase.<br />

G jω non è tagliata dal semiasse reale negativo del diagramma di Nyquist.<br />

3 Il sistema non oscilla se la ( )<br />

108


Identificazione<br />

In questo modo, misurando l’ampiezza dell’uscita, possiamo ottenere l’ampiezza della G( jω)<br />

quando essa ha fase − π + ωT . Variando il valore T possiamo valutare l’ampiezza della G( jω)<br />

in diversi punti.<br />

Se invece di un ritardo abbiamo un integratore riusciamo a valutare l’ampiezza della G( jω)<br />

nel punto in cui assume fase − π 2 :<br />

1 ⎤<br />

G( jω)<br />

π ⇒ ∠ G( jω)<br />

∠ ⎡ ⎣ ⎢ jω<br />

⎥ = −<br />

⎦<br />

= −<br />

π<br />

2<br />

8.9 Riferimenti<br />

• Ljung: “System Identification: Theory For The User” (1987) (base del toolbox “System<br />

Identification” di Matlab)<br />

• Söderström - Stoica: “System Identification” (1987)<br />

• Ljung - Glad: “System Modelling” (1995)<br />

• Young: “Information Theory”<br />

• Torantola: “Inverse Problems Theory”<br />

109


Funzione modulante<br />

9. FUNZIONE MODULANTE<br />

Si abbia la seguente equazione differenziale:<br />

2<br />

d y( t) ( )<br />

a dy t ( ) ( )<br />

2<br />

+<br />

1<br />

+ a<br />

0y t = b<br />

0u t<br />

dt dt<br />

che descrive il comportamento ingresso-uscita di un sistema. I parametri a 0<br />

, a 1<br />

e b 0<br />

siano<br />

ignoti. Il problema che ci poniamo è quello di calcolarli sfruttando le nostre conoscenze di<br />

u( t ) ed y( t ) in un intervallo [ t<br />

0<br />

, t<br />

1]<br />

.<br />

Abbiamo tre incognite, quindi, teoricamente, avendo tre relazioni possiamo risolvere il<br />

problema. In realtà non conosciamo le derivate prima e seconda di y( t ) .<br />

Se la relazione di sopra è vera, ovviamente è vera anche la seguente relazione:<br />

t1<br />

t 0<br />

2<br />

d y( t)<br />

dy( t)<br />

ϕ( t)<br />

a ϕ( t)<br />

ϕ( ) ( ) ϕ( ) ( )<br />

2<br />

+<br />

1<br />

+ a<br />

0<br />

t y t = b0<br />

t u t ∀ϕ( t ) e ∀t<br />

0,<br />

t<br />

1<br />

dt<br />

dt<br />

⇓<br />

2<br />

t1<br />

t1<br />

t1<br />

d y( t)<br />

dy( t)<br />

ϕ( t)<br />

dt a ϕ( t)<br />

dt a ϕ( t) y( t) dt b ϕ( t) u( t)<br />

2<br />

+<br />

1<br />

+<br />

0<br />

=<br />

0<br />

dt ∀ϕ( t ) e ∀t<br />

dt<br />

dt<br />

∫ ∫ ∫ ∫<br />

t0<br />

t0<br />

Se u( t ) è affetta da rumore, effettuando l’integrale di u( t) ϕ ( t)<br />

compensiamo gli effetti del<br />

rumore su u( t ) ( ϕ( t ) è conosciuta con precisione perché può essere scelta arbitrariamente).<br />

Applichiamo la formula di integrazione per parti:<br />

t<br />

t1<br />

∫<br />

t 0<br />

1<br />

ϕ( t) y&<br />

( t) dt = ϕ( t) y( t)<br />

− ϕ&<br />

t y t dt<br />

t 0<br />

1<br />

t<br />

[ ] ∫ ( ) ( )<br />

1<br />

1<br />

1<br />

t<br />

t<br />

t<br />

∫ [ ] ∫ ( ) ( ) [ ( ) ( )] [ ( ) ( )] ∫ ( ) ( )<br />

t 0<br />

1<br />

1<br />

1<br />

ϕ( t) && y( t) dt = ϕ( t) y& ( t)<br />

− ϕ& t y& t dt = ϕ t y& t − ϕ& t y t + ϕ&&<br />

t y t dt<br />

Possiamo scegliere la funzione ( )<br />

Il nostro integrale diventa il seguente:<br />

t1<br />

t 0<br />

t 0<br />

t<br />

t 0<br />

t0<br />

t<br />

t 0<br />

t 0<br />

ϕ t in modo che sia ϕ( t ) = ϕ( t ) = e ϕ&<br />

( t ) ϕ&<br />

( t )<br />

t1<br />

0 1<br />

0<br />

∫ ∫ ∫ ∫<br />

ϕ&&<br />

( t) y( t) dt − a ϕ&<br />

( t) y( t) dt + a ϕ( t) y( t) dt = b ϕ( t) u( t)<br />

dt<br />

t1<br />

t1<br />

1 0 0<br />

t0<br />

t0<br />

t 0<br />

t 0<br />

t<br />

t 0<br />

, t<br />

0 1<br />

= = :<br />

0 1<br />

0<br />

dove ϕ( t ) , &ϕ ( t ) e &&ϕ ( t ) sono imposti da noi e memorizzati. Possono essere utilizzate più<br />

funzioni ϕ( t ) diverse per ottenere diverse approssimazioni dei parametri del sistema.<br />

In generale si ottiene il seguente sistema algebrico:<br />

111


<strong>Modellistica</strong> ed Identificazione<br />

⎡ c c L c<br />

⎢<br />

c<br />

21<br />

O<br />

⎢<br />

⎢<br />

⎢<br />

⎣c<br />

1<br />

c<br />

11 12 1,<br />

n<br />

⎤⎡a1<br />

⎤ ⎡a1<br />

⎤ ⎡ z1<br />

⎤<br />

⎥⎢<br />

a<br />

⎥ ⎢<br />

2<br />

a<br />

⎥ ⎢<br />

⎥<br />

2<br />

z<br />

⎥<br />

⎢ ⎥<br />

2<br />

= M⎢<br />

⎥ = z = ⎢ ⎥<br />

⎥⎢<br />

M ⎥ ⎢ M ⎥ ⎢ M ⎥<br />

⎥⎢<br />

⎥ ⎢ ⎥ ⎢ ⎥<br />

⎦⎣a<br />

⎦ ⎣a<br />

⎦ ⎣z<br />

⎦<br />

m, m,<br />

n n n m<br />

dove gli a i<br />

sono i parametri ignoti del sistema.<br />

Bisogna scegliere un insieme di funzioni ϕ i<br />

( t ) tale che la matrice M risulti ben condizionata<br />

per evitare problemi numerici. Se il numero m delle ϕ i<br />

( t ) è maggiore del numero n dei<br />

coefficienti da calcolare possiamo applicare il metodo dei minimi quadrati:<br />

⎡a<br />

1 ⎤<br />

⎢<br />

a<br />

⎥<br />

T 2<br />

M M⎢<br />

⎥ = M<br />

⎢ M ⎥<br />

⎢ ⎥<br />

⎣a<br />

n ⎦<br />

T<br />

⎡ z1<br />

⎤<br />

⎢<br />

z<br />

⎥<br />

⎢<br />

2<br />

⎥<br />

⎢ M ⎥<br />

⎢ ⎥<br />

⎣z<br />

m ⎦<br />

⎡a<br />

1 ⎤<br />

⎢<br />

a<br />

⎥<br />

⇒ ⎢ ⎥ = ( M M)<br />

⎢<br />

⎢<br />

⎣<br />

2 T −1<br />

T<br />

M ⎥<br />

⎥<br />

a n<br />

⎦<br />

M z<br />

Se m > n si riescono a ridurre di molto le incertezze sui parametri del sistema.<br />

Questa tecnica è applicabile sempre (anche nel caso di sistemi non lineari), almeno finché gli<br />

integrali da calcolare non diventano troppo complessi.<br />

L’identificazione mediante questa tecnica può essere effettuata in linea (potremmo essere in<br />

grado di rilevare guasti nel sistema). Si può fare in modo che l’intervallo sul quale si effettua<br />

l’identificazione risulti ad ogni istante parzialmente sovrapposto al precedente:<br />

Si può, cioè, suddividere l’intervallo [ t<br />

0<br />

t<br />

1]<br />

nuovi coefficienti basta gettare via i dati compresi in [ t<br />

0<br />

t<br />

0<br />

T]<br />

[ t1, t1<br />

+ T]<br />

. La ϕ( t ) deve essere tale che ϕ( kT ) = 0, ( )<br />

derivazione necessario).<br />

, in N sottointervalli di durata T . Per calcolare i<br />

, + e calcolare quelli in<br />

&ϕ kT = 0 e così via (fino all’ordine di<br />

112


Riduzione del modello<br />

10. RIDUZIONE DEL MODELLO<br />

Un modello di ordine elevato può rappresentare in modo abbastanza preciso un sistema ma<br />

può causare dei problemi di calcolo. Spesso l’ordine del modello può essere ridotto, ottenendo,<br />

però, una minore accuratezza dei risultati.<br />

10.1 Matrice di controllabilità e matrice di osservabilità<br />

Sia dato un sistema tempo-discreto asintoticamente stabile:<br />

⎧x + 1<br />

= Ax + Bu<br />

⎨<br />

⎩y<br />

k<br />

= Cx<br />

k<br />

k k k<br />

Il sistema è controllabile se la matrice [ A AB A 2 B A 1 B]<br />

L n− n×<br />

mn<br />

∈R ha rango pieno<br />

( A ∈R n×<br />

n e B ∈R n×<br />

m ). Inoltre, il sistema è osservabile se la matrice<br />

[ C CA CA 2 n− L CA<br />

1 T<br />

nr × n<br />

] ∈R ha rango pieno ( C ∈R r×<br />

n ).<br />

Il sottospazio di controllabilità è dato da Im{ [ B AB A B]<br />

}<br />

osservabilità è dato da Im C T A T C T<br />

( A T<br />

)<br />

n −1<br />

C T<br />

K<br />

.<br />

{[ ]}<br />

K n−1 , mentre il sottospazio di<br />

Ma il rango di una matrice M è uguale al rango di MM T . Quindi, per studiare la<br />

controllabilità si può esaminare il rango della seguente matrice:<br />

n−1<br />

[ B AB K A B]<br />

T<br />

⎡ B ⎤<br />

⎢ T T ⎥<br />

B A<br />

n×<br />

n<br />

⋅<br />

⎢ ⎥ ∈R<br />

⎢ M ⎥<br />

⎢<br />

T T<br />

B ( A )<br />

n −1⎥<br />

⎣⎢<br />

⎦⎥<br />

che è quadrata, simmetrica, ad elementi reali e non negativi. Questa matrice ha rango pieno se<br />

il suo autovalore più piccolo è maggiore di zero (gli autovalori sono tutti reali).<br />

Analogamente, per studiare l’osservabilità si può esaminare il rango della seguente matrice:<br />

−1<br />

[ C C A K C ( A ) ]<br />

⎡ C<br />

⎢<br />

CA<br />

⋅ ⎢<br />

⎢ M<br />

⎢<br />

⎣CA<br />

T T T T T n n−1<br />

⎤<br />

⎥<br />

⎥ ∈R<br />

⎥<br />

⎥<br />

⎦<br />

Definiamo la matrice di controllabilità in N passi nel seguente modo:<br />

n×<br />

n<br />

113


<strong>Modellistica</strong> ed Identificazione<br />

( )<br />

T T T N−1<br />

T T<br />

C N −1<br />

N<br />

= BB + ABB A + K+<br />

A B B A<br />

( )<br />

N T T<br />

C<br />

N<br />

C N T<br />

T<br />

+ 1<br />

=<br />

N<br />

+ A BB A = BB + AC<br />

NA (formula ricorsiva)<br />

Analogamente definiamo la matrice di osservabilità in N passi nel seguente modo:<br />

( )<br />

T T T T<br />

O N −1 T N−1<br />

N<br />

= C C + A C CA+ K+<br />

A C CA<br />

O<br />

T T<br />

1<br />

C C+<br />

A ON<br />

A<br />

N+ =<br />

Se gli autovalori della matrice A sono tutti minori di 1 in modulo, per N crescente A N<br />

tende alla matrice nulla. Possiamo calcolare il lim C , ottenendo:<br />

N →∞<br />

N<br />

T<br />

C − ACA<br />

= BB<br />

T<br />

(C → N+ 1<br />

C<br />

N<br />

per N → ∞ )<br />

che è l’equazione di Lyapunov Q − AQA T = P se Q = C e P = BB<br />

T . La matrice C è la<br />

matrice di controllabilità del sistema.<br />

Analogamente, nel caso dell’osservabilità otteniamo la seguente relazione per N → ∞ :<br />

T<br />

T<br />

O − A OA = C C<br />

che è l’equazione di Lyapunov Q − AQA T = P se Q = O , P = BB<br />

T ed A T → A . La matrice<br />

O è la matrice di osservabilità del sistema.<br />

Possiamo decidere sulla completa controllabilità o osservabilità di un sistema usando uno degli<br />

algoritmi esistenti per la soluzione dell’equazione di Lyapunov.<br />

Se il sistema è instabile quello che ora abbiamo detto non è più valido (in questo caso si ha<br />

almeno un autovalore di A di modulo maggiore di 1). Ma il rango di A è uguale al rango di<br />

ρA (ρ > 0): tutti gli autovalori di A possono cioè essere scalati per un fattore ρ , ottenendo in<br />

ogni caso una matrice avente tutti gli autovalori in modulo minori di 1.<br />

10.2 Trasformazione bilanciata<br />

Dato un sistema tempo-discreto:<br />

⎧x + 1<br />

= Ax + Bu<br />

⎨<br />

⎩y<br />

k<br />

= Cx<br />

k<br />

k k k<br />

il legame ingresso-uscita (dato da ( z) = [ z − ]<br />

dello spazio di stato. Se z<br />

k<br />

−1<br />

G C I A B ) non dipende da una trasformazione<br />

= Tx otteniamo:<br />

k<br />

−1<br />

⎧z + 1<br />

= TAT z + TBu<br />

⎨<br />

−1<br />

⎩y<br />

k<br />

= CT zk<br />

k k k<br />

Il polinomio caratteristico di TAT −1<br />

sono uguali a quelli di A :<br />

è uguale a quello di A , quindi gli autovalori di TAT −1<br />

114


Riduzione del modello<br />

[ λI − TAT −1 ] = [ λTT −1 − TAT −1 ] = T ⋅ [ λI − A] ⋅ T −1<br />

= [ λI − A]<br />

det det det det det det<br />

Le matrici di controllabilità ed osservabilità, invece, cambiano effettuando una trasformazione<br />

dello spazio di stato ma conservano il loro rango, poiché le proprietà di controllabilità ed<br />

osservabilità sono strutturali e non dipendono da una tale trasformazione. Otteniamo:<br />

Analogamente:<br />

−<br />

C − TAT<br />

−<br />

CT A T = TBB T<br />

⇓<br />

−1 −T T CT −1<br />

−T T<br />

− AT CT A<br />

T<br />

= BB<br />

⇓<br />

T<br />

C − ACA<br />

T<br />

= BB<br />

⇓<br />

C = TCT T<br />

1 T T T T T<br />

O<br />

T T T T T<br />

− T A T OTAT = T C CT<br />

⇓<br />

T T O T − A T T T OTA = C T C<br />

⇓<br />

T<br />

T<br />

O − A OA = C C<br />

⇓<br />

−T −1<br />

O = T OT<br />

− − 1 − − 1<br />

Quindi, mentre la matrice A si trasforma per similitudine, le matrici C ed O si trasformano<br />

per controgradienza.<br />

Utilizzando un elaboratore elettronico per il calcolo di C ed O si ottengono dei risultati non<br />

precisi, che possono essere pensati come la somma algebrica del risultato reale (ideale) e di un<br />

rumore bianco (errore). Esiste una rappresentazione che minimizza l’errore di troncamento,<br />

che è quella con la quale le matrici di controllabilità e di osservabilità sono uguali e diagonali.<br />

Questa rappresentazione, detta rappresentazione bilanciata, garantisce la minima varianza del<br />

rumore sull’uscita. Se si applica alla matrice A questa trasformazione non si otterrà né la<br />

forma compagna né quella di Jordan.<br />

Spesso la rappresentazione bilanciata non viene applicata in modo completo ma<br />

indipendentemente ai vari blocchi di A , in modo da evidenziare le parti di sistema che<br />

dipendono dai vari ingressi. Cioè spesso si effettua la rappresentazione bilanciata dei vari<br />

sottosistemi del sistema iniziale ed in seguito si compongono fra di loro le rappresentazioni dei<br />

vari sottosistemi così ottenute.<br />

Se la matrice T è tale da portare il sistema in forma bilanciata si ha:<br />

La matrice CO ∈R n×<br />

n<br />

Σ = C = TCT = O = T − OT<br />

−<br />

si trasforma per similitudine:<br />

T T 1<br />

CO = = TCT T T<br />

T OT = TCO<br />

T<br />

Σ 2 − −1 −1<br />

Quindi, gli autovalori della matrice CO sono invarianti rispetto a trasformazioni dello spazio<br />

di stato. La matrice Σ 2 è diagonale e gli elementi lungo la diagonale sono gli autovalori di CO .<br />

115


<strong>Modellistica</strong> ed Identificazione<br />

Questi autovalori (che sono tutti positivi) sono legati alle matrici A , B , C e sono detti valori<br />

caratteristici del sistema. Se uno di tali valori è molto piccolo rispetto agli altri può essere<br />

eliminato. In questo modo si può ridurre l’ordine del sistema. Il modello ridotto deve essere poi<br />

confrontato (utilizzando una famiglia di segnali canonici, come le sinusoidi) con quello<br />

completo per verificare se la riduzione del modello ha portato ad un’approssimazione molto<br />

pesante, nel qual caso la riduzione non può essere effettuata.<br />

10.3 Modello ridotto nel caso di sistemi tempo-discreti<br />

Consideriamo un sistema tempo-discreto e suddividiamo il vettore x k<br />

( )<br />

x 1 p<br />

k<br />

∈R ed<br />

( 2)<br />

x k<br />

q<br />

∈R ( p q n<br />

+ = ):<br />

n<br />

∈R in due parti,<br />

⎧x A x A x B u<br />

⎨<br />

⎩x A x A x B u<br />

( 1) ( 1) ( 2)<br />

k+<br />

1<br />

=<br />

11 k<br />

+<br />

12 k<br />

+<br />

1 k<br />

( 2) ( 1) ( 2)<br />

k+<br />

1<br />

=<br />

21 k<br />

+<br />

22 k<br />

+<br />

2 k<br />

( 1) ( 2)<br />

y<br />

k<br />

= C1x k<br />

+ C2x<br />

k<br />

Usando la rappresentazione bilanciata otteniamo due matrici Σ 1<br />

e Σ 2<br />

. Supponendo che gli<br />

autovalori di Σ 2<br />

siano molto piccoli rispetto a quelli di Σ 1<br />

possiamo trascurare<br />

( )<br />

x k 2 , passando<br />

da un sistema di ordine n ad un sistema di ordine p . Si possono eliminare le variabili ( ) x k 2 ,<br />

ottenendo:<br />

A regime si ottiene:<br />

Ma eliminare la dinamica delle<br />

( 1) = ( 1)<br />

+<br />

k + 1 11 k 1 k<br />

x A x B u<br />

( 1) −1<br />

r<br />

= ( −<br />

11)<br />

1<br />

( 1) 1<br />

1( 11)<br />

x I A B u<br />

r<br />

−1<br />

r r 1 r<br />

y = C x = C I − A B u<br />

( )<br />

x k<br />

2<br />

è una semplificazione troppo “brutale” (il<br />

2<br />

comportamento del sistema non è rispettato, soprattutto in bassa frequenza): le x k<br />

sono poco<br />

importanti nella descrizione della dinamica del sistema ma non possono essere eliminate.<br />

( 2) ( )<br />

Possiamo imporre che sia x x<br />

2 ( 2)<br />

, cioè che la dinamica delle x k<br />

sia molto veloce rispetto a<br />

k+ 1<br />

=<br />

k<br />

2<br />

x k<br />

quella delle x ( 1 )<br />

k<br />

, cioè che le ( ) arrivino subito a regime (un valore caratteristico molto<br />

piccolo corrisponde ad una dinamica molto veloce):<br />

( 2) ( 1) ( 2)<br />

x<br />

k<br />

= A<br />

21x k<br />

+ A<br />

22x k<br />

+ B<br />

2u<br />

k<br />

( 2) −1<br />

( 1) −1<br />

k<br />

= ( −<br />

22 ) 21 k<br />

+ ( −<br />

22 ) 2 k<br />

x I A A x I A B u<br />

( 1) ( 1) ( 2) + 1 11<br />

12<br />

1 11 12 ( 22 )<br />

( 1) ( 2) −1<br />

( )<br />

⇓<br />

−1<br />

( 1) −1<br />

[ [ 1 12 ( 22 ) 2 ]<br />

( 1) −1<br />

[ 1 2 22 21] 2( 22 ) 2<br />

x = A x + A x + B u = A + A I − A A ⋅ x + B + A I − A B ⋅ u<br />

k k k k k k<br />

y = C x + C x = C + C I − A A ⋅ x + C I − A B u<br />

k 1 k 2 k k k<br />

( )<br />

116


Riduzione del modello<br />

− 1 ~<br />

C + C I − A A = C e<br />

− 1 ~ − 1 ~<br />

Se A<br />

11<br />

+ A12 ( I − A<br />

22 ) A<br />

21<br />

= A , B1 + A12 ( I − A<br />

22 ) B<br />

2<br />

= B ,<br />

1 2 ( 22 )<br />

1<br />

C ( I − A ) B = D<br />

2 22<br />

− ~<br />

2 , otteniamo:<br />

( ) ( )<br />

21<br />

1<br />

⎧<br />

~ 1 ~<br />

x<br />

k+ 1<br />

= Ax<br />

k<br />

+ Bu<br />

k<br />

⎨ ~ ( 1)<br />

~<br />

⎩y k<br />

= Cx<br />

k<br />

+ Du<br />

k<br />

.<br />

L’uscita del sistema di ordine ridotto dipende direttamente dall’ingresso, al contrario di quanto<br />

succedeva nel sistema iniziale.<br />

10.4 Modello ridotto nel caso di sistemi tempo-continui<br />

Consideriamo un sistema tempo-continuo e suddividiamo il vettore x ∈R n<br />

x 1<br />

∈R p ed x 2<br />

∈R q ( p + q = n ):<br />

⎧x&<br />

( ) ( ) ( ) ( )<br />

1<br />

t = A<br />

11x1 t + A12x 2<br />

t + B<br />

1u<br />

t<br />

⎨<br />

⎩x&<br />

( ) A x ( ) A x ( ) B u( )<br />

2<br />

t =<br />

21 1<br />

t +<br />

22 2<br />

t +<br />

2<br />

t<br />

y( t) = C x ( t) + C x ( t)<br />

1 1 2 2<br />

in due parti,<br />

Usando la rappresentazione bilanciata otteniamo due matrici Σ 1<br />

e Σ 2<br />

. Supponendo che gli<br />

autovalori di Σ 2<br />

siano molto piccoli rispetto a quelli di Σ 1<br />

possiamo supporre &x 2<br />

( t ) = 0 (i<br />

modi legati ad x 2<br />

( t ) sono così rapidi che arrivano subito a regime). Otteniamo:<br />

1<br />

1<br />

x ( t) = −A −<br />

−<br />

A x ( t) − A B u( t)<br />

2 22<br />

21 1 22<br />

⇓<br />

&x t = A x t + A x t + B u t = A − A<br />

1<br />

A A ⋅ x t + B − A<br />

−1<br />

A B ⋅u<br />

t<br />

( ) ( ) ( ) ( ) [ ] ( ) [ ] ( )<br />

1 11 1 12 2 1 11 12 22<br />

2<br />

21 1 1 12 22<br />

( ) ( ) ( ) [ − 1<br />

−1<br />

] ( ) ( )<br />

y t = C x t + C x t = C − C A A ⋅ x t − C A B u t<br />

1 1 2 2 1 2 22<br />

21 1 2 22<br />

2<br />

2<br />

− 1 ~<br />

Se A<br />

11<br />

− A12A 22A 21<br />

= A , B A A<br />

− 1 ~<br />

1<br />

−<br />

12 22 B<br />

2<br />

= B , C C A<br />

1<br />

1<br />

−<br />

2 22 A<br />

21<br />

= C<br />

otteniamo:<br />

− ~<br />

−1<br />

~<br />

e − C A B = D ,<br />

2 22<br />

2<br />

⎧ ( )<br />

~<br />

( )<br />

~<br />

x&<br />

( )<br />

1<br />

t = Ax1<br />

t + Bu t<br />

⎨<br />

( )<br />

~<br />

( )<br />

~<br />

⎩y t = Cx Du( )<br />

1<br />

t + t<br />

.<br />

Anche in questo caso l’uscita del sistema di ordine ridotto dipende direttamente dall’ingresso,<br />

al contrario di quanto succedeva nel sistema iniziale.<br />

117


Filtri di Laguerre<br />

11. FILTRI DI LAGUERRE<br />

11.1 Funzioni di Laguerre<br />

I polinomi di Laguerre sono delle funzioni ortonormali che costituiscono una base dello spazio<br />

delle funzioni L 2<br />

( 0,∞ ) (funzioni a quadrato sommabile nell’intervallo di tempo [ 0,∞ ]).<br />

Le funzioni di Laguerre sono date da:<br />

con p parametro arbitrario positivo e:<br />

Data una generica funzione ( )<br />

∞<br />

∑<br />

h( t) = a L ( t)<br />

.<br />

i=<br />

0<br />

i<br />

i<br />

−pt<br />

( ) = 2 ⋅ φ ( 2 )<br />

L t p e pt<br />

k<br />

e d<br />

k!<br />

dt<br />

k −t<br />

( t) = ( t e )<br />

φ k<br />

t k<br />

h t in ( )<br />

L 2<br />

La trasformata di Laplace di L ( t)<br />

k<br />

è data da:<br />

L ( s)<br />

p s − p<br />

k<br />

= 2<br />

s + p<br />

k<br />

k<br />

0,∞ esistono degli opportuni coefficienti a i<br />

per cui<br />

k<br />

( ) 2p<br />

k+<br />

1<br />

=<br />

( ) ( s + p)<br />

Quindi, la trasformata di Laplace di h( t ) è data da:<br />

∞<br />

∑<br />

H( s) = a L ( s)<br />

i=<br />

0<br />

i<br />

i<br />

⎡<br />

⎢<br />

⎣⎢<br />

( s − p)<br />

( s + p)<br />

⎤<br />

⎥<br />

⎦⎥<br />

k<br />

11.2 Analisi di sistemi tempo-continui lineari<br />

stazionari<br />

Dato un sistema lineare stazionario con risposta impulsiva h( t ) si ha:<br />

∞<br />

∑<br />

y( t) = h( t) ⊗ u( t) = a L ( t) ⊗ u( t) = a w ( t)<br />

i i<br />

i=<br />

0 i=<br />

0<br />

∞<br />

∑<br />

i<br />

i<br />

119


<strong>Modellistica</strong> ed Identificazione<br />

dove u( t ) è l’ingresso ed y( t ) è l’uscita del sistema. Nel dominio di Laplace l’equazione di<br />

sopra diventa la seguente:<br />

∞<br />

∞<br />

N<br />

∑ i i ∑ i i ∑<br />

i=<br />

0 i=<br />

0 i=<br />

0<br />

Y( s) = H( s) U( s) = a L ( s) U( s) = a W ( s) ≅ a W ( s) = W( s)<br />

a<br />

dove W( s ) è un vettore riga contenente le W ( s)<br />

i<br />

ed a è un vettore colonna contenente i<br />

parametri a i<br />

.<br />

Nel dominio del tempo W( s ) diventa W( t ) i cui elementi W ( t)<br />

i<br />

(uscite associate con le i-<br />

esime funzioni di Laguerre) sono dati da:<br />

W ( t) = L ( t) ⊗ u( t)<br />

i<br />

I filtri di Laguerre consentono di determinare in linea i coefficienti dello sviluppo in serie di<br />

Laguerre della risposta impulsiva di un sistema:<br />

i<br />

i<br />

i<br />

Un filtro di Laguerre viene realizzato in N stadi, il primo dei quali (quello per i = 0 ) ha f.d.t.<br />

1<br />

data da mentre gli altri (quelli per i > 0 ) hanno f.d.t. date da s − p<br />

s + p<br />

s + p<br />

:<br />

Indicando con a il vettore dei coefficienti effettivi e con $a ( t ) il vettore delle stime di tali<br />

coefficienti all’istante t possiamo definire l’errore di stima nel seguente modo:<br />

[ ] ( ) ( )<br />

e( t) = y ( t) − y ( t) = W( t) a$ ( t)<br />

− a = W t a~<br />

t<br />

c<br />

m<br />

120


Filtri di Laguerre<br />

dove y ( t) ( t) ( t)<br />

c<br />

= W a$ è l’uscita calcolata all’istante t e y ( t) ( t)<br />

m<br />

= W a è l’uscita misurata<br />

all’istante t .<br />

La legge di adattamento dei parametri $a ( t ) è data da:<br />

d<br />

dt<br />

$a ( t) = −p W T<br />

0<br />

( t) e( t)<br />

dove p 0<br />

è una costante di guadagno arbitraria. Otteniamo :<br />

dove W T ( t ) W( t ) = Q( t ) ≥ 0:<br />

d ~ d<br />

T<br />

T<br />

a( t) = a$ ( t) = − p W ( t) e( t) p W ( t) W( t) ~ a( t)<br />

0<br />

= −<br />

0<br />

dt dt<br />

La condizione iniziale del blocco integratore deve essere nulla.<br />

La convergenza per N → ∞ è tanto più rapida quanto più il polo p è vicino al polo più lento<br />

del sistema. Comunque la conoscenza del polo più lento non è necessaria anche se può<br />

velocizzare il processo di identificazione.<br />

La convergenza degli a i<br />

è assicurata se l’ingresso è permanentemente eccitante.<br />

11.3 Sistemi non lineari<br />

L’identificazione in linea mediante i filtri di Laguerre è giustificata teoricamente solo per<br />

sistemi lineari stazionari. Ma la rapidità di convergenza dell’algoritmo di adattamento<br />

permette ai filtri di Laguerre di inseguire con precisione il comportamento ingresso-uscita di<br />

molti sistemi non lineari, anche se in questi casi i coefficienti non si stabilizzano. Comunque<br />

non è chiaro sotto quali condizioni il comportamento ingresso-uscita di un generico sistema<br />

non lineare sia riproducibile da un banco di filtri di Laguerre con coefficienti tempo-varianti.<br />

11.4 Miglioramenti dei filtri di Laguerre<br />

I filtri di Laguerre dipendono dal parametro p , detto “polo di Laguerre”, che viene specificato<br />

dall’utente. Più p è vicino al polo lento del sistema, minore è il numero di filtri necessari per<br />

identificare il sistema, a parità di errore di approssimazione. Filtrando opportunamente i<br />

segnali di ingresso-uscita è possibile costruire reti di Laguerre con poli differenti per<br />

approssimare il sistema in differenti bande di frequenza:<br />

121


<strong>Modellistica</strong> ed Identificazione<br />

aggiungere altri filtri passabanda sotto altri banchi di filtri di Laguerre.<br />

11.5 Generalizzazioni delle funzioni di Laguerre<br />

Esistono funzioni ortonormali che generalizzano i polinomi di Laguerre, dette funzioni di<br />

Kautz:<br />

2<br />

2b 1<br />

ks<br />

k−<br />

s − b<br />

is + c<br />

Ψ 2 1<br />

( )<br />

k−<br />

s = 2 ∏ 2<br />

s + b s + c s + b s + c<br />

k<br />

k<br />

i=<br />

1<br />

2<br />

2b 1<br />

kc<br />

k−<br />

k s − bis + c<br />

Ψ 2<br />

( )<br />

k<br />

s = 2 ∏ 2<br />

s + b s + c s + b s + c<br />

k<br />

con b k<br />

≥ 0 e c k<br />

≥ 0.<br />

Se b = k<br />

p e c k<br />

= 0 si ottengono le funzioni di Laguerre.<br />

Se b = k<br />

b e c c k<br />

= si ottengono le cosiddette “funzioni di Kautz a due parametri”. Le funzioni<br />

di Kautz a due parametri sono la scelta ottima se il sistema da identificare è caratterizzato da<br />

una coppia di poli dominanti complessi coniugati:<br />

k<br />

i=<br />

1<br />

i<br />

i<br />

i<br />

i<br />

i<br />

i<br />

122


Filtri di Laguerre<br />

123


12. CENNI SULL<br />

ENNI SULL’IDENTIFICAZIONE DEI<br />

SISTEMI NON LINEARI<br />

La dinamica di un sistema lineare &x ( t) = Ax( t) + bu( t)<br />

è data dalla somma di un’evoluzione<br />

forzata e di un’evoluzione libera. Lo stato di un sistema di questo tipo è quindi dato da una<br />

somma di esponenziali. Se il sistema è non lineare la descrizione della sua dinamica diventa<br />

più complessa 1 . Ci farebbe comodo, però, che anche in questo caso lo stato del sistema fosse<br />

descrivibile come somma di funzioni di un certo tipo.<br />

Ad esempio, se lo stato di un sistema non lineare è descritto da x( t)<br />

=<br />

N<br />

N<br />

∑<br />

i=<br />

0<br />

x<br />

i<br />

cosωit<br />

, allora<br />

x&<br />

( t)<br />

= −∑ ωixi<br />

senωit<br />

. Se il sistema originario è descritto dalla relazione x& ( t) = f( x( t) , u( t)<br />

), la<br />

i=<br />

0<br />

sua evoluzione libera è data da:<br />

N<br />

− = ⎛ N<br />

⎝ ⎜ ⎞<br />

∑ωix<br />

i<br />

sen iωt f ∑x<br />

i<br />

cosiωt⎟<br />

⎠<br />

i= 0 i=<br />

0<br />

Sviluppando la f in serie di Fourier ed uguagliando tra loro i termini isofrequenziali<br />

otteniamo un insieme di relazioni che possono permetterci di determinare i parametri del<br />

sistema.<br />

Lo scostamento tra &x ( t ) ed f x ( t) , u( t)<br />

può essere definito come:<br />

ε 2 0<br />

( )<br />

T<br />

[ x ( ) ( x T<br />

( ) ( ))] x ( ) x ( ) ( )<br />

[ ( )]<br />

= ∫ & t − f t , u t & t − f t , u t dt<br />

Si può dimostrare che x<br />

a<br />

− x < ε =<br />

del sistema.<br />

ε 2 , dove x a<br />

è lo stato approssimato ed x è lo stato reale<br />

12.1 Modelli di Hammerstein e di Wiener<br />

Un modello di sistema dato da un blocco non lineare seguito da un blocco lineare è detto<br />

modello di Hammerstein:<br />

1 La funzione descrittiva è un metodo approssimato per analizzare la dinamica di un sistema non lineare perché<br />

si considera solo la prima armonica dell’uscita. Per avere una descrizione più accurata del comportamento del<br />

sistema dovremmo considerare anche le armoniche successive alla prima. Inoltre, il metodo della funzione<br />

descrittiva è valido solo per non linearità dispari.<br />

125


<strong>Modellistica</strong> ed Identificazione<br />

Un modello di sistema dato da un blocco lineare seguito da un blocco non lineare è detto<br />

modello di Wiener:<br />

Spesso un sistema non lineare può essere modellato secondo Hammerstein o Wiener.<br />

Volendo identificare il blocco lineare e la non linearità di un sistema modellato secondo<br />

Hammerstein o Wiener si ha il problema di non poter decidere dove inserire le costanti<br />

moltiplicative (possono essere inserite nella non linearità o nel blocco lineare). In genere si<br />

parte dall’ipotesi di avere un fattore moltiplicativo uguale ad 1 nella non linearità o nel<br />

blocco lineare.<br />

126


Reti neurali<br />

13. RETI NEURALI<br />

Le reti neurali nascono nel 1940~45 ad opera di McCulloch e Pitt. Le reti neurali all’inizio<br />

erano intese come un tentativo di riproduzione del comportamento di neuroni biologici e per<br />

questo sono stati trasferiti in quest’ambito termini come neurone (unità elementare di<br />

elaborazione), assone (collegamento in uscita dal neurone) e sinapsi (connessioni tra ingressi<br />

di un neurone ed uscite di altri neuroni). Un neurone è inoltre caratterizzato da una funzione<br />

di attivazione F, da una funzione d’uscita θ , dagli ingressi x i<br />

e da un peso w i<br />

per ogni<br />

connessione in ingresso, in modo che l’uscita di un neurone può essere scritta come:<br />

{ [ ]}<br />

o ( t + 1) = θ F w ( t) , x ( t)<br />

i i i<br />

Tipicamente la funzione d’attivazione è la somma pesata degli ingressi e può presentare una<br />

soglia µ : F( w<br />

i<br />

, xi ) = ∑ w<br />

ix<br />

i<br />

− µ .<br />

i<br />

I pesi delle connessioni possono essere variati durante la fase di apprendimento: la rete può,<br />

cioè, imparare modificando i pesi delle sue connessioni, dando più importanza ad alcune e<br />

meno ad altre. La fase di apprendimento (learning phase) consiste nel presentare alla rete una<br />

serie di ingressi, detti esempi (l’insieme degli esempi viene detto training set), e nel verificare<br />

che la rete risponda correttamente (le uscite corrette devono essere conosciute). In base<br />

all’errore commesso dalla rete vengono aggiornati (in base ad una qualche regola) i pesi delle<br />

connessioni e il processo di apprendimento ricomincia. La fase di apprendimento termina<br />

quando l’errore commesso dalla rete sugli esempi è sufficientemente basso. Quando è stato<br />

presentato alla rete l’intero training set si dice che è terminata un’epoca di apprendimento.<br />

Dopo l’apprendimento la rete dovrebbe rispondere correttamente anche su un soprainsieme<br />

del trainig set, detto validation set.<br />

Questo comportamento vuole assomigliare a quello che avviene nel cervello, nel quale i<br />

collegamenti tra neuroni che comunicano poco si indeboliscono e i collegamenti tra neuroni<br />

che comunicano molto si rafforzano.<br />

I primi studi sulle reti neurali furono accompagnati da un grande ottimismo perché si pensava<br />

di aver trovato un modello matematico che riuscisse a descrivere in modo abbastanza preciso<br />

il comportamento di un cervello, e cioè di un essere pensante. Questi studi ricevettero un<br />

grande impulso quando, negli anni 1960~65, Rosenblatt ideò il percettrone e una regola per<br />

la determinazione in linea dei pesi. Ma successivamente (1969) Minsky mostrò che questo<br />

modello non era in grado di apprendere il comportamento di semplici operatori booleani, in<br />

127


<strong>Modellistica</strong> ed Identificazione<br />

particolare dello XOR. Questo causò una lunga pausa nello studio sulle reti neurali fino al<br />

1986, quando fu pubblicato un libro di Rumelhart (“P.D.P.”, Parallel Distributed Processing),<br />

che presentava un percettrone multistrato, con apprendimento dato dalla Back Propagation.<br />

Successivamente furono ideati molti altri tipi di reti, che tentano tutti, in una qualche misura,<br />

di risolvere problemi che richiedono una certa “intelligenza”, anche se è stato definitivamente<br />

abbandonato il “sogno” di poter modellare in questo modo esseri intelligenti.<br />

13.1 Percettrone<br />

Un percettrone è descrivibile nel seguente modo:<br />

n<br />

⎡<br />

⎤<br />

o( t + 1) = θ⎢∑<br />

w ( t)<br />

iξ i<br />

− µ ⎥<br />

⎣ i=<br />

1 ⎦<br />

dove la funzione d’uscita θ è di tipo binario e può essere data da θ( h) = sgn ( h)<br />

(come in<br />

figura) o da θ( h) = u( h)<br />

.<br />

Nella formula di sopra c’è una dipendenza dal tempo che può essere eliminata, ottenendo:<br />

Se µ = 0 e θ( h) = u( h)<br />

otteniamo:<br />

n<br />

⎛ ⎞<br />

o = θ⎜∑<br />

w i<br />

ξ i<br />

− µ ⎟<br />

⎝ ⎠<br />

i=<br />

1<br />

T<br />

o = u( w ξ)<br />

Il prodotto scalare tra due vettori è positivo quando l’angolo α compreso è tale che<br />

π<br />

− < α <<br />

π<br />

2 2 :<br />

2<br />

Se ξ ∈R , fissando w la rete può riconoscere tutti gli ξ che sono dalla parte di w rispetto<br />

alla retta perpendicolare a w e passante per l’origine:<br />

128


Reti neurali<br />

La parte di piano tratteggiata è quella in cui giacciono tutti i vettori ξ che possono essere<br />

riconosciuti dalla rete. Utilizzando un valore diverso da zero per la soglia µ si può traslare la<br />

retta che separa i due insiemi.<br />

L’insieme dei vettori che sono riconosciuti da un percettrone e quello dei vettori che non sono<br />

riconosciuti sono linearmente separabili, cioè sono separati da una superficie lineare ad n<br />

dimensioni ( n è la dimensione di ξ ). Una rete a due strati come il percettrone può<br />

riconoscere solo ingressi che appartengono ad un insieme che sia linearmente separabile da<br />

quello degli ingressi non riconosciuti.<br />

Un percettrone di questo tipo riesce ad imparare l’AND e l’OR ma non lo XOR:<br />

Infatti, sia nel caso dell’AND 1 :<br />

ξ 1<br />

ξ 2<br />

AND OR XOR<br />

0 0 0 0 0<br />

0 1 0 1 1<br />

1 0 0 1 1<br />

1 1 1 1 0<br />

che nel caso dell’OR:<br />

1 I cerchi pieni sono in corrispondenza dei vettori che devono essere riconosciuti dalla rete, mentre quelli vuoti<br />

sono in corrispondenza dei vettori che non devono essere riconosciuti dalla rete.<br />

129


<strong>Modellistica</strong> ed Identificazione<br />

riusciamo a trovare almeno una retta (e quindi un vettore w di pesi) che separa l’insieme<br />

degli ingressi riconosciuti dalla rete da quello degli ingressi non riconosciuti. Nel caso dello<br />

XOR, invece, tale retta non esiste:<br />

13.2 Reti a due strati<br />

Una generica rete a due strati è la seguente:<br />

o<br />

n<br />

= ⎛ w<br />

⎝ ⎜ ⎞<br />

θ ∑ ξ ⎟<br />

j=<br />

1 ⎠<br />

k jk j<br />

Ogni neurone del primo strato è collegato a tutti i neuroni del secondo strato ma non vi sono<br />

collegamenti tra neuroni appartenenti allo stesso strato.<br />

130


Reti neurali<br />

Cerchiamo una regola per determinare i pesi w jk<br />

nel caso in cui θ( h) = sgn ( h)<br />

. Dato il<br />

training set<br />

( )<br />

o i<br />

( i) ( i)<br />

N<br />

{ x , y }<br />

i<br />

vogliamo che sia ( i) ( i)<br />

min o − y<br />

=1<br />

ed è l’uscita della rete quando l’ingresso è<br />

Poichè θ( h) = sgn ( h)<br />

, la componente k-esima di<br />

W<br />

N<br />

∑<br />

i=<br />

1<br />

( )<br />

ξ = x i .<br />

( )<br />

o i ,<br />

2<br />

, dove W è la matrice dei w jk<br />

( )<br />

o k<br />

i<br />

, vale o 1 o −1:<br />

n<br />

n<br />

( i) ( i)<br />

k<br />

θ ∑ jkξ j<br />

θ ∑ jk j<br />

j= 1 ⎠ j=<br />

1<br />

o = ⎛ w w x<br />

⎝ ⎜ ⎞<br />

⎟ = ⎛ ⎝ ⎜ ⎞<br />

⎟ = ± 1<br />

⎠<br />

Inoltre, la componente k-esima di<br />

( )<br />

y i ,<br />

( )<br />

y k<br />

i<br />

, deve valere o 1 o −1 (altrimenti quell’uscita non<br />

sarebbe mai riproducibile dalla nostra rete). Possono aversi i due seguenti casi: o ed<br />

hanno segno uguale (sono uguali) o hanno segno diverso (sono diversi).<br />

( i)<br />

( i)<br />

Se o k<br />

ed y k<br />

hanno lo stesso segno i pesi della rete non devono essere modificati. Se<br />

( )<br />

y k<br />

i<br />

hanno segno diverso possiamo aggiornare i pesi nel seguente modo:<br />

w = w + ∆w<br />

jk( new) jk( old ) jk<br />

( )<br />

o k<br />

i<br />

( )<br />

o k<br />

i<br />

( )<br />

y k<br />

i<br />

ed<br />

con:<br />

( i) ( i)<br />

( k k )<br />

∆w = η y − o<br />

jk<br />

ξ<br />

j<br />

− può valere o 2 o − 2. Il learning rate η dà una misura di quanto devono<br />

essere modificati i nuovi pesi rispetto ai vecchi.<br />

Ora supponiamo che sia θ( h)<br />

= kh (funzione d’uscita lineare). Possiamo imporre θ( h)<br />

= h e<br />

dove ( i<br />

y<br />

) o<br />

( i )<br />

k k<br />

( ) ( )<br />

i<br />

i<br />

includere la costante k nei pesi. In questo caso è o = Wx (la matrice W dei pesi effettua<br />

una trasformazione dell’ingresso) e, se la W è quella che permette alla rete di riconoscere gli<br />

esempi del training set, si ha:<br />

cioè:<br />

⎡ o<br />

⎢<br />

⎢o<br />

⎢ M<br />

⎢<br />

⎣⎢<br />

o<br />

( 1)<br />

( 2)<br />

⎤ ⎡W<br />

0 0 L 0 ⎤⎡<br />

x<br />

⎥ ⎢<br />

0 W 0 L 0<br />

⎥⎢<br />

⎥<br />

x<br />

= ⎢<br />

⎥⎢<br />

⎥ ⎢<br />

O ⎥⎢<br />

M<br />

⎥ ⎢<br />

⎥⎢<br />

⎦⎥<br />

⎣ 0 0 0 L W⎦⎣⎢<br />

x<br />

( 1)<br />

( 2)<br />

⎤ ⎡ y<br />

⎥ ⎢<br />

⎥ y<br />

=<br />

⎢<br />

⎥ ⎢ M<br />

⎥ ⎢<br />

⎦⎥<br />

⎣⎢<br />

y<br />

( 1)<br />

( 2)<br />

( N )<br />

( N)<br />

( N)<br />

n<br />

( i) ( i ) ( i)<br />

k<br />

= ∑ ji j<br />

=<br />

k<br />

j=<br />

1<br />

o w x y<br />

⎤<br />

⎥<br />

⎥<br />

⎥<br />

⎥<br />

⎦⎥<br />

N m<br />

∑∑<br />

( k k )<br />

( i ) ( i ) ( i ) ( )<br />

Definiamo la funzione di costo E( W ) = ⎜y − w x ⎟ = y − o<br />

i<br />

1<br />

2<br />

N<br />

m<br />

∑∑<br />

Possiamo calcolare il valore di W per cui si ha min E ( W)<br />

⎛<br />

n<br />

k<br />

jk j<br />

i= 1 k=<br />

1<br />

j=<br />

1<br />

i=<br />

1 k=<br />

1<br />

W<br />

⎝<br />

∑<br />

⎞<br />

⎠<br />

1<br />

2<br />

: i pesi possono essere aggiornati in<br />

modo che la direzione di discesa sia opposta rispetto al gradiente della funzione di costo:<br />

.<br />

131


<strong>Modellistica</strong> ed Identificazione<br />

∆w<br />

jk<br />

E<br />

= − η ∂ = −η − = −η δ<br />

∂w<br />

jk<br />

N<br />

( ) ( )<br />

( ) ( ) N<br />

i i i<br />

y o x ( i ) x<br />

( i<br />

∑<br />

)<br />

k k j ∑ k j<br />

i= 1 i=<br />

1<br />

( )<br />

( ) ( ) ( )<br />

i<br />

con δ k<br />

= y<br />

i i<br />

k<br />

− o<br />

k<br />

.<br />

La formula scritta sopra vale nel caso di addestramento off-line. Nel caso di addestramento online<br />

i pesi devono essere aggiornati dopo aver presentato alla rete ogni singolo esempio, con:<br />

∆w<br />

jk<br />

= −ηδ<br />

( i) ( i)<br />

k<br />

x<br />

j<br />

Se θ non è lineare ma è differenziabile possiamo definire la funzione di costo in questo modo:<br />

N m<br />

n<br />

1 ⎡<br />

( i) ( i)<br />

E( W ) = y<br />

k<br />

− ⎛ w<br />

jkx<br />

j<br />

i k ⎝ ⎜ ⎞⎤<br />

∑∑ ⎢ θ ∑ ⎟⎥<br />

2 = 1 = 1 ⎣⎢<br />

j=<br />

1 ⎠⎦⎥<br />

ottenendo:<br />

con:<br />

∆w<br />

jk<br />

= −ηδ ~<br />

( i) ( i)<br />

k<br />

x<br />

j<br />

~<br />

⎛ ⎞ ⎛<br />

( i) ( i) ( i)<br />

δ<br />

k<br />

=<br />

k<br />

−<br />

k<br />

θ δ θ<br />

⎝ j ⎠ ⎝<br />

n<br />

n<br />

( i) ( i) ( i)<br />

( y o ) ' ⎜∑<br />

w<br />

jkx ⎟<br />

j<br />

=<br />

k<br />

' ⎜∑<br />

w<br />

jkx<br />

j<br />

= 1 j=<br />

1<br />

Le funzioni θ e θ' sono note perché sono imposte da noi.<br />

1<br />

Se θ è una sigmoide ( θ( h)<br />

= +<br />

−<br />

):<br />

1 e kh<br />

⎞<br />

⎟<br />

⎠<br />

si può dimostrare che:<br />

∂θ<br />

θ'= = kθ( 1−<br />

θ)<br />

∂h<br />

La sigmoide è in pratica una funzione binaria approssimata con la proprietà di essere<br />

infinitamente differenziabile e di avere comportamento lineare per h ≅ 0 . Invece la seguente<br />

funzione, pur essendo un’approssimazione del gradino, non è differenziabile:<br />

132


Reti neurali<br />

13.3 Reti multistrato<br />

In una rete multistrato ogni neurone di uno strato è collegato a tutti i neuroni dello strato<br />

successivo ma non vi sono collegamenti tra neuroni appartenenti allo stesso strato. Tutti gli<br />

strati tranne il primo (detto strato d’ingresso) e l’ultimo (detto strato d’uscita) sono detti strati<br />

nascosti.<br />

L’uscita di uno strato può essere calcolata conoscendo l’uscita dello strato precedente:<br />

n<br />

( s )<br />

o<br />

ls<br />

= ⎛ w<br />

jl<br />

o<br />

j( s )<br />

⎝ ⎜ ⎞<br />

−1<br />

θ ∑ ⎟<br />

−1<br />

j=<br />

1 ⎠<br />

dove o ls<br />

è l’ l -esima componente dell’uscita dell’ s -esimo strato, o j( s−1 ) è la j-esima<br />

( s−1)<br />

componente dell’uscita dell’ ( s − 1)<br />

-esimo strato ed i w jl<br />

sono i pesi dei collegamenti tra<br />

l’ ( s − 1)<br />

-esimo strato e l’ s -esimo strato.<br />

Avendo più di due strati si riescono ad ottenere superfici non lineari di separazione e quindi si<br />

riescono risolvere più problemi rispetto a quelli risolvibili con reti a due soli strati.<br />

Ad esempio, consideriamo la seguente rete:<br />

dove i numeri in corrispondenza dei neuroni sono i valori della soglia µ per le funzioni<br />

d’attivazione ed i numeri in corrispondenza dei collegamenti sono i valori dei pesi dei<br />

collegamenti stessi. La funzione d’uscita sia:<br />

Questa rete riesce ad imparare lo XOR:<br />

( ) θ h =<br />

⎧1 se x > 0<br />

⎨<br />

⎩0 se x ≤ 0<br />

133


<strong>Modellistica</strong> ed Identificazione<br />

x 1<br />

x 2<br />

y XOR<br />

0 0 0 0<br />

0 1 1 1<br />

1 0 1 1<br />

1 1 0 0<br />

Questa non è la soluzione unica al problema (esistono valori diversi delle soglie e dei pesi con<br />

i quali la rete simula ancora il comportamento dello XOR).<br />

Una rete avente i neuroni disposti in modo opportuno e avente delle funzioni d’attivazione e<br />

d’uscita opportune riesce a risolvere tutti i problemi che riesce a risolvere una macchina di<br />

Turing.<br />

Il tipo di funzioni che si riescono ad approssimare con una rete a più strati dipende dalla<br />

funzione d’uscita, dalla funzione d’attivazione, dal numero di strati nascosti e dal training set.<br />

Ad esempio, se θ è lineare si possono solo approssimare funzioni lineari, indipendentemente<br />

dal numero di strati nascosti.<br />

13.4 Back Propagation<br />

Il problema che si ha con le reti a più di due strati è quello dell’aggiornamento dei pesi,<br />

perché non si conoscono le uscite desiderate degli strati nascosti. Questo problema viene<br />

risolto utilizzando la Back Propagation, che consiste nel riportare indietro (verso gli strati<br />

nascosti) l’errore sullo strato d’uscita.<br />

Consideriamo una rete a tre strati (avente quindi un solo strato nascosto):<br />

Siano ξ l’ingresso della rete, v l’uscita dello strato nascosto, o l’uscita della rete, w ih<br />

i pesi<br />

delle connessioni tra i primi due strati e u hk<br />

i pesi delle connessioni tra gli ultimi due strati.<br />

Nelle espressioni che seguono useremo gli indici j , h e k per individuare i neuroni degli<br />

strati d’ingresso, nascosto e d’uscita rispettivamente. Inoltre, l’insieme di addestramento sia<br />

dato da<br />

( i) ( i)<br />

N<br />

{ x , y } . i=1 L’uscita del neurone h -esimo dello strato nascosto relativa all’ingresso<br />

v<br />

n<br />

( i) ( i)<br />

h<br />

θ ∑ w<br />

jhx<br />

j<br />

j=<br />

1<br />

= ⎛ ⎝ ⎜ ⎞<br />

⎟<br />

⎠<br />

( )<br />

x i<br />

è data da:<br />

mentre l’uscita del neurone k -esimo dello strato d’uscita relativa all’ingresso<br />

( )<br />

x i<br />

è data da:<br />

134


Reti neurali<br />

La funzione di costo da minimizzare sia:<br />

o = ⎛ u v u w x<br />

⎝ ⎜ ⎞ ⎡ ⎛<br />

⎣⎢<br />

⎝<br />

p<br />

p<br />

n<br />

( i) ( i) ( i)<br />

k<br />

θ ∑ hk h<br />

⎟ = θ⎢∑<br />

hkθ⎜∑<br />

jh j<br />

h= 1 ⎠ h=<br />

1 j=<br />

1<br />

1<br />

E = y − o<br />

2<br />

N m<br />

( i) ( )<br />

( i 2<br />

∑∑ k k )<br />

i=<br />

1 k=<br />

1<br />

Le variazioni dei pesi sui collegamenti tra lo strato nascosto e quello d’uscita sono date da:<br />

con:<br />

∆u<br />

hk<br />

E<br />

= −η ∂<br />

∂u<br />

hk<br />

⎞⎤<br />

⎟⎥<br />

⎠⎦⎥<br />

⇓<br />

N<br />

p<br />

∂E<br />

( i ) ( i)<br />

⎡<br />

( i ) ⎤ ( )<br />

= −∑<br />

( y<br />

k<br />

− o<br />

k ) θ'<br />

u<br />

hkv h<br />

v<br />

i<br />

h<br />

∂u<br />

⎢∑<br />

⎥<br />

hk i=<br />

1<br />

⎣ h=<br />

1 ⎦<br />

⇓<br />

N<br />

p<br />

N<br />

( ) ( )<br />

⎡ ⎤<br />

i i<br />

i<br />

∆u<br />

hk<br />

y<br />

k<br />

o<br />

k<br />

u<br />

hk<br />

v<br />

h<br />

v i<br />

i<br />

= η∑<br />

− θ'<br />

⎢∑<br />

⎥ h<br />

= η∑<br />

δ<br />

k<br />

v<br />

i= 1 ⎣ h=<br />

1 ⎦<br />

i=<br />

1<br />

( ) ( ) ( ) ( i)<br />

( )<br />

δ<br />

( i)<br />

( y o ) θ'<br />

⎢∑<br />

u<br />

hk<br />

v<br />

h<br />

( i) ( i) ( i)<br />

k<br />

=<br />

k<br />

−<br />

k<br />

Le variazioni dei pesi sui collegamenti tra lo strato d’ingresso e quello nascosto sono calcolate<br />

riportando indietro l’errore sullo strato d’uscita:<br />

∆w<br />

jh<br />

⎡<br />

⎣<br />

p<br />

h=<br />

1<br />

E<br />

= −η ∂<br />

∂w<br />

⇓<br />

N<br />

( i ) N<br />

p<br />

n<br />

∂E<br />

∂E<br />

∂v<br />

h<br />

( ) ( )<br />

⎡<br />

( )<br />

⎤ ⎡ ⎤<br />

i<br />

( ) ( )<br />

( )<br />

( y o i<br />

) θ u v i<br />

i<br />

= ∑ = − u θ w x x<br />

i ∑ k<br />

−<br />

k<br />

'<br />

i<br />

hk h hk jh j j<br />

∂w<br />

jh i ∂v<br />

∂w<br />

⎢∑ ⎥ ' ⎢∑<br />

⎥<br />

= 1 h jh i=<br />

1<br />

⎣ h= 1 ⎦ ⎣ j=<br />

1 ⎦<br />

⇓<br />

N<br />

p<br />

n<br />

N<br />

n<br />

( ) ( )<br />

⎡ ⎤ ⎡ ⎤<br />

⎡ ⎤<br />

i i<br />

i<br />

i i<br />

i<br />

i<br />

∆w<br />

jh<br />

= η∑<br />

y<br />

k<br />

− o<br />

k<br />

θ' ⎢∑<br />

u<br />

hk<br />

v<br />

h ⎥u hkθ' ⎢∑<br />

w<br />

jhx j ⎥ x<br />

j<br />

= η∑<br />

δ<br />

k<br />

θ'<br />

⎢∑<br />

w<br />

jhx j ⎥x<br />

i= 1 ⎣ h= 1 ⎦ ⎣ j=<br />

1 ⎦<br />

i=<br />

1 ⎣ j=<br />

1 ⎦<br />

( ) ( ) ( ) ( ) ( ) ( i)<br />

( )<br />

jh<br />

⎤<br />

⎥<br />

⎦<br />

h<br />

j<br />

13.5 Miglioramenti della Back Propagation<br />

È possibile introdurre il momentum α , che fa in modo che la nuova direzione di discesa tenga<br />

conto della vecchia. Infatti, se η è grande si può procedere a “zig-zag” e questo può causare<br />

una velocità di convergenza molto bassa:<br />

135


<strong>Modellistica</strong> ed Identificazione<br />

Se l’apprendimento è con momentum, l’aggiornamento dei pesi avviene mediante la seguente<br />

relazione:<br />

E<br />

∆w ( t ) ( )<br />

ij<br />

+ 1 = − η ∂ + α∆w<br />

ij<br />

t<br />

∂w<br />

ij<br />

La seguente figura si riferisce al caso in cui α = 1 2 :<br />

Inoltre, un altro problema che si può avere è quello di convergere verso un minimo locale. Per<br />

evitare questo problema si può addestrare la rete con degli algoritmi che facciano uso di<br />

metodi di minimizzazione globale come gli algoritmi genetici o quelli di simulated annealing.<br />

13.6 Utilizzo delle reti neurali per il controllo di<br />

sistemi<br />

Le reti neurali possono essere usate anche per il controllo e non solo per l’identificazione di<br />

sistemi. Siccome le reti neurali hanno la capacità di apprendere è possibile utilizzarle per il<br />

controllo di sistemi non lineari il cui comportamento non è conosciuto con precisione. In<br />

questo caso non è possibile addestrare la rete con degli esempi, che presuppongono la<br />

136


Reti neurali<br />

conoscenza delle corrispondenze ingresso-uscita del sistema. Può essere usato uno schema del<br />

seguente tipo, nel quale il critico “premia” o “punisce” la rete a seconda che l’uscita del<br />

sistema sia vicina o meno a quella desiderata:<br />

Il critico agisce sull’uscita del sistema e non sull’uscita della rete, come avviene nel tipo<br />

d’addestramento utilizzato per l’identificazione ed illustrato sopra.<br />

137


APPENDICI


A. INVERSIONE DI MATRICI DI GRANDI<br />

DIMENSIONI<br />

⎡<br />

Si abbia una matrice A B ⎤<br />

⎢<br />

⎣C<br />

D<br />

⎥ , con A ∈R p×<br />

p , B ∈R p×<br />

q , C ∈R q×<br />

p , D ∈R q×<br />

q . Affinchè<br />

⎦<br />

⎡X<br />

Y⎤<br />

⎡A<br />

B⎤<br />

⎢<br />

⎣U<br />

V<br />

⎥ , con X ∈R p×<br />

p , Y ∈R p×<br />

q , U ∈R q×<br />

p , V ∈R q×<br />

q , sia l’inversa di ⎢<br />

⎦<br />

⎣C<br />

D<br />

⎥ deve essere:<br />

⎦<br />

⎡A<br />

⎢<br />

⎣C<br />

B⎤<br />

X<br />

D<br />

⎥ ⎡ ⎦⎣ ⎢ U<br />

Y⎤<br />

I<br />

V<br />

⎥ = ⎡<br />

⎦ ⎣ ⎢ 0<br />

0⎤<br />

I<br />

⎥<br />

⎦<br />

⎡X<br />

⎢<br />

⎣U<br />

Y⎤<br />

A<br />

V<br />

⎥ ⎡ ⎦⎣ ⎢ C<br />

B⎤<br />

I<br />

D<br />

⎥ = ⎡<br />

⎦ ⎣ ⎢ 0<br />

0⎤<br />

I<br />

⎥<br />

⎦<br />

da cui si ottiene:<br />

⎧AX + BU = I<br />

⎪AY<br />

+ BV = 0<br />

⎨<br />

⎪CX<br />

+ DU = 0<br />

⎩<br />

⎪CY + DV = I<br />

⎧XA + YC = I<br />

⎪XB<br />

+ YD = 0<br />

⎨<br />

⎪UA<br />

+ VC = 0<br />

⎩<br />

⎪UB + VD = I<br />

Possiamo scrivere le sottomatrici X , Y , U e V in funzione delle sottomatrici A , B , C e D :<br />

−1<br />

U = −VCA<br />

Y = −A −1 BV<br />

X = A 1<br />

− YCA 1<br />

= A 1<br />

+ A 1<br />

BVCA 1<br />

= A 1<br />

− A 1<br />

BU<br />

V = D 1 −1<br />

− D CY<br />

⇓<br />

Y = − A − 1<br />

BD − 1<br />

+ A − 1<br />

BD − 1<br />

CY<br />

Y = − I − A − BD − − − −<br />

C A BD<br />

⇒ ( )<br />

( )<br />

( )<br />

1 1 1 1 1<br />

X = A − YCA = A + I − A BD C A BD CA<br />

−1 −1 −1 −1 −1 −1 −1 −1 −1<br />

V = D + D C⋅ I − A BD C A BD<br />

−1 −1 −1 −1 −1 −1 −1<br />

141


Appendici<br />

( )<br />

U = −D CA − D C⋅ I − A BD C A BD CA<br />

−1 −1 −1 −1 −1 −1 −1 −1 −1<br />

In questo modo è possibile invertire matrici di grandi dimensioni effettuando inversioni di<br />

matrici di dimensioni minori.<br />

142


Metodi di integrazione numerica<br />

B. METODI DI INTEGRAZIONE NUMERICA<br />

In questa appendice vedremo alcuni metodi di integrazione numerica di equazioni<br />

differenziali del tipo:<br />

&x = f( x)<br />

Nei prossimi paragrafi useremo la notazione x x( k t)<br />

k<br />

= ∆ , dove ∆t = h è il passo di<br />

campionamento.<br />

Un caso particolare di equazione differenziale è &x = −λ x , che descrive la dinamica di un<br />

sistema SISO. Se il sistema è stabile allora λ > 0 ( λ è il polo del sistema).<br />

B.1 Metodo di Eulero<br />

Possiamo utilizzare l’approssimazione di Eulero:<br />

dove:<br />

x<br />

k +1<br />

− x<br />

k<br />

&x ≅<br />

∆ t<br />

xk + 1<br />

= xk + hf ( x<br />

j )<br />

⎧k<br />

j = ⎨<br />

⎩k<br />

+ 1<br />

(metodo esplicito)<br />

(metodo implicito)<br />

B.1.1<br />

Metodo esplicito<br />

Nel caso particolare del sistema SISO di sopra si ottiene la seguente equazione alle differenze<br />

semplice:<br />

x x h x ( h )<br />

+ 1<br />

= − λ = 1−<br />

λ x<br />

k k k k<br />

Quest’equazione è stabile quando 1− hλ < 1. Siccome h > 0 e λ > 0 , allora deve essere<br />

hλ < 2 ⇒ h < 2 λ<br />

(passo di campionamento). Quindi, se λ è piccolo il sistema è lento e il<br />

passo di campionamento può essere grande; se λ è grande il sistema è veloce ed il passo di<br />

campionamento deve essere piccolo. Più è piccolo il passo di campionamento più il metodo è<br />

lento.<br />

Il metodo di Eulero esplicito è presente in Simulink con il nome di metodo di Eulero.<br />

143


Appendici<br />

B.1.2<br />

.2 Metodo implicito<br />

Nel caso particolare del sistema SISO di sopra si ottiene:<br />

La condizione di stabilità è:<br />

x = x − hλx<br />

k+ 1 k k+<br />

1<br />

⇓<br />

( + hλ)<br />

x = x<br />

1<br />

k+<br />

1<br />

⇓<br />

1<br />

x<br />

h<br />

x<br />

k+ 1<br />

=<br />

1 + λ<br />

k<br />

k<br />

1<br />

1+<br />

hλ<br />

1<br />

= < 1<br />

1 + hλ<br />

Questa disequazione è soddisfatta sempre perché h > 0 e λ > 0 . Anche se il sistema originario<br />

è instabile (quindi λ < 0) possiamo trovare dei valori di h con i quali il metodo di<br />

integrazione è stabile.<br />

Il metodo di Eulero implicito ci permette di scegliere il passo di campionamento che<br />

preferiamo. Questo, però, vale solo per la stabilità del metodo di integrazione e non per<br />

l’approssimazione che otteniamo: se il passo è grande la stabilità del metodo è garantita ma si<br />

ottiene un errore grande.<br />

Questa caratteristica del metodo implicito ci dovrebbe far preferire quest’ultimo al metodo<br />

esplicito. Nel caso generale, però, otteniamo la seguente equazione:<br />

x = x − f x<br />

( )<br />

k + 1 k k + 1<br />

⇓<br />

( )<br />

x + hf x = x<br />

k+ 1 k+<br />

1 k<br />

cioè con il metodo implicito ad ogni passo dobbiamo risolvere un’equazione non lineare in<br />

x k+1<br />

1<br />

.<br />

B.2 Metodi a predittore-correttore<br />

Con il metodo di Eulero possiamo ottenere il seguente inconveniente:<br />

1 Per calcolare lo zero di un’equazione si può applicare un metodo di minimizzazione.<br />

144


Metodi di integrazione numerica<br />

Se da un punto in poi la derivata di x( t ) cresce sempre, da quel punto otteniamo una funzione<br />

approssimata $x ( t ) cui derivata è sempre minore di quella della funzione vera. Praticamente si<br />

ottiene che la $x ( t ) si allontana sempre di più dalla x( t ) .<br />

I metodi a predittore-correttore guardano il passo in avanti come una predizione e cercano di<br />

effettuare una correzione:<br />

predizione: $x x hf( x )<br />

correzione:<br />

x<br />

k+<br />

1<br />

+<br />

= +<br />

k 1 k k<br />

h f x<br />

= x +<br />

k<br />

[ ( $<br />

k+<br />

1) + f( x<br />

k )]<br />

La predizione può essere esplicita, come nel nostro caso, o implicita, cioè basata sul metodo di<br />

Eulero implicito 2 .<br />

Nella correzione possiamo avere un correttore esplicito ( f( x k ) ) come nel nostro caso oppure<br />

un correttore implicito ( ( )). Il correttore implicito, però, presenta più problemi di<br />

f x k + 1<br />

calcolo di quello esplicito perché ad ogni passo bisogna risolvere un’equazione non lineare in<br />

x k+1<br />

.<br />

Con i metodi a predittore-correttore bisogna effettuare due valutazioni in più rispetto ai<br />

metodi di Eulero.<br />

B.2.1<br />

.1 Metodo di Adams-Bashfort<br />

• predizione esplicita:<br />

2<br />

[ ( ) ( ) ( ) ( )]<br />

x = A x + A x + A x + h B f x + B f x + B f x + B f x<br />

k+ 1 0 k 1 k−1 2 k−2 0 k 1 k−1 2 k−2 3 k−3<br />

(le f vengono conservate in memoria per quattro passi e quindi non vengono calcolate tutte<br />

ad ogni passo)<br />

• correzione esplicita:<br />

[ ( $ ) ( ) ( ) ( )]<br />

x = A x + A x + A x + h B f x + B f x + B f x + B f x<br />

k+ 1 0 k 1 k−1 2 k− 2 0 k+ 1 1 k 2 k−1 3 k−2<br />

2 Si possono effettuare predizioni e correzioni di tipo quadratico o cubico, che si basano sui due o tre passi<br />

precedenti quello attuale.<br />

145


Appendici<br />

Questo metodo è esatto per polinomi del quarto ordine.<br />

Se la funzione è regolare, l’errore che si commette è dell’ordine di O( h 5 )<br />

l’errore era dell’ordine di O( h 2 ) ).<br />

Questo metodo non funziona affatto bene per funzioni irregolari, come i gradini.<br />

(nei metodi di Eulero<br />

B.3 Metodi di Runge-Kutta<br />

I metodi di Runge-Kutta “vedono” come varia la derivata all’interno del passo di integrazione:<br />

( n n )<br />

k<br />

1<br />

= hf t , x<br />

⎛<br />

k = hf⎜<br />

t h<br />

n<br />

+ , x<br />

⎝<br />

2 2 n+<br />

k 1<br />

2<br />

( n h<br />

,<br />

n k )<br />

k hf t x<br />

3<br />

=<br />

+ + 2<br />

1<br />

xk<br />

+<br />

= xk<br />

+ k + k + k<br />

3<br />

⎞<br />

⎟<br />

⎠<br />

( )<br />

1 1 2 3<br />

In questo modo si effettuano più calcoli però, a parità di passo di integrazione, questi metodi<br />

sono più precisi dei precedenti.<br />

Quello visto è il metodo di Runge-Kutta a tre passi (R-K 3). Esistono anche metodi di Runge-<br />

Kutta a quattro o cinque passi (vengono presi uno o due punti in più all’interno del passo).<br />

Anche i metodi di Eulero espliciti possono prevedere il calcolo della derivata in uno o più<br />

punti all’interno del passo di integrazione. I metodi di Eulero espliciti che sfruttano questa<br />

tecnica usano le Forward Differentiation Formulae (FDF: formule di differenziazione in<br />

avanti). I metodi di Eulero impliciti che sfruttano questa tecnica usano le Backward<br />

Differentiation Formulae (BDF: formule di differenziazione a ritroso). Il metodo di Gear è un<br />

metodo implicito di questo tipo.<br />

B.4 Sistemi “stiff”<br />

I sistemi stiff sono molto diffusi e sono caratterizzati dall’avere costanti di tempo molto diverse<br />

tra di loro. Ad esempio, un sistema di questo tipo può essere un motore in continua, con<br />

costante di tempo elettrica molto minore della costante di tempo meccanica.<br />

146


Metodi di integrazione numerica<br />

Si abbia un sistema con il seguente luogo delle radici:<br />

6<br />

4<br />

asse immaginario<br />

2<br />

0<br />

-2<br />

-4<br />

-6<br />

-8 -6 -4 -2 0 2 4 6 8<br />

asse reale<br />

Abbiamo due poli instabili. Possiamo inserire due zeri in −1 ottenendo il seguente luogo delle<br />

radici:<br />

6<br />

4<br />

asse immaginario<br />

2<br />

0<br />

-2<br />

-4<br />

-6<br />

-8 -6 -4 -2 0 2 4 6 8<br />

asse reale<br />

Se si effettua una simulazione il sistema risulta instabile perché c’è una costante di tempo che<br />

va a zero (quella relativa al polo in − 5). Bisogna utilizzare un passo di integrazione in modo<br />

che sia h < 2 λ<br />

: se il valore di λ è molto grande, allora il valore di h deve essere molto<br />

piccolo.<br />

I sistemi stiff spesso degenerano in equazioni differenziali e algebriche accoppiate (sistemi<br />

DAE: Differential Algebraic Equations) che contengono equazioni di vincolo. Infatti, un<br />

sistema stiff può essere scritto nel seguente modo:<br />

&q = Mq + Gλ<br />

ελ & = Fq<br />

con ε → 0 . Al limite per ε → 0 i sistemi stiff diventano sistemi DAE. I sistemi stiff si possono<br />

simulare solo con il metodo di Gear.<br />

147


Appendici<br />

B.5 Metodi a passo variabile<br />

Finora abbiamo visto solo metodi a passo di integrazione fisso.<br />

Per i metodi di integrazione che richiedono tempi di calcolo molto elevati si cerca di<br />

minimizzare il tempo di calcolo senza perdere in precisione mediante il cambiamento di passo:<br />

In realtà tutti i metodi di integrazione hanno al loro interno un “meccanismo” che varia il<br />

passo di integrazione (entro i limiti specificati) effettuando un confronto tra le due derivare<br />

successive della funzione.<br />

Per una rampa con saturazione molto ripida possiamo ottenere la seguente approssimazione:<br />

Non esiste alcuna dimostrazione generale sulla convergenza dei metodi di integrazione a passo<br />

variabile. D’altra parte, se il passo di integrazione viene aumentato molto si potrebbe andare<br />

in una regione di instabilità del metodo.<br />

Tutti i metodi di integrazione numerica hanno anche un controllo sull’errore. In genere si può<br />

specificare una tolleranza per cercare di ridurre l’errore (se la tolleranza è grande il metodo<br />

risulterà molto veloce).<br />

148


Metodi di integrazione numerica<br />

B.6 Tabella riassuntiva<br />

VELOCITA’ PRECISIONE VELOCITA’ PRECISIONE<br />

EULERO * * * * * * * * * * *<br />

R-K 3 * * * * * * * * * * *<br />

R-K 5 * * * * * * * * * *<br />

ADAMS * * * * * * * * *<br />

GEAR * * * * * * * * * * * * *<br />

* SCARSO<br />

* * SUFFICIENTE<br />

* * * BUONO<br />

* * * * OTTIMO<br />

Le prime due colonne della tabella si riferiscono a sistemi “normali” (non stiff), mentre le altre<br />

due colonne si riferiscono a sistemi stiff. La velocità è intesa a parità di passo di<br />

campionamento.<br />

Simulink ha il metodo di Adams/Gear con il quale automaticamente si adotta il metodo di<br />

Adams o quello di Gear a seconda del sistema in questione.<br />

149


Teoria della regolarizzazione<br />

C. TEORIA DELLA REGOLARIZZAZIONE<br />

C.1 Problemi mal posti<br />

I problemi mal posti (ill-posed) sono problemi la cui soluzione può non esistere, non essere<br />

unica o essere instabile.<br />

Ad esempio, un problema mal posto è quello di trovare una funzione che interpoli una serie di<br />

punti, perché di tali funzioni ne esistono infinite 1 . Questo è proprio il problema che viene<br />

affrontato con le reti neurali, per le quali la serie di punti da interpolare è data dal training set<br />

{ x , y }<br />

N<br />

.<br />

i i i=1 Un altro problema mal posto è quello di calcolare la funzione x ∈ X tale che Ax = y , dove<br />

y ∈ Y è una funzione data ed A è un operatore lineare 2 .<br />

Per risolvere i problemi mal posti si può usare la teoria della regolarizzazione, dovuta a<br />

Tikhonov (1960). In base a questa teoria il problema mal posto viene risolto riportandolo ad<br />

un altro problema che è regolare e che quindi può essere risolto. Nell’applicazione di questa<br />

teoria è fondamentale avere delle conoscenze a priori del problema perché vengono introdotti<br />

dei vincoli che si basano sulle nostre conoscenze del problema.<br />

Con la teoria della regolarizzazione il problema di calcolare la funzione x<br />

Ax = y può essere regolarizzato ponendo:<br />

J( x) = Ax − y + λ R( x)<br />

2 2<br />

∈ X tale che<br />

dove R è un operatore funzionale detto regolarizzatore, λ è detto parametro di<br />

regolarizzazione e la norma è effettuata su spazi funzionali. La soluzione può essere calcolata<br />

nel seguente modo:<br />

x = arg minJ( x)<br />

x∈X<br />

Se λ cresce decresce la nostra fiducia nei dati e cresce quella sulle nostre conoscenze a priori<br />

del problema. Quindi, le soluzioni x λ<br />

al problema dipendono da λ . Si può dimostrare che, se<br />

x<br />

* ∈ X è tale che Ax * = y , allora x → λ<br />

x<br />

* per λ → 0 .<br />

1 Non è mal posto il problema di trovare la funzione a norma minima che interpoli una serie di punti, perché<br />

questo problema ha una soluzione unica.<br />

2 Non è mal posto il problema di calcolare la funzione y tale che y = Ax : un problema può essere mal posto o<br />

meno a seconda della “direzione” verso la quale lo si risolve.<br />

151


Appendici<br />

C.2 Applicazione al caso dell’approssimazione<br />

funzionale<br />

La teoria della regolarizzazione può essere applicata anche al problema dell’approssimazione<br />

funzionale.<br />

Sia { x , y }<br />

N<br />

i i i=1<br />

seguente funzione:<br />

l’insieme dei punti su cui effettuare l’interpolazione. Possiamo definire la<br />

N<br />

~ ~ 2 ~<br />

( ) = ∑ i<br />

− ( i ) + λ ( )<br />

J f x f x R f<br />

i=<br />

1<br />

dove ~ f ∈F è la funzione da approssimare, e calcolare:<br />

2<br />

~<br />

f<br />

ottima<br />

( )<br />

= arg min J ~ f<br />

~<br />

f ∈F<br />

Se R è un operatore lineare ed invariante rispetto alle rotazioni e alle traslazioni si può<br />

trovare la soluzione applicando la risoluzione di Eulero-Lagrange nello spazio funzionale.<br />

Otteniamo che la soluzione esiste ed è unica se ha la seguente forma:<br />

( )<br />

N<br />

~ f<br />

ottima<br />

= ∑ c<br />

iφ<br />

x − x<br />

i<br />

+ K<br />

i=<br />

1<br />

dove K R<br />

è una qualsiasi componente dello spazio nullo di R (può essere posto K R<br />

≡ 0 ) e la<br />

funzione scalare φ è detta funzione a base radiale (RBF) o funzione di Green e dipende dalla<br />

distanza tra x ed x i<br />

. La particolare funzione φ dipende dall’operatore R usato. La φ soddisfa<br />

la seguente relazione:<br />

R * Rφ = δφ<br />

dove R * è l’operatore aggiunto di R 3 . La funzione φ soddisfa una relazione che è legata solo<br />

al vincolo e non ai campioni. Per alcuni operatori R la funzione φ è già nota.<br />

+∞ i<br />

Ad esempio, se è R = ∑ ∂<br />

∂x<br />

i=<br />

1<br />

i<br />

R<br />

, implicitamente imponiamo che tra tutte le soluzioni cerchiamo<br />

r<br />

quella più regolare. In questo caso si può dimostrare che deve essere φ( r)<br />

= ⎛ 2<br />

⎞<br />

exp⎜−<br />

2<br />

⎟<br />

⎝ σ ⎠<br />

(funzione gaussiana). Praticamente la funzione approssimata viene ottenuta come<br />

sovrapposizione di funzioni gaussiane.<br />

Utilizzando questo operatore R e le funzioni gaussiane, otteniamo:<br />

N<br />

∑<br />

j=<br />

1<br />

( )<br />

~ f x = y<br />

ottima i i<br />

⇓<br />

( )<br />

c φ x − x = y<br />

j i j<br />

i<br />

3 L’operatore aggiunto è una generalizzazione della matrice aggiunta.<br />

152


Teoria della regolarizzazione<br />

con i<br />

= 1,..., N . Otteniamo:<br />

φ( 0) φ( x1 − x2 ) φ( x1 − x3 ) L φ( x1<br />

− x<br />

N )<br />

( x2 − x1 ) ( 0) ( x2 − x3 ) L ( x2<br />

− x<br />

N )<br />

( x3 − x1 ) ( x3 − x2 ) ( 0) L ( x3<br />

− x<br />

N )<br />

⎡<br />

⎢<br />

⎢φ φ φ φ<br />

⎢<br />

⎢<br />

φ φ φ φ<br />

⎢<br />

O<br />

⎢<br />

⎣⎢<br />

φ φ φ φ<br />

⇓<br />

Φ = cy<br />

( x<br />

N<br />

− x1 ) ( x<br />

N<br />

− x2 ) ( x<br />

N<br />

− x3<br />

) L ( 0)<br />

Se Φ è mal condizionata, c può essere ancora calcolato nel seguente modo:<br />

( Φ Φ λR R)<br />

c = +<br />

T T −1<br />

T<br />

Φ<br />

y<br />

⎤<br />

⎥⎡<br />

c1<br />

⎤ ⎡ y1<br />

⎤<br />

⎥⎢<br />

c<br />

⎥ ⎢<br />

⎥ 2<br />

y<br />

⎥<br />

⎢ ⎥<br />

2<br />

= ⎢ ⎥<br />

⎥⎢<br />

M ⎥ ⎢ M ⎥<br />

⎥⎢<br />

⎥ ⎢ ⎥<br />

⎥⎣c<br />

N ⎦ ⎣y<br />

N ⎦<br />

⎦⎥<br />

Se, invece, Φ è ben condizionata il termine λR T R non è necessario ( R è già implicito in Φ ).<br />

Se sappiamo che la funzione da approssimare soddisfa le condizioni di regolarità,<br />

l’approssimazione migliore è quella ottenuta in questo modo, cioè come somma di gaussiane.<br />

C.3 Altre funzioni a base radiale<br />

Se, invece, R = ∂ ∂ x<br />

, allora φ è l’esponenziale: φ = ⎛ r ⎞<br />

exp<br />

⎝ ⎜−<br />

⎟ . Una funzione a base radiale di<br />

σ⎠<br />

questo tipo può essere usata nel caso in cui la funzione da approssimare non soddisfi le<br />

condizioni di regolarità.<br />

Esistono delle funzioni a base radiale che sono molto efficaci per risolvere dei problemi<br />

particolari ma che sono associate a qualche operatore R che non è conosciuto. Ad esempio,<br />

una funzione di questo tipo è la funzione multiquadrica:<br />

φ( r)<br />

= r +<br />

σ<br />

153

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!