Matrice definita positiva, negativa, semidefinita e indefinita
Dato il vettore riga \({\bold v}\), in relazione \({\bold x}A{\bold x}^T\), la matrice \(A\) si definisce:
- definita positiva se \({\bold x}A{\bold x}^T > 0 \quad \forall {\bold x} \in \mathbb{R}^n \quad con \quad {\bold x} \ne 0\) (semidefinita positiva se \(\ge\) 0)
- definita negativa se \({\bold x}A{\bold x}^T < 0 \quad \forall x \in \mathbb{R}^n\) con \({\bold x} \ne 0\) (semidefinita negativa se \(\le 0\))
- indefinita se esistono due vettori \({\bold x}_1\) e \({\bold x}_2\) tali che \({\bold x}_1A{\bold x}_1^T > 0\) e \({\bold x}_2A{\bold x}_2^T < 0\).
Una matrice definita è un caso particolare delle matrici semidefinite.
Definitezza della matrice tramite il segno degli autovalori
- definita positiva: tutti gli autovalori sono positivi
- definita negativa: tutti gli autovalori sono negativi
- semidefinita positiva: esiste un autovalore nullo con i restanti non negativi
- semidefinita negativa: esiste un autovalore nullo e i restanti non positivi
- indefinita: almeno due autovalori discordi
Vedasi sezione "Autovalori e autovettori" per il calcolo degli stessi
Proprietà
- Ogni matrice definita positiva è invertibile e la sua inversa è definita positiva.
- Se \(A\) definita positiva allora il rango di \(A\) è massimo
- Il prodotto matrice per scalare di una matrice definita positiva è sempre una matrice definita positiva (\(\mu A\)).
- Se \(A\) e \(B\) sono due matrici definite positive (dello stesso ordine) allora lo sarà anche \(A+B\).
- Se \(A\) e \(B\) sono due matrici definite positive (dello stesso ordine) tali che \(AB=BA\) (cosa non ovvia dato che il prodotto tra matrici non gode della proprietà commutativa) allora anche \(AB\) è definita positiva.
- Per ogni matrice \(A\) definita positiva esiste \(B\) tale che \(A= B^TB\)
Funzione riassumibile
def definizioneMatrice(A):
Avals = autovaloriMolteplicita(A)
autovalori = Avals["autovalori"]
definita_positiva = all(i > 0 for i in autovalori)
semidefinita_positiva = all(i >= 0 for i in autovalori)
definita_negativa = all(i < 0 for i in autovalori)
semidefinita_negativa = all(i <= 0 for i in autovalori)
indefinita = not definita_positiva and not semidefinita_positiva and not definita_negativa and not semidefinita_negativa
return {
"definitaPositiva": definita_positiva,
"semidefinitaPositiva": semidefinita_positiva,
"definitaNegativa": definita_negativa,
"semidefinitaNegativa": semidefinita_negativa,
"indefinita": indefinita
}
Esempio
A = sp.Matrix([[2,1,-5], [1,7,4],[-5,4,19]])
result = definizioneMatrice(A)
pprint.pprint(result)
{'definitaNegativa': False,
'definitaPositiva': False,
'indefinita': False,
'semidefinitaNegativa': False,
'semidefinitaPositiva': True}
Come da esercizio.
Riferimenti
- https://www.youmath.it/lezioni/algebra-lineare/matrici-e-vettori/2694-matrice-definita-positiva-semidefinita-positiva-e-negativa.html