Simulazioni
al
Calcolatore
by
Federico Milan
Prefazione
Nella realtà di tutti i giorni siamo sempre più sommersi da minuscoli e a volte giganteschi computer che predicono e modellano la nostra realtà; si pensi ai centri per le previsioni meteorologiche, ai programmi di simulazione per circuiti integrati o perché no!, ai sistemi per elaborare previsioni per il lotto …
Questo documento non spazièrà così ampiamente il campo delle simulazioni, nemmeno tratterà in modo rigoroso l’argomento, non è un manuale e non può e non vuole sostituire scritti e trattati sicuramente più illustri e più adeguati ad una materia che merita il “massimo del rispetto.
Questo documento vuole piuttosto essere un punto di partenza, mostrando le potenzialità del calcolatore e come sfruttarle con un pizzico di matematica e di curiosità.
Il seguente documento è di proprietà esclusiva dell’autore il quale si riserva tutti i diritti.
L’utilizzo del seguente materiale o parte di esso è consentito se e solo se viene citata la fonte, l’autore, nonché l’autore stesso venga messo al corrente dell’uso che se ne intende fare (eventualmente con diritto di veto J ).
© Copyright – Federico Milan, 2006
Qualunque FeedBack è sempre apprezzato.
L’autore non è responsabile di false citazioni, errori, danni a cose e/o persone derivanti dalla lettura del seguente materiale.
Gli indirizzi di riferimento per contattare l’autore sono:
federico@plcforum.it
Federico Milan - PLC Forum ®
Cittadella, PD
Italy
Indice
Capitolo I
1.1 Scalari
1.2 Vettori
1.2.1 Operazioni elementari tra vettori
1.2.2 Vettori al calcolatore
1.2.3 Vettori e numeri complessi al calcolatore
1.3 Trasformata di Fourier
1.3.1 La trasformata di Fourier e il calcolatore
Capitolo II
2.1 Spazio, tempo, velocità, accelerazione
2.2 Moti composti
2.3 Cenni su sistemi complessi
Capitolo III
3.1 Presentazione del sistema elettronico
3.2 Considerazione sulla simulazione
3.3 Simulazione al calcolatore del circuito
Capitolo
I
Strumenti algoritmico/matematico di base
Nello stile del documento, non vi è alcuna pretesa di perfezione e rigorosità nel presentare alcuni dei più importanti e funzionali strumenti che la matematica e l’informatica ci mettono a disposizione; anzi, la trattazione sarà la più basilare e semplice possibile, a maggior ragione non vi saranno noiose dimostrazioni, le quali potranno essere reperite in un qualunque testo dedicato.
Questo capitolo vuole essere solo una piccola premessa alla semplice simulazione del Capitolo III.
· 1.1 Scalari
Quando si parla di scalari ci si riferisce a ”semplici” numeri; esempi di scalari sono:
o La temperatura globale di una stanza
o La lunghezza di un oggetto
o I numeri Naturali
o I numeri Reali
In poche parole possiamo pensare uno scalare come un elemento che determina una singola grandezza, ad esempio:
o Il peso di un oggetto
o La distanza tra terra e luna
o Il numero di pesci pescato
Dal punto di vista di un calcolatore, lo scalare, è un valore: il risultato di una semplice operazione, il numero contenuto in una variabile o il numero di iterazioni di un ciclo. Lo scalare è l’elemento più semplice e maneggevole che si possa utilizzare, non per questo meno importante.
· 1.2 Vettori
I vettori sono strumenti matematici molto
importanti, hanno notevoli proprietà, tra le quali la capacità di descrive in
modo conciso aspetti multipli di una grandezza, a tal proposito si pensi ad
esempio all’individuazione di un punto nello spazio tridimensionale, come è
logico aspettarsi servono 3 lunghezze per definire la posizione. Tramite i
vettori, con una unica scrittura matematica del tiposi
riesce a rappresentare in modo conciso e univoco un punto nello spazio
tridimensionale (figura 1). La rappresentatività di questo strumento non
finisce ovviamente qui, ma va ben oltre gli scopi di questo capitolo. I vettori
non sono strumenti monodimensionali, ma possono essere definiti a dimensioni
generiche (Vettori bi, tri, quadri-dimensionali … spesso queste strutture sono
chiamate anche con il termine di matrice).
Figura 1 – Rappresentazione di un punto nello spazio tridimensionale |
I vettori oltre che simbolicamente, possono essere rappresentati anche tramite forme tabellari (figura 2). Sotto certe ipotesi è possibile definire delle operazioni di somma e prodotto tra vettori e vettori e tra vettori e scalari
Dal punto di vista del calcolatore, un vettore non è altro che una serie contigua di celle di memoria (simile alla forma tabellare), dove possono essere registrati dati omogenei tra di loro.
Figura 2 – Vettori rappresentati come tabelle |
La capacità più grande di un calcolatore è di saper trattare e usare dati in forma di vettore in modo nativo e con grande velocità. Tramite i vettori si possono memorizzare serie numeriche, indicizzare dati quindi utilizzarli attraverso appositi algoritmi. Per il calcolatore, quindi, un vettore è un ottimo posto dove conservare i dati.
Vista l’importanza della struttura, conviene prendere un po’ di confidenza con i vettori e alcune notazioni di utilizzo in pseudo linguaggio (il linguaggio utilizzato è molto simile a programmi di matematica di alto livello quali ©MatLab, © SciLab, …)[1].
Figura 3 – grafico di una funzione e relativo pseudo codice |
· 1.2.1 Operazioni elementari tra vettori
Come accennato precedentemente, tra vettori si possono definire alcune operazioni. Le operazioni di maggiore interesse sono ovviamente la somma e il prodotto, purtroppo, a diversità degli scalari, la somma e il prodotto di vettori tra vettori o scalari è possibile solo sotto certe ipotesi relativamente. Per semplicità vedremo solo casi semplici e di interesse pratico:
Le stesse regole si applicano per eventuali vettori colonna. Stesso discorso si applicano per vettori a dimensioni multiple, vedi le matrici:
Stesse regole si applicano per il prodotto tra scalare e matrice.
· 1.2.2 Vettori al calcolatore
Oltre alle operazioni definite matematicamente, al calcolatore è possibile definire altre operazioni, spesso le più importanti sono la moltiplicazione elemento ad elemento tra due vettori lineari:
· 1.2.3 Vettori e numeri complessi al calcolatore
Anche i numeri complessi possono essere visti come vettori. Su di essi sono definite tutte le operazioni dei vettori e inoltre “possono essere trattati” come scalari (anche se questa affermazione non è proprio corretta):
Al calcolatore quindi è possibile implementare queste strutture dati in modo molto semplice e “nativo”. La potenzialità di questi strumenti consente di ottenere trattazioni semplici e concise di aspetti della realtà altrimenti difficilmente rappresentabili.
La trattazione di questo argomento non è esaustiva ma si è voluto soffermarci solamente sulle possibili applicazioni al calcolatore di questi strumenti matematici.
· 1.3 Trasformata di Fourier
In questo paragrafo si fa un salto ulteriore sugli strumenti matematici che abbiamo a disposizione, per la tipologia del documento viene volutamente saltato argomenti molto importanti e molto interessanti quali l’analisi complessa e l’utilizzo e risoluzione delle equazioni differenziali, strumenti importanti, ma per i nostri scopi non così semplici e veloci da utilizzare. Le trasformate, in questo caso la “Trasformata di Fourier” è uno strumento molto potente ma allo stesso modo semplice da utilizzare con il PC, purtroppo è necessario una piccola trattazione teorica per sfruttarla.
Tralasciando i dettagli, e sempre nello spirito della semplicità, Fourier si “accorse” che alcune classi particolari di funzioni, potevano essere rappresentate come:
La scoperta fatta da Fourier è di estrema importanza, in quanto, il significato della sua serie sta a mostrare come alcune classi di funzioni possono essere scomposte in serie di funzioni sinusoidali. Questo significa che un segnale complesso, purchè rispetti alcune ipotesi, può essere studiato analizzando semplicemente le sue singole componenti della serie di Fourier (un caso di divide et impera), quindi semplificandone l’analisi. Analizzando la serie di Fourier, si nota come possa essere (limitando la serie ad un numero N) completamente contenuta su di un vettore di dimensione N. Questo significa che, conosciuti i coefficienti alfa e beta, un segnale può essere memorizzato e analizzato al calcolatore semplicemente analizzando gli elementi del vettore stesso.
Pur essendo la serie di Fourier molto interessante, per i casi pratici conviene utilizzare la trasformata di Fourier, che altro non è che una generalizzazione della serie stessa. Osservando la serie infatti possiamo fare le seguenti considerazioni:
Che consentono di compattare ulteriormente la scrittura. Per compattare ulteriormente e arrivare alla definizione di trasformata si procede come di seguito:
La trasformata, consente quindi di interpretare un segnale secondo le sue componenti in frequenza. L’interesse pratico sta infatti nella semplificazione nello studio dei sistemi complessi e una semplificazione nell’implementare questi strumenti sul calcolatore.
La trasformata di Fourier, consente inoltre di
rappresentare alcuni segnali particolari solamente con un minimo contenuto di
informazioni. Si pensi per esempio alla rappresentazione di una sinusoide di
frequenza e ampiezza nota. La sua rappresentazione quindi è possibile solamente
memorizzando l’ampiezza e la pulsazione (o la frequenza) della sinusoide in una
struttura come la seguente .
· 1.3.1 La trasformata di Fourier e il calcolatore
Come stile del documento non si entrerà nel dettaglio, ma si cercherà di dare una trattazione molto pratica e introduttiva all’utilizzo della trasformata di Fourier attraverso il calcolatore.
Come visto prima la trasformata è un potente strumento matematico per l’analisi di alcune classi di segnali. Al calcolatore è possibile implementarla con alcune accortezze; è necessario, però, saperne interpretare il significato. La trasformata di Fourier è una trasformata _”continua”, mentre il calcolatore, per sua natura, tratta solo grandezze discrete. Per questo motivo sono date una serie di classi di trasformate, necessarie per lavorare con il calcolatore. Tra le più importanti troviamo le DFT (Discrete Fourier Transform) da cui derivano le FFT (Fast Fourier Tranform) le quali di regola lavorano solo su serie di campioni con dimensione multipla di 2.
Di seguito (figura 4) un esempio semplice di come utilizzare la trasformata di Fourier discreta al calcolatore:
Figura 4 – Dimostrazione della FFT. |
Capitolo
II
Semplici simulazioni
In questo capitolo si mostreranno alcune semplici simulazioni e alcuni metodi di analisi, utili per l’interpretazione dei dati quando si utilizza il calcolatore. Bisogna, infatti, ricordare che il calcolatore è un potente mezzo di elaborazione di serie numeriche, ma non è un conoscitore della realtà. Questo significa che un dato errato non può essere scoperto, e solo la conoscenza del processo può verificare l’attendibilità dei dati. Del resto, parlando di simulazioni, si deve parlare di attendibilità dei dati più che correttezza, in quanto il valore assoluto non ha significato, ma quello che si cerca in una simulazione è l’andamento più che semplici numeri.
· 2.1 Spazio, tempo, velocità, accelerazione
Nella fisica esistono molti aspetti da simulare, in particolare la dinamica, presenta casi di studio di interesse pratico, visibili direttamente nella realtà, e cosa molto interessante molto intuitivi.
La simulazione più semplice che si può realizzare è graficare l’andamento di un punto materiale secondo le leggi della dinamica classica. A tale proposito, per entrare nel vivo della simulazione, si vuole provare a simulare l’andamento di un punto (privo di massa) soggetto ad una accelerazione. Lo scopo sarà quindi di graficare l’andamento della velocità e dello spazio percorso dal punto in funzione del tempo (che riteniamo la nostra variabile “indipendente”).
Prima di simulare si deve porre delle ipotesi e dei “punti fissi”:
1. ipotizzeremo che il nostro punto sia
soggetto ad una accelerazione iniziale di ;
2. ipotizziamo una velocità iniziale nulla ;
3. ipotizziamo di partire dal punto .
Per poter simulare il sistema descritto occorre analizzare prima matematicamente come si comporta il sistema:
Che come si vede si ha a disposizione tutto quello che serve per graficare su carta, senza l’ausilio di altri strumenti l’andamento delle curve cercate. Nell’esempio, si è utilizzata una teoria semplice, dove l’andamento è esprimibile tramite formule, ma per generalizzare nella simulazione al calcolatore non useremo le formule dirette, ma proveremo a simulare gli andamenti con un metodo generico, e con un grado di precisione decidibile a priori.
Con la teoria esposta, in figura 4, si presenta uno dei possibili pseudo codici per eseguire la simulazione.
Figura 5 – simulazione al calcolatore dell’andamento spazio temporale di un punto soggetto ad una accelerazione · |
Si può anche verificare la precisione della simulazione, infatti l’ultimo elemento del vettore s contiene lo spazio totale percorso dal punto, confrontandolo con il valore calcolato dalla formulazione precedente è possibile verificare l’errore (l’incertezza commessa):
· 2.2 Moti composti
Spesso si devono simulare oggetti che si muovono su di uno spazio bidimensionale e o tridimensionale; nulla toglie la generalità del metodo esposto sul paragrafo 2.1. La tecnica è la medesima, solo che si dovranno eseguire tante simulazioni quante sono le dimensioni (esistono però una serie di casistiche in qui le grandezze sulle varie dimensioni sono legate tra di loro, ma per la trattazione di questo documento, e per semplicità espositiva, vengono volutamente non considerate).
Ipotizziamo di avere un punto che si muove l’ungo
l’asse x con una accelerazione pari a e sull’asse y con una
accelerazione pari a
.
Come per il paragrafo precedente, si creeranno i vettori velocità e poi i vettori spazio. Come unica complessità, so dovrà preparare anche un vettore accelerazione, in quanto l’accelerazione non è costante.
Da notare che la simulazione dà un andamento coerente con il modello fisico, ne approssima con buona precisione l’andamento (e i valori effettivi di spazio). Per aumentare la precisione del sistema basta diminuire il valore della variabile dt, che rappresenta il quanto temporale discreto utilizzato per realizzare la simulazione stessa.
In figura 6 la simulazione completa di grafico.
Figura 6 – simulazione al calcolatore dell’andamento di un punto soggetto ad accelerazioni sull’asse x e y · |
· 2.3 Cenni su sistemi complessi
Non tutti i sistemi possono essere simulati in modo semplice. Si pensi a sistemi elettrici composti da condensatori e induttanze. La simulazione di questi sistemi necessitano strumenti matematici un po’ più efficaci. Per esempio consideriamo il semplice sistema elettrico definito in figura 7.
Figura 7 – sistema elettrico di una certa complessità · |
La risoluzione del sistema elettrico di figura 7, prevede la soluzione di una equazione differenziale. In questo caso l’equazione differenziale cade in una classe di equazioni differenziali conosciute e in cui esiste la soluzione, per completezza si ha quindi che:
Per la simulazione di questi sistemi sono stati definiti degli algoritmi particolari, in grado di risolvere le equazioni differenziali. Questi algoritmi vengono raggruppati in classi chiamate ODE (Ordinary Differenziate Equation).
Tramite programmi di matematica, spesso chiamati CAS (Computer Algebra System) è possibile risolvere queste classi di problemi.
In figura 8 un esempio di come procedere per risolvere questa tipologia di problemi.
Figura 8 – sistema elettrico di una certa complessità · |
Come si vede la complessità delle simulazioni per sistemi descritti da equazioni differenziale aumenta esponenzialmente. Purtroppo, nell’automazione, questi casi non sono rari, anzi sono la routine!
Tra le classi di sistemi che possono essere studiati mediante equazioni differenziali, esistono delle sottoclassi di sistemi (molto interessanti per l’ingegneria) che si prestano ad essere studiati nel dominio della frequenza, piuttosto che nel dominio del tempo. A tale proposito esistono strumenti matematici molto efficaci, tra i quali oltre alla Trasformata di Fourier troviamo la Trasformata di Laplace (caso più generico di Fourier), la trasformata Cisoidale e molti altri strumenti derivanti dalla Teoria dei Sistemi.
Capitolo
III
Simulazione di un sistema elettronico
In questo ultimo capitolo si mostrerà come si potrebbe simulare un sistema elettronico relativamente complesso. Il sistema verrà scomposto nella funzione di trasferimento, quindi ipotizzato un ingresso ad onda quadra viene realizzata una analisi attraverso l’utilizzo della FFT e la sua inversa.
· 3.1 Presentazione del sistema elettronico
Sebbene le funzioni di trasferimento (FdT) siano fondamentali per l’analisi e simulazione di sistemi, non verranno trattate. In questo paragrafo e per l’intero capitolo si presupporrà che il lettore abbia almeno una vaga nozione di cosa sia una FdT e di come essa va ricavata dal sistema in esame.
In questo paragrafo verrà visto un sistema elettronico composta da amplificatore operazionale realizzante un filtro passa-banda. Non ci soffermeremo sulle tecniche di analisi di tale struttura, ne analizzeremo le proprietà di un tale sistema. Andremo ad estrapolare la funzione di trasferimento del sistema elettronico considerato, tralasciando le eventuali tecniche di analisi.
In figura 9 viene presentato il circuito elettronico che realizza la seguente funzione:
L’espressione della FdT mostra come si tratti di un filtro passa banda. Questo significa che la FdT lascerà passare “intatte” solo alcune frequenze, mentre altre verranno attenuate.
Figura 9 – Sistema elettronico con OpAmp · |
La figura 9 oltre a presentare il circuito, presenta anche un generatore di onde quadre. Lo studio-simulazione del circuito, infatti, verrà svolta utilizzando un generatore di onde quadre.
· 3.2 Considerazione sulla simulazione
Prima di procedere con la simulazione vere e propria, è opportuno focalizzare quale siano i punti salienti per effettuare una tale simulazione. Per preparare la simulazione del circuito, si effettueranno i seguenti punti:
1. Memorizzazione dei valori noti (resistenze, capacità)
2. Creazione di un vettore Onda quadra, simulante il generatore di onde qudra rappresentato in figura 9.
3. Creazione del vettore Trasformata di Fourier (discreta) del vettore onda quadra.
4. Creazione della FdT.
5. Calcolo della risposta del filtro (tramite FdT) sollecitato dal segnale ad onda quadra.
6. Trasformazione della risposta del sistema dal dominio della frequenza al dominio del tempo (antitrasformata di Fourier).
L’utilizzo della FFT sebbene sia “automatico”, presenta alcune sorprese. Infatti, per rendere l’algoritmo efficiente, la FFT di un segnale genera un vettore contenete i coefficienti della trasformata, ma ribaltati rispetto alla posizione centrale. Questo è il motivo della strana forma del vettore pulsazioni che verrà proposto nel paragrafo successivo.
· 3.3 Simulazione al calcolatore del circuito
Finalmente siamo arrivati alla simulazione del sistema, sfruttando le potenzialità del calcolatore e dei sistemi CAS. Di seguito si presenterà il pseudo codice per realizzare a simulazione, i commenti del codice saranno esplicativi sulla funzionalità dello stesso.
Il codice proposto non è ottimizzato e non sfrutta appieno le potenzialità dei moderni CAS, a è strutturato per essere il più chiaro possibile. Inizieremo con la costruzione delle funzioni basilari, quelle necessarie per eseguire la simulazione e dove possibile sono rese parametriche per realizzare uno studio più completo e semplice, cioè senza riscrivere codice.
|
||
Figura 10 – codice generazione onda quadra dato un vettore di campioni |
|
||
Figura 12 – codice generazione vettore pulsazioni |
|
||
Figura 13 – codice generazione FdT |
Come già accennato queste tre funzioni sono il cuore della simulazione, infatti si è realizzato il vettore pulsazione necessario per creare assieme alla FdT il vettore contenente i coefficienti della risposta del filtro. Il vettore onda qudra, necessario per simulare il generatore di onde quadre.
Di seguito il rimanente codice per realizzare la simulazione.
|
||
Figura 14 – codice generazione dati di contorno per la simulazione |
|
||
Figura 15 – codice finale |
In figura 15 viene proposto i codice finale, che altro non fa che mettere assieme i blocchi principali di simulazione. La funzione è parametrizzabile, questo consente di scrive una volta solo il codice e modificando i parametri simulare una classe di “infinite” varianti della FdT e del sistema stesso.
Di seguito i risultati della simulazione in forma grafica.
Figura 16 – Grafico del segnale in uscita al filtro sollecitato da un’onda quadra. |
Il risultato finale mostra l’andamento del segnale in uscita al circuito.
· 3.4 Conclusioni
La simulazione è un aspetto molto interessante nella vita quotidiana, soprattutto per chi si occupa di aspetti tecnici. In questo documento abbiamo visto la simulazione di alcuni sistemi dinamici, ma l’argomento è talmente ampio da meritare molto più spazio.
L’aspetto più impostante per chi si voglia occupare in futuro di simulazioni è la reperibilità di un modello il più simile possibile alla realtà. Da questo modello, poi dovranno estrapolare i parametri di interesse, separare i parametri maggiormente influenzati da errori da quelli che incidono poco. In prima analisi semplificare il tutto per velocizzare l’analisi, quindi introdurre man mano parametri sempre più dettagliati.
È importante, per qualunque modello, renderlo generico e parametrizzabile, in modo da crearsi una libreria di sistemi componibili e semplicemente adattabili.
[1] MatLab e SciLab sono marchi registrati dai relativi proprietari.