Implementazione degli algoritmi.

Documenti analoghi
SIMULAZIONI E RISULTATI

Corso di laurea in Matematica Laboratorio di Programmazione e Calcolo Prof. A. Murli. Esercizi di riepilogo - LABORATORIO

Complementi di Matematica e Calcolo Numerico A.A

INTERPOLAZIONI CON SPLINE

Corso di laurea in Informatica Calcolo Numerico Prof.ssa L. D Amore 12 Dicembre 2008 Esercizi di riepilogo tipo prova d esame

Interpolazione e approssimazione di funzioni

Quale delle seguenti rappresentazioni del numero reale è in virgola mobile normalizzata?

MatLab - Testo pagina 1 di 5 101

Interpolazione e approssimazione di dati

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

SISTEMI HAMMERSTEIN-WIENER

Interpolazione e approssimazione di dati

ossia può anche essere localizzato univocamente sul piano complesso con la sua forma polare.

1. Calcolo dell indice di condizionamento di una matrice

Calcolo Numerico (CdS in Matematica) A.A. 2012/13

12 Function Handles e Ricorsione in MATLAB

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

Calcolo Numerico - A.A Laboratorio 6

Corso di Matematica per la Chimica

Laboratorio 3-30 settembre 2005

Esercitazione di Calcolo Numerico 1 27 Maggio Calcolare la fattorizzazione P A = LU della matrice A =

Calcolo Numerico (A.A ) Lab n. 12 Approssimazione

kπ cos, k = 0, 1, 2,, n (NB: sono n +1) n

Prof. Carlo Rossi DEIS - Università di Bologna Tel:

Approssimazione di dati

Approssimazione di dati

Calcolo differenziale 2: Massimi e minimi. Studio di una funzione. (M.S.Bernabei & H. Thaler)

Calcolo Numerico - Prova Matlab 19 luglio 2013

Esercizi di autovalutazione - Matlab Metodi Numerici con Elementi di Programmazione A.A

Corso di Calcolo Scientifico

Calcolo Numerico. Corso di Laurea in Ingegneria Elettronica Appello del 17 gennaio A(x) =

Esercitazione 7: Aggiornamento minimi quadrati.

b vettore(termine noto) y* proiezione ortogonale di b

Metodi iterativi per il calcolo approssimato di autovalori

Disegnare nell intervallo [0, 1] con precisione 0.01 il grafico delle seguenti quattro funzioni

Approssimazione di dati

Calcolo Numerico. Esercitazioni (A.A ) Lezione n. 16 Approssimazione

Soluzione di Equazioni non lineari

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

Analisi Numerica: Introduzione

Equazioni e sistemi non lineari

Approssimazione di dati

Una Libreria di Algebra Lineare per il Calcolo Scientifico

ISTRUZIONI PER LA CONSEGNA DEI FILE MATLAB

Capitolo 2. Equazioni non lineari. 2.1 Metodo di bisezione. 2.2 Ordine dei metodi

Analisi Numerica. Debora Botturi ALTAIR. Debora Botturi. Laboratorio di Sistemi e Segnali

Derivazione numerica. Introduzione al calcolo numerico. Derivazione numerica (II) Derivazione numerica (III)

Fondamenti di Informatica A.A. 2016/17

Utilizzo di Matlab per l analisi di sistemi dinamici lineari

Ingegneria Informatica. Prof. Claudio Melchiorri DEIS-Università di Bologna Tel

METODI NUMERICI PER IL CONTROLLO

Risoluzione di problemi ingegneristici con Excel

Esercitazione di laboratorio per il corso di SISTEMI DI TELECOMUNICAZIONI 1 Ritardo Frazionario

Per la descrizione dei comandi MATLAB verranno usate le seguenti convenzioni.

Complementi di Matematica e Calcolo Numerico A.A

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Interpolazione composita di Lagrange

Equazioni e sistemi non lineari

Esame di Controlli Automatici 4 Febbraio 2016

2. Costruire un M function file di Matlab che calcola il valore del

Soluzione nel dominio del tempo

Raccolta di compiti degli appelli precedenti

Problemi, istanze, soluzioni

Anno 5 Regole di derivazione

Universita degli Studi di Ancona - Facolta di Ingegneria Laurea in Ing. Elettronica (VO) Ing. Informatica e Automatica - Ing. delle Telecomunicazioni

Esercizio 1. Esercizio 2

3. Matrici e algebra lineare in MATLAB

05. Determinare una base ortonormale per ognuno dei seguenti spazi vettoriali.

Laboratorio di Calcolo Numerico Laboratorio 4: Functions. Soluzione di Equazioni non lineari

Corso di Calcolo Numerico

Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia

Sistemi lineari. Lorenzo Pareschi. Dipartimento di Matematica & Facoltá di Architettura Universitá di Ferrara

Trasformata di Laplace Antitrasformata Dominio Tempo

Analisi Numerica. Debora Botturi ALTAIR. Debora Botturi. Laboratorio di Sistemi e Segnali

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

Esame di Calcolo Numerico per Informatica A.A. 2010/11 Proff. S. De Marchi e M. R. Russo 20 giugno 2011

ESERCITAZIONE MATLAB

A =, c d. d = ad cb. c d A =

Interpolazione polinomiale.

Introduzione a MATLAB

CONTROLLI AUTOMATICI Ingegneria della Gestione Industriale e della Integrazione di Impresa

Lezione 6 e 7, /11/2014

Esame di FONDAMENTI DI AUTOMATICA (9 CFU) SOLUZIONE

Si assuma di avere portato a termine le seguenti rilevazioni di produzione e di alimento somministrato

Correzione dell Esercitazione 3

Metodi di Ottimizzazione

Laboratorio di Matematica Computazionale A.A Lab. 9

SOLUZIONE della Prova TIPO E per:

Stabilità e retroazione

Sviluppando ancora per colonna sulla prima colonna della prima matrice e sulla seconda della seconda matrice si ottiene:

Approssimazione di dati e funzioni

Complementi di Matematica e Calcolo Numerico A.A Polinomi e vettori

Corso di Controllo DigitaleAntitrasformate Zeta e calcolo della risposta p.1/32

Funzione di trasferimento

Corso di Geometria BIAR, BSIR Esercizi 3: soluzioni

Analisi Numerica I Approssimazione polinomiale

Transcript:

Implementazione degli algoritmi. 4.1. Introduzione. In questo capitolo sarà discussa l implementazione software per l ambiente MATLAB 6.1 che è stata fatta degli algoritmi di identificazione presentati nel Capitolo 3. Saranno presentate, sia per l algoritmo di base che per quello che usa la tecnica delle funzioni modulanti, le funzioni utilizzate per l implementazione e saranno spiegate in dettaglio le procedure da seguire per identificare i sistemi. - 61 -

4.2. Algoritmo di base. 4.2.1. Presentazione delle funzioni. In questo paragrafo saranno descritte le funzioni che sono state usate per implementare l algoritmo di identificazione di base. Per ciascuna sarà spiegato il significato dei parametri di ingresso e di uscita ed il suo funzionamento. Per il codice completo delle funzioni si veda l Appendice A. step1: 1. y: vettore contenente le uscite del sistema campionate con periodo h/2 2. m: grado dell approssimazione polinomiale della f 1 (y) 3. n: ordine della G(z) 1. Dphi: è la matrice φ 1 di (3.23) 2. Dy: è il vettore y di (3.23) 3. THETA: è il vettore soluzione del sistema (3.23). La funzione step1 implementa il primo passo dell algoritmo di identificazione, cioè l identificazione della non linearità di uscita e del denominatore della funzione di trasferimento lineare. La funzione costruisce la matrice φ 1 ed il vettore y (che vengono anche restituite) come spiegato nel paragrafo 3.3, usando anche la funzione buildphi, e risolve il sistema lineare (3.23). Il sistema viene risolto applicando a φ 1 e y l operatore \ che, nel caso di sistema sovradeterminato, lo risolve nel senso dei minimi quadrati. buildphi: - 62 -

1. y: vettore contenente le misure dell uscita, con periodo di campionamento h, per n+1 periodi di campionamento consecutivi e in ordine cronologico inverso; se il primo elemento è y[kh], allora l ultimo elemento dovrà essere y[kh-nh]. 2. m: grado dell approssimazione polinomiale della f 1 (y) 3. n: ordine della G(z) 1. phi: se il primo elemento di y è y[kh], phi è il vettore riga φ 1 [kh]. La funziona buildphi costruisce il vettore φ 1 [kh], come descritto in (3.15), a partire dalle misure dell uscita y su un opportuno intervallo temporale. find_r_alpha: 1. theta: vettore soluzione del sistema (3.23) 2. m: grado dell approssimazione polinomiale della f 1 (y) 3. n: ordine della G(z) 1. r: vettore contenente una stima dei coefficienti polinomiali dell inversa della non linearità di uscita ordinati da quelli di grado 1 a quello di grado massimo (il coefficiente di grado 0 è sempre nullo) 2. alpha: vettore contenente una stima dei coefficienti del denominatore ~ della G ( z ) in ordine crescente. A partire dal vettore θ 1, soluzione del sistema (3.23), ricava i coefficienti ~ polinomiali della non linearità di uscita ed il denominatore della G ( z ) utilizzando le relazioni espresse in (3.31). step2: - 63 -

1. y2: vettore contenente le uscite del sistema campionate con periodo h/2 2. n: ordine della G(z) 3. p: vettore contenente i coefficienti polinomiali dell inversa della non linearità di uscita (in un formato compatibile con la funzione polyval di MATLAB) 1. THETA2: vettore soluzione del sistema lineare derivato dalla (3.42). La funzione step2 implementa il secondo passo dell algoritmo di identificazione, cioè l identificazione del numeratore della parte lineare del sistema Hammerstein-Wiener. Vengono costruite tante equazioni, come descritto in (3.42), quante ne permette la durata della misurazione dell uscita (usando la funzione buildphi2 per calcolare i vari vettori φ 2 [k]) e viene risolto, nel senso dei minimi quadrati, il sistema così ottenuto. buildphi2: 1. xcap: vettore contenente le stime del segnale x campionate con periodo h/2 2. k: numero della riga della matrice φ 2 che si vuole generare 3. n: ordine della G(z) 1. phi: è il vettore riga φ 2 [k], k-esima riga della matrice φ 2 del sistema lineare che viene costruito nella funzione step2 2. xc: vettore contenente una stima di x[kt+t/2] La funzione buildphi2 genera un equazione lineare come in (3.42), calcolando il vettore riga φ 2 [k] ed il termine noto associato x[kt+t/2], a partire da una stima del segnale x. - 64 -

step3: 1. y2: vettore contenente le uscite del sistema campionate con periodo h/2 2. w: vettore contenente gli ingressi del sistema campionate con periodo h/2 3. n: ordine della G(z) 4. p: vettore contenente i coefficienti polinomiali dell inversa della non linearità di uscita (in un formato compatibile con la funzione polyval di MATLAB) 5. alpha: vettore contenente i coefficienti del denominatore della G(z) ordinati per potenze crescenti di z -1 (e con alpha(1) = 1) 6. beta: vettore contenente i coefficienti del numeratore della G(z) ordinati per potenze crescenti di z -1 (con beta(1) = 0 e beta(2) = 1) 7. betasegnato: vettore contenente i coefficienti del numeratore della G (z) ordinati per potenze crescenti di z -1 1. w2: vettore contenente i valori del segnale di ingresso w campionati con periodo T 2. ucap: vettore contenente stime delle u[kt]; ogni coppia (w2(i), ucap(i)) è formata dal valore di w e di u nel medesimo istante e costituisce una stima della g(w) La funzione step3 implementa il terzo passo dell algoritmo di identificazione, cioè l identificazione della non linearità all ingresso del sistema. La funzione verifica se almeno una delle due tra G (z) e G (z) è a fase minima, ed in questo caso stima le u[kt] in accordo con la (3.46) o con la (3.47). Se nessuna delle due è a fase minima allora la funzione termina riferendo che si è verificato un errore. inverti: - 65 -

1. v: un generico vettore 1. res: vettore risultato della funzione Restituisce un vettore che ha le stesse componenti del vettore v, ma in ordine inverso. 4.2.2. Procedura di identificazione. Per identificare un sistema Hammerstein-Wiener con l algoritmo proposto occorre usare le funzioni descritte al paragrafo 4.2.1, ed in particolare le funzioni step1, step2 e step3. E stata sviluppata, mediante uno script MATLAB (il cui codice è riportato in Appendice A), una procedura che, quando avviata, identifica automaticamente il sistema se nello workspace corrente sono presenti determinate variabili. In Figura 4.1 sono schematizzate le azioni che vengono eseguite dalla procedura, mettendo in particolare evidenza il flusso dei dati nel corso della procedura stessa. - 66 -

Figura 4.1. Procedura di identificazione - 67 -

Nel momento in cui la procedura viene attivata nello workspace corrente di MATLAB devono essere presenti le seguenti variabili: 1. y2: vettore contenente le uscite del sistema campionate con periodo h/2. Questo periodo di campionamento è stato scelto per fare in modo che in una unica misurazione dell uscita comparissero i valori che assume l uscita stessa sia negli istanti kh, sia negli istanti kt+t/2. 2. w: vettore contenente gli ingressi del sistema campionate con periodo h/2. 3. m: grado dell approssimazione polinomiale della f 1 (y) 4. n: ordine della G(z) 5. q: grado della f(x) 6. xx, yy (facoltative): vettori contenenti coppie di punti {x, y} (gli x in xx, gli y in yy) che caratterizzano la non linearità di uscita del sistema; queste variabili devono essere presenti solo se la n.l. di uscita è nota e si vuole che lo script faccia un confronto grafico con quella stimata. 7. T (facoltativa): periodo di campionamento per l ingresso, consente alla procedura di creare nello workspace una variabile contenente la f.d.t. T.D. stimata nel corso dell identificazione. Il primo passo che deve essere fatto dalla procedura è generare e risolvere il sistema (3.23), chiamando la funzione step1. Una volta risolto il sistema, ottenendo il vettore θ 1, occorre ricavare i coefficienti polinomiali della f 1 (y) e del denominatore della ~ f.d.t. G ( z ), relativa al periodo di campionamento h. A questo scopo viene chiamata la funzione find_r_alpha, che calcola i suddetti coefficienti sfruttando tutte le informazioni contenute nel vettore θ 1. A questo punto la procedura crea un vettore contenente i coefficienti della f 1 (y) nel formato standard di MATLAB e stima i coefficienti della f(x) a partire da quelli della f 1 (y). Per fare questo si individua l intervallo massimo all interno del quale varia la y con il segnale di ingresso usato, si suddivide tale intervallo in un numero sufficientemente elevato di sottointervalli e, per ciascun punto y i che determina i sottointervalli, si calcola x i = f 1 (y i ); si ricava - 68 -

poi il polinomio di grado q che meglio approssima le coppie {x i, y i } nel senso dei minimi quadrati, costruendo la matrice di Vandermonde relativa ai punti x i (senza la colonna per il grado 0, avendo ipotizzato che f(x) passa per l origine) e usando come vettore dei termini noti un vettore colonna contenente i vari y i. Se nello workspace sono presenti le variabili xx e yy, viene poi effettuato un confronto grafico tra la non linearità di uscita stimata e quella reale. La seconda fase della procedura di identificazione consiste nel ricavare i parametri della parte lineare. Il primo passo è chiamare la funzione step2, che ricava il vettore θ 2 come descritto nel paragrafo 3.4. Da questo si ricavano immediatamente i coefficienti dei numeratori delle funzioni di trasferimento G (z) e G (z), che vengono portati in una forma compatibile con la funzione filt di MATLAB. Poi, a ~ partire dai coefficienti del denominatore della G ( z ), si ricavano i poli della G(z) come mostrato in (3.33) e da questi i coefficienti del denominatore della G(z), anch essi riportati in un vettore in una forma compatibile con la funzione filt di MATLAB. Infine, se nello workspace è disponibile l ampiezza del periodo di campionamento T, la procedura vi crea una nuova variabile contenente la G(z), in forma di filtro digitale. La terza ed ultima fase della procedura di identificazione consiste nell identificazione della non linearità di ingresso. Si utilizza la funzione step3 per ricavare delle coppie {w, u} che costituiscano una stima della g(w); successivamente si suddivide l intervallo, all interno del quale si trovano le w, in un certo numero di sottointervalli e per ciascuno si calcola la u media tra le varie u associate a w dentro il sottointervallo stesso, in modo da ridurre l effetto di rumore ed approssimazioni. Infine si mostrano graficamente i risultati di queste ultime operazioni. Alla fine della procedura, nello workspace saranno presenti le seguenti variabili, che contengono i risultati ottenuti: 1. dphi, dy, theta: matrice, colonna dei termini noti e soluzione del sistema (3.23) - 69 -

2. p: coefficienti polinomiali stimati della f 1 (y), ordinati da quello di grado massimo a quello di grado zero 3. est: coefficienti polinomiali stimati della f(x), ordinati da quello di grado massimo a quello di grado zero 4. theta2: soluzione del sistema la cui struttura è descritta al paragrafo 3.4 5. betasegnato: coefficienti del numeratore della G (z), ordinati per potenze crescenti di z -1 6. beta: coefficienti del numeratore della G(z), ordinati per potenze crescenti di z -1 7. alpha: coefficienti del denominatore di G(z) e G (z), ordinati per potenze crescenti di z -1 8. Gz (non sempre): se nello workspace era presente una variabile denominata T e contenente il periodo di campionamento per l ingresso, contiene la f.d.t. G(z) stimata in formato filt 9. wu: matrice con due righe. Ciascuna colonna contiene una coppia {w, u} dove u è all incirca uguale a g(w). Le coppie sono ordinate per valori crescenti di w. 10. wu_media: come wu, ma contiene solo 50 coppie di punti. Ciascuna coppia è ottenuta calcolando la u media all interno di un sottointervallo pari a un cinquantesimo dell intervallo [wu(1,1), wu(size(wu,1),1)]. - 70 -

4.3. Uso della tecnica delle funzioni modulanti. In questo paragrafo sarà discussa l implementazione dell algoritmo di identificazione che utilizza la tecnica delle funzioni modulanti per stimare i parametri della parte Hammerstein del sistema Hammerstein-Wiener, descritto al paragrafo 3.8. La procedura di identificazione viene implementata in un unica funzione principale, hw_fun_mod, il cui codice è riportato in Appendice A. Eccone una descrizione schematica: hw_fun_mod: 1. np: numero di poli della funzione di trasferimento T.C. G(s) 2. nz: numero di zeri della funzione di trasferimento T.C. G(s) 3. go: grado della non linearità di uscita 4. gi: grado della non linearità di ingresso 5. m: grado dell approssimazione polinomiale della f 1 (y) 6. y: vettore contenente le uscite del sistema campionate con periodo h/2 7. t: vettore che raccoglie gli istanti di campionamento dei segnali di ingresso e di uscita del sistema che saranno usati per l identificazione della parte Hammerstein con la tecnica delle funzioni modulanti 8. w: vettore contenente il segnale di ingresso del sistema Hammerstein- Wiener (campionato negli istanti riportati in t) usato per l identificazione della parte Hammerstein con la tecnica delle funzioni modulanti 9. y_fm: vettore contenente il segnale di uscita del sistema Hammerstein- Wiener (campionato negli istanti riportati in t) usato per l identificazione della parte Hammerstein con la tecnica delle funzioni modulanti 10. T: finestra di integrazione usata per l identificazione della parte Hammerstein con la tecnica delle funzioni modulanti - 71 -

1. p: coefficienti polinomiali dell'inversa della non linearità di uscita identificata 2. est: coefficienti polinomiali della non linearità di uscita identificata 3. num: coefficienti del numeratore della G(s) identificati 4. den: coefficienti del denominatore della G(s) identificati 5. nlc: coefficienti polinomiali della non linearità di ingresso identificata La funzione hw_fun_mod esegue la procedura necessaria per identificare un sistema Hammerstein-Wiener con l algoritmo descritto al paragrafo 3.8. Per prima cosa viene chiamata la funzione step1 per identificare la non linearità di uscita, esattamente come già spiegato nel paragrafo 4.2.2. A questo punto si ricava la stima del segnale x corrispondente al segnale y_fm utilizzando la stima di f 1 (y) appena calcolata; a questo punto si identifica la parte Hammerstein usando questa approssimazione di x ed il relativo segnale di ingresso w chiamando la funzione fun_mod_ham descritta al paragrafo 2.7. Per maggiori informazioni su come usare questa funzione e sull identificazione con il metodo delle funzioni modulanti si faccia riferimento al paragrafo 3.8 ed al Capitolo 2. - 72 -