Somma diretta di sottospazi vettoriali

Si indica con \(\oplus\).

Formula di Grassman

\(dim(S+T) = dim(S) + dim(T) - dim(S \cap T)\)

Se \(dim(S+T) = dim(S)+dim(T)\) allora ne consegue che \(dim(S \cap T)\) è l'insime nullo \(\{0\}\) e la somma dei due sottospazi è detta somma diretta.

Somma diretta

Somma diretta è tale se

  • \(V = S + T\) (dove \(V\) è lo spazio in cui sono definiti i sottospazi \(S\) e \(T\))
  • \(S \cap T = \{0\}\)

Teoremi

  • Se \(V = S \oplus T\) allora \(dim(V) = dim(S) + dim(T)\)
  • Se \(V = S \oplus T\) allora ogni \({\textbf v}\) di \(V\) può essere espresso in modo unico come \({\textbf v}={\textbf s}+{\textbf t}\) (dove \({\textbf s} \in S\) e \({\textbf t} \in T\))
  • Se \(V = S \oplus T\) allora la base di \(S\) unita alla base di \(T\) (\(\beta_S \cup \beta_T\)) è una base di \(V\)

Stabilire se uno spazio vettoriale è somma diretta di due sottospazi

  • si individuano le dimensioni dei rispettivi sottospazi (vedasi sezione precedente "Somma e intersezione di sottospazi vettoriali")
  • se le \(dim(S) + dim(T)\) sono diverse da \(dim(V)\) allora \(V\) non è somma diretta di \(S + T\)
  • se invece \(dim(S) + dim(T) = dim(V)\) si estrae la base (vedi sezione sopra) di \(dim(S+T)\), partendo dall'unione delle rispettive basi ed estraendone i vettori linearmente indipendenti
  • se la nuova base \(\beta_{S+T}\) ha cardinalità pari a \(dim(V)\) (e quindi \(dim(S+T) = dim(V)\)) si fa la verifica sull'intersezione
  • si calcola la dimensione dell'intersezione con la formula di Grassman: \(dim(S \cap T) = dim(S) + dim(T) - dim(S+T)\). Se essa equivale a 0 allora \(V\) è somma diretta di \(S + T\).

Funzione riassumibile

def isSommaDiretta(base_S, base_T, base_S_T, incognite):
    dim_V = len(incognite)

    dim_S_p_T = base_S_T.shape[0]
    dim_S_u_T = base_S.shape[0] + base_T.shape[0] - dim_S_p_T
    print("dimensione S + T:", str(dim_S_p_T))
    print("dimensione S int. T:", str(dim_S_u_T))

    somma_diretta = dim_S_p_T is dim_V and dim_S_u_T is 0
    print("Somma diretta? ", somma_diretta)
    return somma_diretta

Esempio 1

Dati \(V=\mathbb{R}^2\), \(S=\{(x,y) \in \mathbb{R}^2 | x+y=0\}\) e \(T = \{(x,y) \in \mathbb{R}^2 | x=0\}\)

x,y = sp.symbols('x y')

sistema_S = [
    x + y
]
sistema_T = [
    x
]

base_S = baseDaSpazioSoluzioniSistema(sistema_S, [x,y])
base_T = baseDaSpazioSoluzioniSistema(sistema_T, [x,y])
base_S_T = estrapolaLinearmenteIndipendenti(sp.Matrix([base_S, base_T]))

isSommaDiretta(base_S, base_T, base_S_T, [x,y])

... dimensione S + T: 2
dimensione S int. T: 0
Somma diretta? True

Esempio 2

Altro esempio con generatori dei sottospazi:

\(S= Span((1,0,0), (0,1,0))\)

\(T= Span((2,0,0),(0,0,1))\)

La base di \(S+T\) dovrebbe risultare \(\{(1,0,0),(0,1,0),(0,0,1)\}\) e non dovrebbe essere una somma diretta.

generatori_base_S = sp.Matrix([[1,0,0], [0,1,0]])
generatori_base_T = sp.Matrix([[2,0,0], [0,0,1]])

# Unione delle due basi
generatori_S_T = []
for i in range(generatori_base_T.shape[0]):
    generatori_S_T.append(generatori_base_T.row(i))
for i in range(generatori_base_S.shape[0]):
    generatori_S_T.append(generatori_base_S.row(i))

# Base di S+T
base_S_T = estrapolaLinearmenteIndipendenti(sp.Matrix(generatori_S_T))
print("Base di S+T: ", base_S_T)

isSommaDiretta(generatori_base_S, generatori_base_T, base_S_T, [])

... Base di S+T: Matrix([[2, 0, 0], [0, 0, 1], [0, 1, 0]])
dimensione S + T: 3
dimensione S int. T: 1
Somma diretta? False

Come da esercizio (ha estrapolato altra base ma con stesso risultato).

Riferimenti

  • https://www.youmath.it/lezioni/algebra-lineare/matrici-e-vettori/3873-somma-diretta.html