linalg.matrix_rank
) - se \(rk(A) = n\) i vettori sono linearmente indipendenti.Consideriamo due scalari in combinazione lineare:
\(v_1 = (1,0), v_2 = (0,1)\)
\(av_1+bv_2 \\\)
\(a(1,0) + b(0,1) = (0,0)\)
Svolgendo le operazioni tra vettori:
\((a,0) + (0,b) = (0,0) \\\)
\((a,b) = (0,0)\)
La precedente uguaglianza è soddisfatta se e solo se \(a=b=0\) quindi
In Python:
import sympy as sp
a, b = sp.symbols('a,b')
v1=sp.Matrix([1,0])
v2=sp.Matrix([0,1])
equazione = a*v1 + b*v2 # l'epressione si pone = 0
sp.solve(equazione, a, b)
{a: 0, b: 0}
Esercizio (3) preso da YouMath.
Determinare se \(p_1(x)=1 + x^2\) e \(p_2(x)=3+x\) sono linearmente indipendenti. Soluzione: sì.
import sympy as sp
a, b = sp.symbols('a,b')
p1=sp.Matrix([1,0,1])
p2=sp.Matrix([3,1,0])
equazione = a*p1 + b*p2
sp.solve(equazione, a, b)
{a: 0, b: 0}
Quind se l'unica n-upla di scalari, che in combinazione lineare equivale al vettore nullo, comprende esclusivamente valori nulli. Se anche solo uno scalare non nullo può soddisfare l'uguaglianza "combinazione lineare" = "0" allora i vettori sono linearmente indipendenti.
Esercizio (4) preso da YouMath. Sia \(V = Mat(2,2,\mathbb{R})\), le due matrici \(A=\begin{bmatrix}0&1\\2&-3\end{bmatrix} B=\begin{bmatrix}0&-2\\-4&6\end{bmatrix}\) sono linearmente indipendenti?
Dobbiamo considerare sempre imporre:
\(aA+bB=O\) dove \(O\) è \(\begin{bmatrix}0&0\\0&0\end{bmatrix}\)
import sympy as sp
a, b = sp.symbols('a,b')
m1=sp.Matrix([[0,1], [2,3]])
m2=sp.Matrix([[0,-2],[-4,6]])
equazione = a*m1 + b*m2
sp.solve(equazione, a, b)
{a: 0, b: 0}
Quindi sono linearmente indipendenti.
Se \(n \ge 2\) vettori di uno spazio \(V\) sono linearmente dipendenti allora almeno uno di essi può essere espresso come combinazione iari a
unzion iassumibile
def indipendenzaLineare(vettori):
"""
Indicare i vettori nella forma p1=sp.Matrix([[1,0,1]])
e le matrici orizzontalizzate su una riga
"""
size = len(vettori)
def incognita(i):
return "_"+str(i)
incognite = {}
"""Definizione incognite"""
for i in range(size):
incognite["_"+str(i)] = sp.symbols("_"+str(i))
"""Combinazioni lineari delle coordinate dei vettori"""
combinazione_lineare = incognite[incognita(0)] * vettori[0].row(0)
for i in range(size-1):
k = i+1
combinazione_lineare = combinazione_lineare + incognite[incognita(k)] * vettori[k].row(0)
soluzione = sp.solve(combinazione_lineare, incognite)
for incognita in soluzione:
if soluzione[incognita] != 0:
print ("Non sono linearmente indipendenti")
return False
print("linearmente indipendenti")
return True
ercii a eerciziario \(v_1=(1,0,-1,1); v_2=(0,0,1,0);v_3=(-1,1,3,0);v_4=(2,4,2,5)\) Soluzione: solo linearmente indipendenti.
v1=sp.Matrix([[1,0,-1,1]])
v2=sp.Matrix([[0,0,1,0]])
v3=sp.Matrix([[-1,1,3,0]])
v4=sp.Matrix([[2,4,2,5]])
vettori = [v1,v2,v3,v4]
indipendenzaLineare(vettori)
linearmente indipendent