Determinazione delle coordinate cartesiane di uno spazio vettoriale individuato da un sistema di generatori (rappresentazione cartesiana dello spazio).
Disporre i vettori del sistema di generatori in colonne su una matrice \(A\) (incompleta) e su una matrice \(A|x\) (completa) a cui si aggiunge le colonna di incognite \((x_1, x_2, ..., x_n)\) (es. \(x, y, z\) per un sottospazio di \(\mathbb{R}^3\)).
Dato il sottospazio vettoriale generato:
\(S = Span(v_1, v_2, v_3) \in \mathbb{R}^3\)
dove \(v_1 = (1,2,1), v_2 = (3,2,2), v_3=(5,6,4)\) determinare un sistema di equazioni cartesiane che individui tutti e soli i vettori di \(S\).
La soluzione data da YouMath è:
\(\{(x,y,z) \in \mathbb{R}^3 t.c. -\frac{1}{2}x - \frac{1}{4}y + z = 0\}\)
Passaggi in Python:
import sympy as sp
import numpy as np
x,y,z = sp.symbols('x y z')
symbolic_vars = [x, y, z]
ax_sp = sp.Matrix([[1,3,5,x], [2,2,6, y], [1,2,4,z]])
ax = np.array(ax_sp.tolist())
# riduzione gaussiana
ax_p = upper_triangular(ax)
print(ax_p)
[[1 3 5 x] [0 1 1 x/2 - y/4] [0 0 0 -x/2 - y/4 + z]]
La matrice incompleta ridotta \(A'\) è:
# tolgo l'ultima colonna delle soluzioni
a_p = np.delete(ax_p, np.s_[-1:], axis=1)
print(a_p)
[[1 3 5] [0 1 1] [0 0 0]]
Ha quindi due pivot (1,1) e quindi rango = 2. Bisogna porre tale anche il rango di \(A|x\) quindi si pone \(-\frac{1}{2}x-\frac{1}{4}y+z=0\)
print(ax_p[2][3])
-x/2 - y/4 + z
Questa è l'equazione.
Esistono diverse metodologie Python che sono anche comparate in termini di performance.