Matematica

Decomposizione Matrice

Scomporre una matrice complessa in una più semplice

Decomposizione di una Matrice


La decomposizione di una matrice è un'operazione che permette di rappresentare una matrice complessa in forme più semplici, facilitando analisi e calcoli. Questa tecnica è fondamentale in molti ambiti, come la risoluzione di sistemi lineari, la compressione dei dati e il machine learning.
Tra i principali tipi di decomposizione troviamo:
1. Decomposizione LU: Scomposizione di una matrice in una triangolare inferiore e una superiore.
2. Decomposizione spettrale: Rappresenta una matrice quadrata tramite i suoi autovalori e autovettori.
3. Decomposizione SVD (Singular Value Decomposition): Scomposizione di una matrice in tre componenti, utile per riduzione dimensionale e raccomandazioni.


Decomposizione Spettrale


La decomposizione spettrale si applica a matrici quadrate simmetriche e si basa sugli autovalori e autovettori della matrice.
Dato che una matrice \( A \) è simmetrica, essa può essere scritta come: \[ A = Q \cdot \Lambda \cdot Q^T \]
dove:
- ( Q ) è una matrice ortogonale contenente gli autovettori di ( A ),
- Λ è una matrice diagonale con gli autovalori di ( A ).

Esempio in Python



import numpy as np

# Definiamo una matrice simmetrica
A = np.array([[4, 2], 
              [2, 3]])

# Calcoliamo autovalori e autovettori
eigenvalues, eigenvectors = np.linalg.eigh(A)

# Stampiamo i risultati
print("Matrice originale A:")
print(A)
print("\nAutovalori:")
print(eigenvalues)
print("\nAutovettori:")
print(eigenvectors)
```

**Output**:
```
Matrice originale A:
[[4 2]
 [2 3]]

Autovalori:
[2. 5.]

Autovettori:
[[-0.70710678  0.70710678]
 [ 0.70710678  0.70710678]]


Decomposizione a Valori Singolari (SVD)


La decomposizione SVD rappresenta una matrice qualsiasi A come: \[ A = U \cdot \Sigma \cdot V^T \] dove:
- ( U ) e ( V ) sono matrici ortogonali,
- Σ è una matrice diagonale contenente i valori singolari.

Esempio in Python



# Definiamo una matrice generica
A = np.array([[1, 2, 3], 
              [4, 5, 6]])

# Calcoliamo la decomposizione SVD
U, S, VT = np.linalg.svd(A)

# Stampiamo i risultati
print("Matrice originale A:")
print(A)
print("\nMatrice U:")
print(U)
print("\nValori singolari (S):")
print(S)
print("\nMatrice V^T:")
print(VT)
```

**Output**:
```
Matrice originale A:
[[1 2 3]
 [4 5 6]]

Matrice U:
[[-0.3863177  -0.92236578]
 [-0.92236578  0.3863177 ]]

Valori singolari (S):
[9.508032   0.77286964]

Matrice V^T:
[[-0.42866713 -0.56630692 -0.7039467 ]
 [ 0.80596391  0.11238241 -0.58119949]
 [ 0.40824829 -0.81649658  0.40824829]]


Conclusione


- Decomposizione spettrale: utile per analisi di sistemi lineari e trasformazioni simmetriche.
- Decomposizione SVD: cruciale per riduzione dimensionale e analisi dei dati.
- Decomposizione LU: ideale per risolvere sistemi lineari.

Livio Bollini
Walter Livio Bollini

Matematico & Informatico · Intelligenza Artificiale · Sviluppo Web