Calcolo raggio spettrale di una generica matrice
Salve a tutti,
avrei bisogno di calcolare gli autovalori di una generica matrice nxn. Esiste una tecnica alternativa a $ det(A - xI) = 0 $ ?
Per maggior chiarezza, ho necessità di porre il raggio spettrale di una matrice minore di uno. L'unica relazione utile che ho trovato è $ || A || >= p(A) $, dove p(A) è il raggio spettrale. Ma se tale norma risulta maggiore di uno non ho informazioni utili.
Grazie in anticipo...
avrei bisogno di calcolare gli autovalori di una generica matrice nxn. Esiste una tecnica alternativa a $ det(A - xI) = 0 $ ?
Per maggior chiarezza, ho necessità di porre il raggio spettrale di una matrice minore di uno. L'unica relazione utile che ho trovato è $ || A || >= p(A) $, dove p(A) è il raggio spettrale. Ma se tale norma risulta maggiore di uno non ho informazioni utili.
Grazie in anticipo...
Risposte
Potrebbe esserti utile il fatto che la relazione $\rho(A) <= ||A||$ vale per ogni norma $||\cdot||$ matriciale indotta. Nel caso non lo sapessi una norma matriciale indotta è una norma matriciale definibile come:
$||A|| = max_{||x||=1}||Ax||$ dove la norma a sinistra dell'uguale è la norma matriciale indotta e quella a destra è una qualunque norma vettoriale (solitamente si adopera lo stesso simbolo per la norma matriciale indotta e per la norma vettoriale che la induce). Bisogna stare attenti perché il legame tra norma matriciale e raggio spettrale salta alla grande se la norma non è una norma indotta.
Ad esempio può essere comodo provare le 3 <> norme matriciali indotte:
- la norma euclidea o norma 2: indotta dalla norma vettoriale euclidea, cioè la lunghezza del vettore;
- la norma 1 che è indotta dalla norma vettoriale 1 definita come: $||x||_1 = \sum_{i=1}^n|x_i|$
- la norma $\infty$ che indotta dalla norma vettoriale $\infty$ definita come: $||x||_\infty = max_{i=1:n}|x_i|$
Se poi ti serve uno strumento un po' più accurato servono dei fatterelli:
1° Lemma: Data una matrice $S$ non singolare la funzione $A \to ||S^{-1}AS||_\infty$ è una norma matriciale indotta.
(dim: tale norma matriciale è indotta dalla norma vettoriale $x \to ||S^{-1}x||_\infty$).
2° Lemma: Per ogni $\epsilon >0$ esiste una norma matriciale indotta tale che $||A||<=\rho(A)+\epsilon$
(dim: si verifica passando alla forma canonica di Jordan).
In particolare se gli autovalori della matrice $A$ hanno tutti molteplicità algebrica uguale alla molteplicità geometrica (es: matrici diagonalizzabili) esiste una norma indotta tale che $||A||=\rho(A)$$.
Teoricamente i due precedenti risultati ti permettono di <> la norma il più possibile verso il raggio spettrale in modo da avere maggiorazioni sempre migliori se non addirittura un'uguaglianza.
Nella pratica un trucchetto che si usa per strizzare la norma di una matrice è il seguente (lo mostro con un esempio):
Si dimostra in modo molto semplice che la norma matriciale $\infty$ definita sopra si calcola come il massimo sugli indici di riga della somma dei moduli degli elementi della riga ovvero in formule:
$||A||_\infty = max_{i=1:n}\sum_{j=1}^n|a_{ij}|$.
Per il primo lemma posso usare il coniugio con una matrice non singolare per modificare la norma di A, ad esempio se usiamo matrici 2x2 potrei fare:
$A=((a,b),(c,d))$ e la sua norma è $||A||_\infty = max{|a|+|b|,|c|+|d|}$
Definisco $S=((x,0),(0,y))$ dove x,y sono maggiori di 0.
Allora so che $S^{-1} = ((1/x,0),(0,1/y))$ e che
$S^{-1}AS = ((a,by/x),(cx/y,d))$ ovvero gli elementi diagonali restano fissi mentre gli elementi fuori diagonale vengono scalati secondo il rapporto $y/x$ o $x/y$.
Ora aggiustando in modo opportuno $x$ e $y$ si può fare in modo da strizzare questi valori fuori diagonale in modo tale che:
$||S^{-1}AS||_\infty = max{|a|+|b|y/x,|d|+|c|x/y}$ si riduca e quindi la stima del raggio spettrale sia migliore (ti ricordo che questa è una norma matriciale indotta quindi vale la maggiorazione).
Con questo trucchetto tieni fissi gli elementi diagonali e riduci il più possibile gli elementi fuori diagonale: attenzione per ogni elemento che riduci il suo simmetrico nella matrice viene aumentato quindi l'uso di questo trucco non è generalizzabile ma dipende dai numeri che hai davanti.
A questo punto ti consiglio anche di guardare (le trovi in rete) notizie riguardo i teoremi di Gershgorin che servono a stimare delle regioni in cui gli autovalori sono confinati e con i quali il trucchetto del coniugio che ho scritto sopra è utilissimo e le disuguaglianze di Hoelder e di Minkowski che servono per maggiorare delle norme con somme e prodotti di altre norme.
Se qualcosa non è chiaro chiedi pure.
A.
$||A|| = max_{||x||=1}||Ax||$ dove la norma a sinistra dell'uguale è la norma matriciale indotta e quella a destra è una qualunque norma vettoriale (solitamente si adopera lo stesso simbolo per la norma matriciale indotta e per la norma vettoriale che la induce). Bisogna stare attenti perché il legame tra norma matriciale e raggio spettrale salta alla grande se la norma non è una norma indotta.
Ad esempio può essere comodo provare le 3 <
- la norma euclidea o norma 2: indotta dalla norma vettoriale euclidea, cioè la lunghezza del vettore;
- la norma 1 che è indotta dalla norma vettoriale 1 definita come: $||x||_1 = \sum_{i=1}^n|x_i|$
- la norma $\infty$ che indotta dalla norma vettoriale $\infty$ definita come: $||x||_\infty = max_{i=1:n}|x_i|$
Se poi ti serve uno strumento un po' più accurato servono dei fatterelli:
1° Lemma: Data una matrice $S$ non singolare la funzione $A \to ||S^{-1}AS||_\infty$ è una norma matriciale indotta.
(dim: tale norma matriciale è indotta dalla norma vettoriale $x \to ||S^{-1}x||_\infty$).
2° Lemma: Per ogni $\epsilon >0$ esiste una norma matriciale indotta tale che $||A||<=\rho(A)+\epsilon$
(dim: si verifica passando alla forma canonica di Jordan).
In particolare se gli autovalori della matrice $A$ hanno tutti molteplicità algebrica uguale alla molteplicità geometrica (es: matrici diagonalizzabili) esiste una norma indotta tale che $||A||=\rho(A)$$.
Teoricamente i due precedenti risultati ti permettono di <
Nella pratica un trucchetto che si usa per strizzare la norma di una matrice è il seguente (lo mostro con un esempio):
Si dimostra in modo molto semplice che la norma matriciale $\infty$ definita sopra si calcola come il massimo sugli indici di riga della somma dei moduli degli elementi della riga ovvero in formule:
$||A||_\infty = max_{i=1:n}\sum_{j=1}^n|a_{ij}|$.
Per il primo lemma posso usare il coniugio con una matrice non singolare per modificare la norma di A, ad esempio se usiamo matrici 2x2 potrei fare:
$A=((a,b),(c,d))$ e la sua norma è $||A||_\infty = max{|a|+|b|,|c|+|d|}$
Definisco $S=((x,0),(0,y))$ dove x,y sono maggiori di 0.
Allora so che $S^{-1} = ((1/x,0),(0,1/y))$ e che
$S^{-1}AS = ((a,by/x),(cx/y,d))$ ovvero gli elementi diagonali restano fissi mentre gli elementi fuori diagonale vengono scalati secondo il rapporto $y/x$ o $x/y$.
Ora aggiustando in modo opportuno $x$ e $y$ si può fare in modo da strizzare questi valori fuori diagonale in modo tale che:
$||S^{-1}AS||_\infty = max{|a|+|b|y/x,|d|+|c|x/y}$ si riduca e quindi la stima del raggio spettrale sia migliore (ti ricordo che questa è una norma matriciale indotta quindi vale la maggiorazione).
Con questo trucchetto tieni fissi gli elementi diagonali e riduci il più possibile gli elementi fuori diagonale: attenzione per ogni elemento che riduci il suo simmetrico nella matrice viene aumentato quindi l'uso di questo trucco non è generalizzabile ma dipende dai numeri che hai davanti.
A questo punto ti consiglio anche di guardare (le trovi in rete) notizie riguardo i teoremi di Gershgorin che servono a stimare delle regioni in cui gli autovalori sono confinati e con i quali il trucchetto del coniugio che ho scritto sopra è utilissimo e le disuguaglianze di Hoelder e di Minkowski che servono per maggiorare delle norme con somme e prodotti di altre norme.
Se qualcosa non è chiaro chiedi pure.
A.
ok, grazie adesso mi è un po più chiaro il ragionamento per la risoluzione dell'esercizio.
Ti espongo una tecnica trovata unendo nozioni trovate in rete.
Data una matrice quadrata A di ordine n :
1) Trasformo la matrice A, quadrata, in
$ A' = A * trasposta(A) $
così da poter lavorare con una matrice simmetrica.
2) Per ogni matrice simmetrica vale l'uguaglianza :
$ || B || = p( B ) $, con p( B ) raggio spettrale e $|| . ||$ norma due o euclidea indotta.
3) Essendo $ A' = A * trasposta( A ) $, segue che :
$ || A' || = sqrt( p(A) ) $, con $ || . || $ norma due o euclidea indotta.
( Non ho idea del perché, ma credo si dimostri manipolando valori singolari che ancora non conosco bene ).
4) Infine gioco con il valore n utilizzando l'uguaglianza tra norme, infatti :
$ 1 / sqrt(n)*|| A' || <= || A' ||2 <= sqrt(n) * || A' || $ , con $ || . ||2 $ norma due e $ || . || $ norma 1
Ovviamente nell'esercizio avevo delle informazioni utili a dare una stima della norma 1, ma avrei potuto usare una norma differente purché equivalente alla norma due.
è un buon approccio al problema? Ma soprattutto ti (vi) sembra corretto?
Grazie ciao
Ti espongo una tecnica trovata unendo nozioni trovate in rete.
Data una matrice quadrata A di ordine n :
1) Trasformo la matrice A, quadrata, in
$ A' = A * trasposta(A) $
così da poter lavorare con una matrice simmetrica.
2) Per ogni matrice simmetrica vale l'uguaglianza :
$ || B || = p( B ) $, con p( B ) raggio spettrale e $|| . ||$ norma due o euclidea indotta.
3) Essendo $ A' = A * trasposta( A ) $, segue che :
$ || A' || = sqrt( p(A) ) $, con $ || . || $ norma due o euclidea indotta.
( Non ho idea del perché, ma credo si dimostri manipolando valori singolari che ancora non conosco bene ).
4) Infine gioco con il valore n utilizzando l'uguaglianza tra norme, infatti :
$ 1 / sqrt(n)*|| A' || <= || A' ||2 <= sqrt(n) * || A' || $ , con $ || . ||2 $ norma due e $ || . || $ norma 1
Ovviamente nell'esercizio avevo delle informazioni utili a dare una stima della norma 1, ma avrei potuto usare una norma differente purché equivalente alla norma due.
è un buon approccio al problema? Ma soprattutto ti (vi) sembra corretto?
Grazie ciao
1) A volte è una buona strada: oltre alla indiscutibile simpatia di una matrice simmetrica (in termini di spettro) vale la proprietà 2) e anche la seguente:
$||A||_1= ||A||_\infty$, proprietà che hai tacitamente usato al punto 4.
Solo un consiglio precisino, per questioni di semplicità di scrittura nei calcoli ti conviene usare la scrittura $A^t A$ invece che $A A^t$, pensando al fatto che moltiplicare una matrice a sinistra per la sua trasposta vuol dire fare una serie di prodotti scalari tra le sue colonne, ma puoi fare come ti è più comodo.
2) ok
3) Per la dimostrazione basta verificare che $||A||_2=\sqrt{\rho(A^t A)}$ ricordando che $A^t A$ è simmetrica quindi si diagonalizza con trasformazioni ortogonali e gli autovalori sono fatti un certo modo e dire il vero sono anche lì in bella vista pronti all'uso.
4) Mi sembra un buon modo di procedere, però ripeto queste stime si fanno molto ad occhio quindi a volte funziona una strada e a volte ne funziona un'altra. Bisogna arrangiarsi un po'.
A.
$||A||_1= ||A||_\infty$, proprietà che hai tacitamente usato al punto 4.
Solo un consiglio precisino, per questioni di semplicità di scrittura nei calcoli ti conviene usare la scrittura $A^t A$ invece che $A A^t$, pensando al fatto che moltiplicare una matrice a sinistra per la sua trasposta vuol dire fare una serie di prodotti scalari tra le sue colonne, ma puoi fare come ti è più comodo.
2) ok
3) Per la dimostrazione basta verificare che $||A||_2=\sqrt{\rho(A^t A)}$ ricordando che $A^t A$ è simmetrica quindi si diagonalizza con trasformazioni ortogonali e gli autovalori sono fatti un certo modo e dire il vero sono anche lì in bella vista pronti all'uso.
4) Mi sembra un buon modo di procedere, però ripeto queste stime si fanno molto ad occhio quindi a volte funziona una strada e a volte ne funziona un'altra. Bisogna arrangiarsi un po'.
A.
Grazie mille per l'aiuto, almeno adesso so come domare questo tipo di esercizi.