Calcolatore Matrici A B C D per MATLAB State-Space
Inserisci i parametri del tuo sistema dinamico per calcolare automaticamente le matrici di stato, ingresso, uscita e feedthrough per la rappresentazione in spazio di stato su MATLAB.
Guida Completa al Calcolo delle Matrici A B C D in MATLAB per Sistemi in Spazio di Stato
La rappresentazione in spazio di stato è un metodo fondamentale per descrivere sistemi dinamici lineari tempo-invarianti (LTI). In MATLAB, questa rappresentazione utilizza quattro matrici fondamentali: A (matrice di stato), B (matrice di ingresso), C (matrice di uscita) e D (matrice di feedthrough).
1. Fondamenti Teorici delle Matrici State-Space
Un sistema dinamico lineare può essere descritto dalle seguenti equazioni:
Dove:
- x(t): vettore di stato (n×1)
- u(t): vettore di ingresso (m×1)
- y(t): vettore di uscita (p×1)
- A: matrice di stato (n×n)
- B: matrice di ingresso (n×m)
- C: matrice di uscita (p×n)
- D: matrice di feedthrough (p×m)
2. Metodi per la Determinazione delle Matrici
Esistono diversi approcci per determinare le matrici A, B, C, D:
- Metodo Diretto: Derivazione dalle equazioni differenziali del sistema
- Forma Canonica Controllabile: Particolarmente utile per sistemi SISO
- Forma Canonica Osservabile: Alternativa alla forma controllabile
- Forma Canonica Modale: Basata su autovalori e autovettori
- Forma Canonica di Jordan: Per sistemi con autovalori multipli
3. Implementazione in MATLAB
MATLAB offre diverse funzioni per lavorare con la rappresentazione in spazio di stato:
La funzione ss crea un oggetto che rappresenta il sistema in spazio di stato. È possibile convertire tra diverse rappresentazioni:
| Funzione MATLAB | Descrizione | Esempio di Utilizzo |
|---|---|---|
ss2tf |
Converte da spazio di stato a funzione di trasferimento | [num,den] = ss2tf(A,B,C,D,1) |
tf2ss |
Converte da funzione di trasferimento a spazio di stato | [A,B,C,D] = tf2ss(num,den) |
ss2zp |
Converte da spazio di stato a zeri/poli/guadagno | [z,p,k] = ss2zp(A,B,C,D) |
canon |
Trasforma in forme canoniche | [Ab,Bb,Cb,T,k] = canon(sys,'modal') |
ctrb/obsv |
Calcola matrici di controllabilità/osservabilità | Co = ctrb(A,B); Ob = obsv(A,C) |
4. Analisi della Stabilità
La stabilità di un sistema in spazio di stato può essere analizzata attraverso:
- Autovalori della matrice A: Il sistema è asintoticamente stabile se tutti gli autovalori hanno parte reale negativa
- Matrice di Lyapunov: Risolvendo l’equazione A’P + PA = -Q per una matrice Q definita positiva
- Criterio di Routh-Hurwitz: Applicabile anche alla rappresentazione in spazio di stato
5. Controllabilità e Osservabilità
Due proprietà fondamentali dei sistemi in spazio di stato:
Controllabilità
Un sistema è completamente controllabile se la matrice di controllabilità:
Co = [B AB A²B … An-1B]
ha rango pari a n (ordine del sistema).
Osservabilità
Un sistema è completamente osservabile se la matrice di osservabilità:
Ob = [C; CA; CA²; …; CAn-1]
ha rango pari a n.
6. Discretizzazione dei Sistemi Continui
Per implementare sistemi continui su calcolatori digitali, è necessario discretizzare le equazioni. MATLAB offre la funzione c2d:
Dove 'zoh' indica il mantenimento dell’ordine zero (zero-order hold), il metodo di discretizzazione più comune.
| Metodo di Discretizzazione | Descrizione | Accuratezza | Stabilità |
|---|---|---|---|
| Zero-Order Hold (zoh) | Mantiene costante l’ingresso tra campioni | Buona per Ts piccoli | Preserva stabilità per Ts sufficientemente piccolo |
| Tustin (bilineare) | Mappatura bilineare s→(2/Ts)(z-1)/(z+1) | Molto accurata | Preserva sempre la stabilità |
| Forward Euler | Approssimazione in avanti: s→(z-1)/Ts | Bassa per Ts grandi | Può diventare instabile |
| Backward Euler | Approssimazione all’indietro: s→(z-1)/zTs | Media | Preserva stabilità |
7. Applicazioni Pratiche
La rappresentazione in spazio di stato trova applicazione in numerosi campi:
- Controllo di sistemi meccanici: Bracci robotici, veicoli, strutture flessibili
- Elettronica: Filtri attivi, amplificatori, convertitori DC-DC
- Economia: Modelli macroeconomici, sistemi finanziari
- Biologia: Modelli di popolazione, sistemi fisiologici
- Aerospaziale: Controllo di velivoli, sistemi di navigazione
Un esempio pratico è il controllo di un motore DC, dove le variabili di stato potrebbero essere la posizione angolare e la velocità angolare, mentre l’ingresso è la tensione applicata.
8. Errori Comuni e Soluzioni
Durante la lavorazione con matrici in spazio di stato, è facile incorrere in errori:
-
Dimensione errata delle matrici:
Assicurarsi che:
- A sia n×n
- B sia n×m
- C sia p×n
- D sia p×m
-
Sistema non controllabile/osservabile:
Verificare il rango delle matrici di controllabilità e osservabilità con:
rank(ctrb(A,B)) == size(A,1) -
Instabilità numerica:
Per sistemi con dinamiche molto veloci/lente:
- Usare aritmetica a precisione maggiore
- Riscalare le variabili di stato
- Considerare metodi di bilanciamento
-
Discretizzazione impropria:
Scegliere Ts almeno 10 volte più piccolo della costante di tempo più veloce del sistema.
9. Ottimizzazione delle Prestazioni
Per sistemi di grandi dimensioni, è importante ottimizzare:
- Sparse Matrices: Utilizzare matrici sparse per risparmiare memoria
- Preallocazione: Preallocare gli array per evitare ridimensionamenti
- Vettorizzazione: Evitare cicli for quando possibile
- Funzioni MEX: Per sezioni critiche del codice
- Parallel Computing: Utilizzare Parallel Computing Toolbox
10. Visualizzazione dei Risultati
MATLAB offre potenti strumenti di visualizzazione per analizzare i sistemi:
È possibile personalizzare questi grafici con opzioni aggiuntive:
11. Esempio Completo: Sistema Massa-Molla-Smorzatore
Consideriamo un sistema meccanico composto da una massa m, una molla con costante k e uno smorzatore con coefficiente c:
mẍ(t) + cẋ(t) + kx(t) = u(t)
Dove u(t) è la forza applicata.
Definiamo come variabili di stato:
- x₁(t) = x(t) [posizione]
- x₂(t) = ẋ(t) [velocità]
Le equazioni di stato diventano:
Le matrici risultanti sono:
Per analizzare la risposta al gradino:
12. Estensioni Avanzate
Per sistemi più complessi, è possibile considerare:
- Sistemi non lineari: Linearizzazione intorno a punti di equilibrio
- Sistemi tempo-varianti: Matrici A(t), B(t), C(t), D(t)
- Sistemi stocastici: Inclusione di rumore e incertezze
- Controllo ottimo: LQR (Linear Quadratic Regulator)
- Osservatori: Filtro di Kalman per la stima dello stato
MATLAB offre toolbox specializzate per queste estensioni, come:
- Robust Control Toolbox
- Model Predictive Control Toolbox
- System Identification Toolbox
- Simulink per la simulazione non lineare