Equazione di Sylvester
# Equazione di Sylvester

L'equazione di Sylvester, spesso incontrata in teoria del controllo, è un'equazione matriciale della forma

    $AX+XB=C,$

dove $A,B,X,C$ sono matrici di dimensione $n\times n$. $A,B,C$ sono note. Il problema consiste nel trovare $X$. L'equazione di Sylvester è un caso particolare dell'equazione di Lyapunov continua (quando la matrice A è hermitiana).

## Esistenza e unicità della soluzione

Usando il prodotto di Kronecker e l'operatore di vettorializzazione $\operatorname {vec}$, si può riscrivere l'equazione nella forma

    $(I_{n}\otimes A+B^{T}\otimes I_{n})\operatorname {vec} X=\operatorname {vec} C,$

dove $I_{n}$ è la matrice identità di dimensione $n\times n$. In questa forma, l'equazione di Sylvester può essere vista come un sistema lineare di dimensione $n^{2}\times n^{2}$.

Se $L$ e $M$ in $A=ULU^{-1}$ e $B^{T}=VMV^{-1}$ sono le forme canoniche di Jordan rispettivamente di $A$ e $B^{T}$, e $\lambda _{i}$ e $\mu _{j}$ sono rispettivamente i loro autovalori, si può scrivere

    $I_{n}\otimes A+B^{T}\otimes I_{n}=(V\otimes U)(I_{n}\otimes L+M\otimes I_{n})(V\otimes U)^{-1}.$

Dato che $(I_{n}\otimes L+M\otimes I_{n})$ è una matrice triangolare superiore con $\lambda _{i}+\mu _{j}$ sulla diagonale , la matrice a sinistra dell'equazione è singolare se e solo se esistono $i$ e $j$ tali che $\lambda _{i}=-\mu _{j}$.

Quindi, si è provato che l'equazione di Sylvester ha un'unica soluzione se e solo se $A$ e $-B$ non hanno autovalori in comune. È inoltre possibile provare che se la matrice $A$ è di Hurwitz, la soluzione dell'equazione di Sylvester, se esiste, è la matrice gramiana di controllabilità.

## Soluzioni numeriche

Un classico algoritmo per la risoluzione numerica dell'equazione di Sylvester è l'algoritmo di Bartels-Stewart, che consiste nel trasformare le matrici $A$ e $B$ nella loro decomposizione di Schur tramite un algoritmo QR e poi risolvere il sistema triangolare ottenuto sostituendo all'indietro. Questo algoritmo, il cui costo computazionale è O$(n^{3})$ operazioni aritmetiche, viene utilizzato, tra i tanti, da LAPACK e dalla funzione lyap in GNU Octave.

