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