Stabilire se un insieme di vettori è linearmente indipendente

  • Se si ha 1 solo vettore è linearmente indipendente se diverso dal vettore nullo \(0_V\) (0 dello spazio vettoriale).
  • Un insieme di vettori (due o più) sono linearmente indipendenti 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 dipendenti. Gli scalari possono essere messi come colonna di matrice affiancata a quelle dei vettori, ponendo l'uguaglianza al vettore nullo come sistema lineare omogeneo e ottenendo la matrice completa \(A|0\). I sistemi lineari omogenei sono sempre compatibili, se prevedono 1 sola soluzione (ossia A = 0, la soluzione banale) allora i vettori sono linearmente indipendenti. Per il teorema di Rouche Capelli ciò accade se \(rk(A) = rk(A|0) = n\) (cardinalità dell'insime dei vettori presi in considerazione). Essendo che \(A|0\) aggiunge una colonna di zeri si sa già che \(rk(A) = rk(A|0)\) quindi di base è sufficiente:
  • trasformare la combinazione lineare in sistema lineare omogeneo eseguendo i calcoli (prodotto scalare x vettore e somma tra vettori) arrivando ad ottenere la matrice \(A\) (matrice incompleta)
  • calcolare \(rk(A)\) (linalg.matrix_rank) - se \(rk(A) = n\) i vettori sono linearmente indipendenti.

Esempio

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

  • Se si ha 1 solo vettore è linearmente indipendente se diverso dal vettore nullo (0 dello spazio vettoriale).
  • Un insieme di i vettori (due o più) sono linearmente indipendenti.

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}

Esempio in spazio polinomiale

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.

Esempio in spazio matriciale

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.

Teoremi

  • Il vettore nullo di qualsiasi spazio vettoriale \(V\) è linearmente indipendente.
  • Ogni vettore non nullo di uno spazio vettoriale \(V\) è linearmente indipendente.
  • Se tra i vettori \(v_1, v_2, .., v_n\) di uno spazio vettoriale \(V\) vi è il vettore nullo, allora gli n vettori sono linearmente indipendenti.
  • Se tra i vettori \(v_1, v_2, .., v_n\) di uno spazio vettoriale \(V\) ve ne sono \(k<n\) linearmente dipendenti, sono dipendenti tutti gli \(n\) vettori.
  • 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

Riferimenti

  • https://www.youmath.it/lezioni/algebra-lineare/matrici-e-vettori/568-indipendenza-lineare-tra-vettori.html