La molteciplità algebrica di un autovalore definisce quante volte l'autovalore annulla il polinomio caratteristico. La molteplicità geometrica di \(\lambda_0\) indica la dimensione dell'autospazio relativo all'autovalore \(\lambda_0\) (cardinalità della base estratta come indicato nella sezione "Autovalori e autovettori di una matrice"). Con \(n\) = ordine della matrice quadrata, si indica con \(n-rk(A-\lambda_0Id_n)\)
\(1 \le molt. geometrica \le molt. algebrica \le n\) Quindi se la molteplicità algebrica è = 1 allora si sa già che quella geometrica è 1.
def autovaloriMolteplicita(A):
dimensione = A.shape[1]
eigenvals = A.eigenvals()
autovalori = list(eigenvals.keys())
molt_algebriche = list(eigenvals.values())
print("autovalori", autovalori)
basi_autospazi = []
molt_geometriche = []
""" Ricerva autospazi-autovettori-molt geometriche """
for l in autovalori:
"""Definizione incognite"""
incognite = {}
for i in range(dimensione):
incognite["_"+str(i)] = sp.symbols("_"+str(i))
"""matrice identit su autovalore"""
l1Id3 = sp.eye(dimensione)*l
print("matrice identit autovalore", l1Id3)
"""Vettore colonna incognite"""
v = sp.Matrix()
for i in range(dimensione):
v = v.row_insert(i, sp.Matrix([[incognite["_"+str(i)]]]))
matl1 = (A-l1Id3)*v
"""sistema e base da sistema"""
sistema = []
for i in range(dimensione):
sistema.append(matl1.row(i)[0])
base = baseDaSpazioSoluzioniSistema(sistema, list(incognite.values()))
basi_autospazi.append(base)
molt_geometriche.append(base.shape[0])
return {
"autovalori": autovalori,
"molteplicitaAlgebriche": molt_algebriche,
"basiAutospazi": basi_autospazi,
"molteplicitaGeometriche": molt_geometriche
}
\(A = \begin{bmatrix}0&1&0\\1&0&0\\0&0&1\end{bmatrix}\)
Attendo \(\lambda_0 = 1\) e \(\lambda_1=-1\) con rispettive molteplicità algebriche:
\(m_a(1)=2\) e \(m_a(-1)=1\)
e geometriche:
\(m_g(1)=2\) e \(m_g(-1)=1\)
A = sp.Matrix(([0,1,0], [1,0,0], [0,0,1]))
res = autovaloriMolteplicita(A)
pprint.pprint(res)
{'autovalori': [-1, 1], 'basiAutospazi': [Matrix([[1, -1, 0]]), Matrix([ [1, 1, 0], [0, 0, 1]])], 'molteplicitaAlgebriche': [1, 2], 'molteplicitaGeometriche': [1, 2]}
Come da esercizio.