Obtengamos la ecuaciones paramétricas de la variedad:

(%i5) eqS : matrix([ 1 + a + b, 2 + 3 * a - b],[ b, - 1 - a]) $
P : matrix([ 1, 2],[ 0, - 1]) $
v : ev( eqS, a = 1, b = 0) - P $
u : ev( eqS, a = 0, b = 1) - P $
print( "S=", "{", P, "+a", v, "+b", u, "}") $
S= { [ 1 2 0 1 ] +a [ 1 3 0 1 ] +b [ 1 1 1 0 ] }

Estas ecuaciones nos muestran los vectores directores. Verificamos que son base, es decir, linealmente independientes:

(%i7) Isom( m) : =[ m[ 1, 1], m[ 1, 2], m[ 2, 1], m[ 2, 2]] $
rank( matrix( Isom( v), Isom( u))) ;
(%o7) 2

Una vez verificado, ortogonalizamos la base:

(%i10) u1 : v $
u2 : u -(( mat_trace( transpose( u1). u)) / mat_trace(( transpose( u1). u1))) * u1 $
print( "Base ortogonal:", "{", u1, ",", u2, "}") $
0 errores, 0 advertencias Base ortogonal: { [ 1 3 0 1 ] , [ 13 11 5 11 1 2 11 ] }

Created with wxMaxima.