2 Metodi numerici per i sistemi dinamici
Come si è visto un PLL del secondo ordine può essere descritto efficacemente tramite un sistema di equazioni differenziali non lineari del secondo ordine; le soluzioni di un sistema di questo tipo solo raramente possono essere scritte in forma esplicita, quindi nasce l’esigenza di trovare metodi alternativi per studiarne il funzionamento. Un metodo molto potente è sicuramente la simulazione del PLL per via numerica. La simulazione numerica di sistemi dinamici continui attraverso equazioni alle differenze porta a espressioni numeriche in cui le derivate vengono sostituite da metodi numerici di integrazione. Il problema principale nella simulazione numerica è la stabilità e la precisione dei risultati della simulazione, comparati con i risultati esatti.
Esistono vari metodi per la simulazione numerica e vari gradi di complessità realizzativi. Come verrà mostrato in seguito, metodi con un alto tasso di complessità danno risultati migliori in termini di stabilità e precisione, a scapito però del tempo di simulazione.
2.1 Introduzione
Prima di illustrare i metodi che verranno confrontati in questo capitolo occorre dare qualche definizione che verrà usata in seguito.
Il problema è quello di trovare un soluzione numerica del problema di Cauchy :
0 0
( ) ( , ( ), ( )) ( )
X t F t X t U t X t X
con
1 2 3
1 2 3
1 2 3
3
1 2
( )= ( ), ( ), ( ), , ( )
( , ( ), ( )) ( , , ), ( , , ), ( , , ),..., ( , , ) ( ) ( ), ( ), ( ),..., ( )
( ) ( )
( ) ( )
( ) , , ,...,
T n
T n
T n
T n
X t x t x t x t x t
F t X t U t f t X U f t X U f t X U f t X U U t u t u t u t u t
dx t dx t dx t dx t
X t dt dt dt dt
dove X t ( ) è il vettore delle variabili di stato, U t ( ) è il vettore degli ingressi.
Un generico metodo numerico ad un passo è espresso nella forma:
1
( , , ) 0,1,...
n n n n
X
X T T t X n
Dove dipende dalla funzione F t X t U t ( , ( ), ( )) relativa al problema trattato e dal metodo usato, mentre T è la risoluzione temporale del metodo numerico e si mantiene costante per tutta la simulazione, in modo che T t
n1 t
nper ogni n . Posto X
0 X t ( )
0questa formula serve a calcolare iterativamente i valori che assumono le variabili di stato al tempo t
n. Ovviamente questa approssimazione numerica introduce un errore ad ogni passo, da t
na t
n1, che può essere calcolato come la differenza tra il valore esatto X t (
n1) e quello teorico X
n1che si ottiene usando il metodo numerico con il valore esatto X t ( )
n, cioè :
1
(
1)
1n n
l n
e
X t
X
con
n 1(
n 1) ( , , ( ))
n nX
X t
T T t X t ;
la quantità e
ln1è chiamata errore locale di troncamento, la figura 2.1 spiega graficamente il
significato
Figura 2.1 Errore locale di troncamento
Un metodo si dice coerente se vale :
1
lim
T 0e
ln0 T
Inoltre, si può definire l’ordine del metodo come il più grande intero positivo per cui vale:
1
(
1)
n
p
e
l O T
.
Un’altra caratteristica importante di un metodo numerico è la convergenza che si verifica se vale la relazione :
0 1 1 0 1
lim ( ) lim 0
T
X
n X t
n
Te
gn
dove e
gn1è l’errore globale di troncamento al passo n+1, cioè l’errore che viene commesso dopo
n+1 passi.
Figura 2.2 Errore globale di troncamento
2.2 Metodo di Eulero
Il più semplice procedimento per approssimare un sistema dinamico continuo con uno discreto è quello di Eulero. Le soluzioni del sistema discreto così ottenuto approssimano le soluzioni del sistema continuo. La differenza tra sistema analogico e discreto, cioè l'errore di discretizzazione, è una funzione rapidamente crescente con il passare del tempo, per cui la potenza di calcolo richiesta per ottenere soluzioni accurate è notevole.
Per ottenere il metodo di Eulero si parte dallo sviluppo in serie di X(t) in t
ncalcolato in t
n1 t
nT
2( ) ( ) ( ) '( ) ''( ) ...
2
n n
n
n t t t t
X t X t t t X t
t t X t
calcolato in t
n1 t
nT
2
(
1) ( ) ( ) '( ) ''( ) ...
n n n n
2
nX t
X t T X t TX t T X t
E lo si interrompe alla derivata prima, quindi, ricordando che X t '( )
n F t X t ( , ( ))
n ne sostituendo ( )
nX t con X
nsi ottiene la formula di Eulero
1
0 0
( , ) 0,1,...
( )
n n n
X X T F nT X n
X X t
nella quale per comodità abbiamo omesso il vettore U(t) degli ingressi. Si nota subito che e
ln1è un infinitesimo di ordine superiore al secondo rispetto a T, infatti
2
(
n 1) ( )
n( , ( ))
n n( ) X t
X t TF t X t O T e quindi Eulero è un metodo del primo ordine.
In poche parole il metodo di Eulero consiste nell’aggiornare il valore di X
n1calcolando la devirata
prima nel punto X
n, la figura 2.3 illustra questo concetto.
Figura 3.1 Metodo numerico di Eulero
2.3 Metodo di Runge-Kutta
Si è visto che Eulero è un’applicazione dello sviluppo in serie di Taylor in t
n, calcolato su un passo di lunghezza T, proviamo a calcolarlo ora su due passi di lunghezza T/2:
( ) ( ) ( ) '( )
2''( ) ...
2
n n
n
n t t t t
X t X t t t X t
t t X t
1
( ) ( ) ( , ( ))
2 2
n n n n
T T
X t X t F t X t
con X t '( )
n F t X t ( , ( ))
n n, per il primo passo e
2
( )
1( ) ( , ( )) ( ) ( , ( )) ( , ( ))
2 2 2 2 2 2 2
n n n n n n n n n
T T T T T T T
X t T X t F t X t X t F t X t F t X t
per il passo intero; anche in questo caso risulta
2
(
n)
2(
n) ( ) X t T X t T O T
combinando però opportunamente
1( )
n
2
X t T , X t
2(
n T ) possiamo eliminare l’errore di secondo
ordine, infatti
3
2 1
(
n) 2 (
n) (
n) ( )
X t T X t T X t T O T
Se confrontiamo l’espressione precedente con quella relativa al metodo di Eulero, osserviamo che è necessario valutare la funzione F ( ) due volte per intervallo di tempo anziché una, per guadagnare un’unità sull’ordine di convergenza. Sembra quindi possibile ricavare algoritmi di ordine superiore aumentando il numero di valutazioni della funzione F ( ) .
Si può però dimostrare che servono più di k valutazioni a tempi intermedi di F ( ) per ottenere un ordine di convergenza uguale a k per k>4 (cfr. tabella 2.1) , per questo motivo l’algoritmo di calcolo più vantaggioso e anche più usato è quello di ordine 4, che prende il nome di Runge-Kutta classico o a 4 passi intermedi.
Ordine di coerenza 1 2 3 4 5 6 7 8 9 10 Numero minimo
di stati “s”
1 2 3 4 6 7 9 11 12 < s < 17 13 < s < 17
Tabella 2.1 Corrispondenza tra ordine e numero minimo di stati
La struttura generale dei metodi di Runge-Kutta è:
1
1
0
( )
0k
n n i i
i
X X T b K
X X t
dove s è il numero di stati e con
1
( , ) 1, 2,...,
s
i n i n ij j
j
K F t c T X T a K i s
I parametri a
ij, c
i, b
isono reali e definiscono il metodo insieme a s.
Per quanto detto risulta
1
( , ,
n n)
k i ii
T t X b K
inoltre, tenendo conto che una condizione necessaria affinché il metodo converga e
lim
0( , ( )) 1, 2,...,
i T i n
K
K F t X t i s
si può dedurre che la condizione di coerenza equivale a :
1
1
k i i
b
Per trovare i coefficienti a
ij, c
i, b
iper l’algoritmo di Runge-Kutta di 4° ordine occorre imporre che risolva esattamente equazioni differenziali che abbiano come soluzioni polinomi di 4° grado, il che ci assicura che il metodo sia di ordine massimo. I coefficienti possono essere efficacemente rappresentati attraverso le tavole di Butcher. Omettendo la dimostrazione RIFERIMENTO BIBLIOGRAFICO MANCANTE si trovano i seguenti valori:
Quindi possiamo riassumere il metodo di Runge-Kutta a 4 stadi come segue
1,
2, 1
3, 2
4, 3
( , )
( / 2, / 2 )
( / 2, / 2 )
( , )
n k
n k
n k
n k
K F nT X
K F nT T X T K
K F nT T X T K
K F nT T X TK
1 1, 4,
2
2,2
3,n n
6
n n n nX
X T K K K K
0 0 0 0 0
1/2 1/2 0 0 0
1/2 0 1/2 0 0
1 0 0 1 0
1/6 1/3 1/3 1/6
c A
b
TCon questo algoritmo la funzione F ( ) viene valutata 4 volte per intervallo di tempo, una nel punto iniziale, due volte nel punto intermedio e ancora una nel punto finale, e i quattro valori così ottenuti vengono combinati linearmente per calcolare il nuovo valore X
n1, tutto questo è efficacemente illustrato in figura 3.2
Figura Errore. Nel documento non esiste testo dello stile specificato..1.2 Metodo di Runge-Kutta del 4° ordine
E’ facile rendersi conto che il metodo di Runge-Kutta del 1° ordine coincide con il metodo di Eulero sei vengono scelti i coefficienti in modo tale che c=0, a=0 e b=1 . Come abbiamo detto per applicare R-K del 4° ordine servono più valutazioni di F ( ) e, quindi, sembrerebbe che una maggior precisione viene pagata in termini di maggior onere di calcolo. Sebbene in assoluto questo sia giusto, non lo è se si ragiona in termini di precisione dell’algoritmo. Prendiamo per esempio un semplicissimo caso scalare:
( ) 1
0dx x x t
dt
che ha come soluzione x t ( ) e
te supponiamo di essere interessati al valore che assume la
variabile x t ( ) al tempo t
1=10s, che ha come soluzione esatta x t ( ) 4.53999 10
1
5. La tabella 2.2
riassume i risultati ottenuti.
R-K T = 0.1s Eulero T = 0.1s Eulero T = 0.01s Eulero T = 0.001s Soluzione 4.54003 10
52.65614 10
54.31712 10
54.51733 10
51 1
( ) / ( )
e t
gx t 8.81 10
60.415 4.91 10
24.99 10
3Numero di
valutazioni di F ( )
400 4 step per iterazione
100 1 step per iterazione
1000 1 step per iterazione
10000 1 step per iterazione
Tabella 1.2 Confronto tra R-K del 4° ordine e Eulero
Dalla tabella si desume che nonostante il numero di calcoli a parità di passo di discretizzazione T sia maggiore nel metodo di R-K, per ottenere buoni risultati con il metodo di Eulero serve una discretizzazione decisamente più fine, il che porta ad un aumento dell’onere di calcolo da parte del simulatore.
2.4 Stabilità numerica dei metodi
La convergenza è una condizione necessaria affinché un metodo numerico produca “buoni”
risultati, infatti si riferisce alla bontà dell’approssimazione su piccoli passi ( T 0 ), nella pratica invece è importante usare un valore del passo di discretizzazione non troppo piccolo per evitare che la simulazione diventi troppo lunga. Nasce quindi la necessità di capire per quali valori di T gli errori di discretizzazione si mantengono limitati con il procedere dei calcoli.
Questa proprietà, che riguarda la sensibilità del metodo agli errori, va sotto il nome di stabilità numerica.
Per semplicità ci possiamo riferire ad un semplice problema nel piano complesso:
dx x dt
con ( j ) e 0 , la cui soluzione, c e
jcon c una costante che dipende dalle condizioni iniziali. Poiché lim
tx t ( ) 0 , è naturale richiedere che la soluzione numerica abbia un comportamento analogo a quello della soluzione continua, cioè deve valere:
1 0
n n
x
L x n n
con n
0qualsiasi, e 0 L 1 .Prendiamo in esame il metodo di Eulero :
1
(1 )
n n n n
x
x T x x T
Affinché sia rispettata la condizione per la stabilità, deve essere verificata la disuguaglianza
1 1 T
quindi T deve essere interno al cerchio di raggio unitario con centro [-1, 0] nel piano complesso.
Figura 3.2 Regione di assoluta stabilità del metodo di Eulero
Tutto questo può essere generalizzato per un metodo di Runge-Kutta qualunque. Cioè se
applichiamo un algoritmo R-K problema dx
dt x , si ottiene un’equazione della forma
1
( )
n n
x
x Q T
dove Q T ( è detta funzione di stabilità. Se ) Q T ( ) 1 allora il metodo è assolutamente stabile.
Introducendo il vettore v (1,1,...,1)
T
s, si può dimostrare RIFERIMENTO BIBLIOGRAFICO
MANCANTE che la funzione di stabilità di un metodo di Runge-Kutta è della forma:
det( ) ( )
det( )
I T A T ub
TQ T I T A
,
che nel caso di R-K del 4° ordine si specializza nella formula:
2 3 4
1 1 1
( ) 1 ( ) ( ) ( )
2 6 24
Q T T T T T
Figura 3.3 Regione di asintotica stabilità per il metodo di Runge-Kutta del 4°ordine
Fino ad adesso ci siamo riferiti ad un caso scalare e lineare, se invece siamo interessati allo studio di un sistema dinamico non lineare a più variabili possiamo ottenere ugualmente risultati importanti sull’assoluta stabilità studiando il sistema linearizzata intorno ad un punto di equilibrio.
Prendiamo il caso
( ) ( ( )) dX t F X t
dt
Supponiamo che X sia un punto di equilibrio del sistema dinamico, nel senso che
( )
( ) ( ) 0
X t X
F X dX t
dt
allora in un intorno di X vale la relazione
( )
X X( ) ( )
X F X J
X X O X X
dove J
X Xè la matrice Jacobiana di F X t ( ( )) calcolata nel punto di equilibrio.
1 1 1
1 2
2 2 2
1 2
1 2
n
n
n n n
n