Vai al contenuto
Metodi Matematici

Trasformata Zeta, approfondimento: stabilità, piano z, ZOH, Eulero e Tustin

Proprietà e teoremi dimostrati, tre metodi di antitrasformazione, stabilità con i poli nel cerchio unitario, mappa z uguale a e alla sT, discretizzazione con mantenitore, Eulero e Tustin con prewarping, esempio in Python, tabelle.

Questa pagina approfondisce la lezione sulla trasformata Zeta, lo strumento con cui si progettano tutti i sistemi che girano su un processore: filtri digitali, regolatori nei microcontrollori, centraline delle automobili. Dimostra le proprietà e i teoremi del valore iniziale e finale, sviluppa l’antitrasformata con tre metodi, dimostra il criterio di stabilità (poli dentro il cerchio unitario), spiega come la mappa z = e^{sT} trasforma il piano s nel piano z e confronta i metodi per passare da un sistema continuo a uno discreto: mantenitore di ordine zero, Eulero e Tustin. In fondo ci sono le tabelle da ricordare e un esempio in Python.

Le proprietà, dimostrate

Definizione: X(z) = \sum_{n=0}^{\infty}x[n]z^{-n}, per sequenze nulle per n \lt  0.

  • Ritardo di k campioni. \sum_n x[n - k]z^{-n}, con m = n - k, diventa z^{-k}\sum_m x[m]z^{-m} = z^{-k}X(z) (i termini con m \lt  0 sono nulli).
  • Anticipo. \sum_n x[n + 1]z^{-n} = z\sum_{m \ge 1}x[m]z^{-m} = z\left(X(z) - x[0]\right). Più in generale \mathcal Z\{x[n + 2]\} = z^2X - z^2x[0] - zx[1]: le condizioni iniziali entrano come in Laplace.
  • Scalatura. \sum a^nx[n]z^{-n} = \sum x[n](z/a)^{-n} = X(z/a): moltiplicare per a^n sposta i poli di un fattore a.
  • Moltiplicazione per n. Derivando X rispetto a z: X'(z) = \sum(-n)x[n]z^{-n-1}, quindi \mathcal Z\{n\,x[n]\} = -z\,X'(z). Da \mathcal Z\{u[n]\} = \frac{z}{z - 1} si ottiene \mathcal Z\{n\} = \frac{z}{(z - 1)^2}.
  • Convoluzione. \sum_n\sum_k x[k]h[n - k]z^{-n} = \sum_k x[k]z^{-k}\sum_n h[n - k]z^{-(n - k)} = X(z)H(z).

Teorema (valori iniziale e finale). x[0] = \lim_{z\to\infty}X(z). Se i poli di (z - 1)X(z) stanno dentro il cerchio unitario, \lim_{n\to\infty}x[n] = \lim_{z\to 1}(z - 1)X(z).

Dimostrazione. Il primo: per z \to \infty tutti i termini x[n]z^{-n} con n \ge 1 tendono a 0. Il secondo: \mathcal Z\{x[n + 1] - x[n]\} = (z - 1)X(z) - zx[0]. Per z \to 1 il primo membro tende a \sum_{n=0}^{\infty}(x[n + 1] - x[n]) = \lim x[n] - x[0] (serie telescopica), quindi \lim_{z\to 1}(z - 1)X = \lim x[n]. ∎

L’antitrasformata: tre metodi

1. Fratti semplici di X(z)/z. Si scompone \frac{X(z)}{z} e si rimoltiplica per z, così ogni termine è \frac{Az}{z - p} \leftrightarrow A\,p^n. Per un polo doppio, \frac{Az}{(z - p)^2} \leftrightarrow A\,n\,p^{n-1}.

2. Divisione lunga. Si divide il numeratore per il denominatore secondo le potenze di z^{-1}: i coefficienti del quoziente sono i campioni. Non dà una formula chiusa, ma è esattamente ciò che fa il processore eseguendo l’equazione alle differenze.

3. Residui. x[n] = \sum\text{Res}\left(X(z)z^{n-1}\right) nei poli di X(z)z^{n-1}: è la formula d’inversione, un integrale lungo una circonferenza nella regione di convergenza (lezioni sulla formula di Cauchy e sui residui).

La stabilità, dimostrata

Un sistema discreto è stabile (BIBO: ingresso limitato, uscita limitata) se e solo se la risposta impulsiva è sommabile, \sum|h[n]| \lt  \infty.

Teorema. Un sistema con H(z) razionale è stabile se e solo se tutti i poli hanno modulo minore di 1.

Dimostrazione. Con i fratti semplici, h[n] è una combinazione di termini n^kp^n, uno per ogni polo p (k minore della molteplicità). Se |p| \lt  1, \sum n^k|p|^n converge (criterio del rapporto: il rapporto tende a |p| \lt  1), e la somma di un numero finito di serie convergenti converge. Se invece un polo ha |p| \ge 1, il termine corrispondente non tende a zero (per |p| = 1 ha modulo costante o crescente), quindi h[n] non è sommabile. Infine, se \sum|h| = S e |x| \le M, |y[n]| = \left|\sum h[k]x[n - k]\right| \le MS: uscita limitata. ∎

Risposte di un polo reale positivo e di uno negativo
A sinistra il polo in 0,8 produce una sequenza che decresce senza cambiare segno; a destra il polo in meno 0,8 produce una sequenza che alterna il segno a ogni campione, con la stessa velocità di smorzamento.

Un polo negativo non ha un analogo continuo: produce un’oscillazione alla frequenza di Nyquist (un campione su e uno giù). I poli complessi re^{\pm i\theta} producono r^n\cos(n\theta + \varphi): smorzamento dato dal modulo, frequenza dall’angolo.

Risposta di una coppia di poli complessi
Con poli di modulo 0,9 e angolo pi greco quinti la sequenza oscilla con un periodo di 10 campioni dentro l’inviluppo 0,9 alla n, tratteggiato.

In pratica, per verificare la stabilità senza calcolare i poli si usa il criterio di Jury (lezione di Controllo digitale), oppure la trasformazione bilineare z = \frac{1 + w}{1 - w}, che porta il cerchio unitario nel semipiano sinistro di w, e poi il criterio di Routh.

Dal piano s al piano z

Campionando con periodo T, un polo continuo s_k diventa il polo discreto z_k = e^{s_kT} (il termine e^{s_kt} campionato è \left(e^{s_kT}\right)^n). Con s = \sigma + i\omega: |z| = e^{\sigma T} e \arg z = \omega T.

  • il semipiano sinistro (\sigma \lt  0) va dentro il cerchio unitario, l’asse immaginario sulla circonferenza;
  • una retta verticale \sigma = \sigma_1 va in una circonferenza di raggio e^{\sigma_1T}: tempo di assestamento costante;
  • la mappa non è iniettiva: s e s + i\frac{2\pi}{T} vanno nello stesso z. Tutta la striscia |\omega| \lt  \pi/T copre già il piano z, e le frequenze fuori da quella striscia si confondono con quelle dentro: è l’aliasing, visto dal piano complesso.
La mappa z uguale a e alla s T
La striscia orizzontale del semipiano sinistro compresa tra meno pi su T e pi su T, in verde, va nel cerchio unitario. Una retta verticale di ascissa sigma 1, in viola, va in una circonferenza di raggio e alla sigma 1 per T.

Discretizzare: ZOH, Eulero, Tustin

Un regolatore progettato in continuo, C(s), va trasformato in un C(z) da eseguire sul processore. I metodi principali:

Mantenitore di ordine zero (ZOH). È il modello esatto di un processo continuo G(s) comandato da un convertitore D/A che tiene l’uscita costante tra due campioni:

    \[ G(z) = (1 - z^{-1})\,\mathcal Z\left\{\frac{G(s)}{s}\right\} \]

Dimostrazione. L’impulso discreto, dopo il mantenitore, è un gradino di durata T: u(t) - u(t - T). La sua uscita è la risposta al gradino g_1(t) = \mathcal L^{-1}\{G(s)/s\} meno la stessa ritardata di T. Campionata e trasformata, dà \mathcal Z\{g_1\} - z^{-1}\mathcal Z\{g_1\}. ∎

Per G = \frac{a}{s + a}: \frac{G}{s} = \frac{1}{s} - \frac{1}{s + a}, quindi G(z) = (1 - z^{-1})\left(\frac{z}{z - 1} - \frac{z}{z - e^{-aT}}\right) = \frac{1 - e^{-aT}}{z - e^{-aT}}. Il polo è proprio e^{-aT}.

Il mantenitore di ordine zero
L’uscita del convertitore resta costante tra due istanti di campionamento, formando una scala, mentre la risposta continua, tratteggiata, cambia con continuità; nei punti di campionamento i due valori coincidono.

Eulero in avanti: s \approx \frac{z - 1}{T} (derivata approssimata con la differenza in avanti). Eulero all’indietro: s \approx \frac{z - 1}{Tz}. Tustin (trasformazione bilineare, metodo dei trapezi): s \approx \frac{2}{T}\cdot\frac{z - 1}{z + 1}.

Teorema. Tustin porta il semipiano sinistro esattamente nel cerchio unitario: un regolatore continuo stabile resta stabile per ogni T. Eulero in avanti no: un polo continuo stabile diventa instabile se T è troppo grande.

Dimostrazione. Tustin: z = \frac{1 + sT/2}{1 - sT/2}. Con \text{Re}\,s \lt  0, il numeratore è più vicino all’origine del denominatore (sono simmetrici rispetto all’asse immaginario, 1 + sT/2 sta a sinistra), quindi |z| \lt  1. Eulero in avanti: z = 1 + sT. Il cerchio |z| \lt  1 corrisponde in s al cerchio |s + 1/T| \lt  1/T: solo i poli dentro quel cerchio restano stabili. Un polo reale s = -a diventa 1 - aT, instabile per T \gt  2/a. ∎

Regioni di stabilità di Eulero in avanti e all'indietro
A sinistra Eulero in avanti: sono stabili solo i poli continui dentro il cerchio verde di centro meno 1 su T, che è solo una parte del semipiano sinistro. A destra Eulero all’indietro: è stabile tutto il piano tranne il cerchio rosso di centro 1 su T.

Il prezzo di Tustin: la distorsione delle frequenze. Sulla circonferenza z = e^{i\omega_dT}, la sostituzione dà s = i\frac{2}{T}\tan\frac{\omega_dT}{2}: la pulsazione digitale \omega_d corrisponde alla pulsazione analogica \omega_a = \frac{2}{T}\tan\frac{\omega_dT}{2}. Per \omega_dT piccolo le due coincidono; vicino a Nyquist la tangente esplode. Per far coincidere una frequenza importante (per esempio la frequenza di taglio di un filtro, o di incrocio di un regolatore) si usa il prewarping: si progetta il continuo alla frequenza \omega_a corretta.

Distorsione delle frequenze della trasformazione di Tustin
La curva rossa lega la pulsazione digitale a quella analogica: per pulsazioni basse coincide con la bisettrice tratteggiata, poi cresce sempre più in fretta fino all’infinito alla frequenza di Nyquist.

La risposta in frequenza dei sistemi discreti

Con z = e^{i\omega T}, H(e^{i\omega T}) è la risposta in frequenza, periodica di periodo \frac{2\pi}{T} e (per coefficienti reali) simmetrica: basta guardarla tra 0 e la frequenza di Nyquist \omega T = \pi. La media mobile a due campioni \frac{1 + z^{-1}}{2} ha modulo |\cos\frac{\omega T}{2}|, zero a Nyquist; il filtro esponenziale \frac{1 - a}{1 - az^{-1}} con a = 0{,}9 è un passa basso molto più selettivo, ma con una retroazione (IIR).

Risposta in frequenza di due filtri digitali
Il modulo della media mobile a due campioni, in blu, scende lentamente fino a zero alla frequenza di Nyquist; quello del filtro esponenziale con a uguale a 0,9, in rosso, scende molto più in fretta.

Un esempio in Python

Con la libreria gratuita python-control (in MATLAB le funzioni hanno quasi gli stessi nomi: tf, c2d, step) si discretizza un sistema e si confrontano i metodi:

import control as ct

T = 0.1                                  # periodo di campionamento [s]
G = ct.tf([2], [1, 2])                   # G(s) = 2/(s + 2)
Gzoh = ct.sample_system(G, T, method='zoh')
Gtus = ct.sample_system(G, T, method='tustin')
print(Gzoh)                              # 0.1813 / (z - 0.8187)
print(Gtus)                              # (0.09091 z + 0.09091) / (z - 0.8182)
print(ct.poles(Gzoh))                    # [0.8187] = exp(-2*0.1)

Il polo ZOH è esattamente e^{-2\cdot 0{,}1} = 0{,}8187; quello di Tustin, \frac{1 - 0{,}1}{1 + 0{,}1} = 0{,}8182, è molto vicino perché aT = 0{,}2 è piccolo. In MATLAB: G = tf(2,[1 2]); Gz = c2d(G, 0.1, 'zoh').

Le tabelle da ricordare

Trasformate (sequenze nulle per n \lt  0)

x[n]X(z)
\delta[n]1
\delta[n - k]z^{-k}
u[n]\dfrac{z}{z - 1}
n\dfrac{z}{(z - 1)^2}
a^n\dfrac{z}{z - a}
n\,a^n\dfrac{az}{(z - a)^2}
\cos n\theta\dfrac{z(z - \cos\theta)}{z^2 - 2z\cos\theta + 1}
\sin n\theta\dfrac{z\sin\theta}{z^2 - 2z\cos\theta + 1}
r^n\cos n\theta\dfrac{z(z - r\cos\theta)}{z^2 - 2rz\cos\theta + r^2}
r^n\sin n\theta\dfrac{zr\sin\theta}{z^2 - 2rz\cos\theta + r^2}

Proprietà: x[n - k] \leftrightarrow z^{-k}X; x[n + 1] \leftrightarrow zX - zx[0]; a^nx[n] \leftrightarrow X(z/a); nx[n] \leftrightarrow -zX'(z); x * h \leftrightarrow XH; \sum_{k=0}^{n}x[k] \leftrightarrow \frac{z}{z - 1}X; valore iniziale x[0] = \lim_{z\to\infty}X; valore finale \lim_{z\to 1}(z - 1)X.

Discretizzazioni

MetodoSostituzioneStabilità conservataNote
ZOHG(z) = (1 - z^{-1})\mathcal Z\{G(s)/s\}sì, esattamodello del processo con D/A
Eulero in avantis = \frac{z - 1}{T}nosemplice, richiede T piccolo
Eulero all’indietros = \frac{z - 1}{Tz}sìintroduce smorzamento
Tustins = \frac{2}{T}\frac{z - 1}{z + 1}sìdistorce le frequenze, si usa il prewarping
Corrispondenza poli-zeriz = e^{sT} per poli e zerisìva aggiustato il guadagno

Gli esercizi, con equazioni alle differenze, filtri, stabilità e discretizzazioni, sono nella pagina degli esercizi collegata in cima.

Subscribe
Notify of
guest
0 Comments
Oldest
Newest Most Voted
0
Would love your thoughts, please comment.x
()
x