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
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 tipo
si
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.