Come trovare gli autovettori comuni tra due matrici e l’intersezione tra due spazi

In un articolo precedente, abbiamo parlato di un criterio per trovare gli autovettori comuni di due matrici $n \times n$ arbitrarie $A$ e $B$ (che in generale non commutano).

Primo metodo

Nell’articolo precedente, abbiamo dimostrato che tutti gli autovettori comuni di $A$ e $B$ sono contenuti nello spazio

$$V = \cap_{k,l=1}^{n-1} \ker([A^k,B^l])$$

Inoltre $A$ e $B$ lasciano $V$ invariante e commutano in $V$. Allora la procedura va in questa maniera:

  • Per ogni $k, l \leq n-1$ calcoliamo $\ker([A^k,B^l])$ (ciò si può facilmente fare numericamente utilizzando ad esempio in Python scipy.linalg.null_space).
  • Calcoliamo $V$ trovando l’intersezione di tutti gli spazi $\ker([A^k,B^l])$. Vediamo alla fine come calcolare l’intersezione.
  • Calcoliamo la restrizione su $V$ di $A$ e $B$ ottenendo le matrici $A \lvert_V$ e $B \lvert_V$ che commutano e quindi possono essere trattate come qualsiasi matrici commutanti.

In particolare se $A$ e $B$ sono entrambe diagonalizzabili, allora lo spazio $V$ è già automaticamente lo spazio degli autovettori comuni e non è necessario nient’altro.

Secondo metodo

Per il secondo metodo, procediamo con la forza bruta. In particolare, funziona solo se $A$ e $B$ sono diagonalizzabili.

  • Prima di tutto calcoliamo gli autovalori $\lambda_i$ di $A$ e $\mu_i$ di $B$.
  • Per ogni coppia di autovalori $(\lambda, \mu)$ di $A$ e $B$, consideriamo i rispettivi autospazi $V_\lambda$ e $V_\mu$. Ciò non è banale, perché numericamente potremmo avere degli autovalori diversi ma molto vicini (per le stranezze dei float) e quindi dobbiamo stare attenti nella creazione degli autospazi. In particolare se due autovalori differiscono per meno di un certo valore di tolleranza, vanno raggrupati insieme. Ciò si può controllare in Python ad esempio utilizzando numpy.isclose.
  • Costruiamo l’intersezione come spazi lineari di $V_\lambda$ e $V_\mu$, che ci dà appunto gli autovettori in comune. Vediamo come calcolare l’intersezione nel prossimo paragrafo.

Calcolare l’intersezione

Entrambi i metodi richiedono il calcolo dell’intersezione tra due sottospazi $V_1$ e $V_2$. Lo spazio iniziale ha dimensione $n$ per ipotesi, e supponiamo che $V_1$ e $V_2$ abbiamo dimensione $n_1$ e $n_2$.

In termini concreti lo spazio $V_1$ sarà dato da una matrice $X_1$ di dimensione $n \times n_1$ che contiene gli $n$ componenti degli $n_1$ vettori che spannano $V_1$ (lo stesso per $V_2$). Possiamo quindi calcolare il proiettore $P_1$ sullo spazio $V_1$, che è dato da

$$P_1 = X_1 (X_1^T X_1)^{-1} X_1^T$$

Possiamo controllare che $P_1$ è una matrice $n \times n$. È chiaro che $P_1^T = P_1$ e che $P_1^2 = P_1$, per cui $P_1$ è un proiettore. Questo non è altro che il proiettore sullo spazio spannato dalle colonne di $X_1$, che è esattamente $V_1$.

Alla stessa maniera costruiamo il proiettore su $V_2$,

$$P_2 = X_2 (X_2^T X_2)^{-1} X_2^T$$

A questo punto consideriamo il prodotto dei due $M = P_1 P_2$. I vettori nell’intersezione $V_1 \cap V_2$ sono gli autovettori di $M$ con autovalore uguale ad $1$. Dimostriamo quest’ultimo fatto. È chiaro che se $v$ è in entrambi gli spazi $Mv = P_1 P_2 v = v$ dato che $P_1 v = v$ e $P_2 v = v$.

Al contrario, notiamo che gli autovalori di un proiettore sono uguali a $0$ o $1$. Perciò dato un vettore $v$ qualsiasi, $\norm{P v} \leq 1$ supponendo (senza perdita di generalità) che $v$ sia normalizzato, ovvero $\norm{v}=1$. Infatti possiamo scrivere $v = x + x_\perp$ dove $x$ è nel sottospazio proiettato e $x_\perp$ è nel complemento ortogonale, allora $\norm{v} = \norm{x} + \norm{x_\perp}$. Perciò $Pv = x$ e quindi $\norm{Pv} = \norm{x} \leq 1$ con uguaglianza se e solo se  $\norm{x_\perp} =0$ ovvero $x_\perp=0$ e quindi $v$ è nel sottospazio proiettato. Quindi se $v$ non è in uno dei due sottospazi, allora $\norm{P_i v} < 1$ per uno o entrambi gli $i$ e quindi in particolare $\norm{P_1 P_2 v} < 1$ e quindi non può avere autovalore uguale ad $1$. Per questo motivo non cambia niente se utilizziamo $P_1 P_2$ o $P_2 P_1$ anche se in generale non commutano.

Questa voce è stata pubblicata in altra algebra. Contrassegna il permalink.

Commenta

Questo sito utilizza Akismet per ridurre lo spam. Scopri come vengono elaborati i dati derivati dai commenti.