Si indica con \(\oplus\).
\(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 è tale se
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
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
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).