Se calcoli forza bruta la funzione di trasferimento tramite le matrici
![[A,B,C,D] [A,B,C,D]](/forum/latexrender/pictures/7163fc377b40cd8b7f4318728c8a4fd3.png)
il risultato è al netto del sistema non controllabile e non osservabile.
Se invece usi l'algoritmo interno a
MATLAB ss2tf la semplificazione non avviene per come funziona l'algoritmo stesso.
In realtà parte di questo algoritmo è in chiaro ed un'altra è "protetta" per cui è difficile comprendere esattamente cosa stia facendo anche se ci sono vari riferimenti nel web.
Inoltre Octave ha un algoritmo analogo ma non è detto che rispecchi la stessa tecnica.
Ad ogni modo queste sono fondamentalmente le motivazioni per cui
MATLAB non cancella automaticamente i poli:
1. Flessibilità:
MATLAB lascia all'utente la possibilità di decidere se cancellare o meno i poli, poiché in alcuni casi si desidera mantenere tutti i poli per l'analisi.
2. Problemi numerici: la cancellazione automatica può portare a errori dovuti a limitazioni della precisione numerica.
3. Trasparenza: non cancellando automaticamente i poli,
MATLAB assicura che l'utente sia a conoscenza dell'intera dinamica del sistema, compresi i modi non controllabili e non osservabili.
Per annullare i poli, è necessario utilizzare funzioni come
minreal dopo aver analizzato la controllabilità e l'osservabilità del sistema.
Ad ogni modo è consigliabile calcolare la realizzazione bilanciata tramite la funzione
balreal per assicurarsi un'ottima
model reduction, stabilità numerica, e semplicità di analisi del sistema.
Ricorda anche che una realizzazione bilanciata semplifica l'analisi delle proprietà del sistema, come stabilità, controllabilità e osservabilità, perché gli stati sono disaccoppiati e ordinati per importanza.
Questo la rende un ottimo strumento sia in fase di sintesi che di implementazione per via della stabilità numerica intrinseca.