Formula del cambiamento di base per applicazioni lineari

Partendo da una matrice associata \(A_F^{\beta_V, \beta_W}\) si pone lo scopo di trovare la matrice associata rispetto ad altre basi del dominio/codominio: \(A_F^{\beta'_V, \beta'_W}\).

Si considerano inoltre le due matrici di cambiamento (vedi sezione "Matrice di cambiamento di base") \(M_{\beta_V->\beta'_V}\) e \(M_{\beta_W->\beta'_W}\).

Vedi link lezione per i passaggi effettuati al fine di arrivare alla formula (basandosi sulle definizioni di Matrice di cambiamento di base e Matrice rappresentativa di una trasformazione lineare):

\(A_F^{\beta'_V, \beta'_W} = M_{\beta_W->\beta'_W} \cdot A_F^{\beta_V, \beta_W} \cdot (M_{\beta_V->\beta'_V})^{-1}\)

in soldoni: la matrice associata alle basi \(\beta'_V\) e \(\beta'_W\) è uguale alla matrice di cambiamento di base in \(W\) per la matrice associata delle basi \(\beta_V\) e \(\beta_W\) per l'inversa della matrice di cambiamento di base in \(V\).

Nel caso di endomorfismo si ha:

\(A_F^{\beta'} = M_{\beta->\beta'} \cdot A_F^{\beta} \cdot (M_{\beta->\beta'})^{-1}\)

Le rispettive matrici associate sono matrici simili.

Funzione riassumibile

Basta trovare le matrici di cambiamento di base dei rispettivi spazi, e la matrice associata alle basi di partenza, per poi metterle insieme nella formula.

def matriceCambiamentoBaseApplicazioneLineare(b0_v, b1_v, b0_w, b1_w, definizione=None, preimmagini=None, immagini=None, incognite=[]):

    matrice_associata = None

    if definizione is not None:
        matrice_associata = matriceAssociataDaFormaEsplicita(definizione, b0_v, b0_w, incognite)
    elif preimmagini is not None and immagini is not None:
        matrice_associata = matriceAssociataDaImmaginiVettori(preimmagini, immagini, b0_v, b0_w)
    else:
        raise Exception("Parametri errati per la funzione matriceCambiamentoBaseApplicazioneLineare")

    matrice_cambiamento_w = matriceCambiamentoBase(b0_w, b1_w)
    matrice_cambiamento_v = matriceCambiamentoBase(b0_v, b1_v)

    return matrice_cambiamento_w*matrice_associata*(matrice_cambiamento_v**-1)

Esempio con app. lineare definita esplicitamente

x,y,z = sp.symbols("x y z")

b0_v = sp.Matrix([[1,0,0],[0,1,0],[0,0,1]])
b1_v = sp.Matrix([[0,2,1],[1,-1,0],[2,0,3]])

b0_w = sp.Matrix([[1,0],[0,1]])
b1_w = sp.Matrix([[-1,1],[2,-5]])

definizione_app_lineare = [x+y-z,x-2*y]

matrice_cambiamento_base = matriceCambiamentoBaseApplicazioneLineare(b0_v, b1_v, b0_w, b1_w, definizione=definizione_app_lineare, incognite=[x,y,z])
print(matrice_cambiamento_base)

Matrix([[1, -2, 1/3], [1, -1, -1/3]])

Come da esercizio.

Esempio con endomorfismo

x,y,z = sp.symbols("x y z")

b0_v = sp.Matrix([[1,0,0],[0,1,0],[0,0,1]])
b1_v = sp.Matrix([[1,1,0],[0,1,1],[1,1,1]])

b0_w = b0_v
b1_w = b1_v

definizione_app_lineare = [2*x-y+z,3*z,x+y]

matrice_cambiamento_base = matriceCambiamentoBaseApplicazioneLineare(b0_v, b1_v, b0_w, b1_w, definizione=definizione_app_lineare, incognite=[x,y,z])
print(matrice_cambiamento_base)

Matrix([[-2, 2, 1], [-1, 3, 1], [3, -2, 1]])

Come da esercizio.

Riferimenti

  • https://www.youmath.it/lezioni/algebra-lineare/applicazioni-lineari/764-formula-del-cambiamento-di-base.html