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.
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)
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.
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.