(%i2) eq : 2 * x - 3 * y + z = 5 $
sol : linsolve([ eq],[ x, y, z]) ;
(sol) [ x = 3 %r2 + %r1 5 2 , y = %r2 , z = %r1 ]

Observemos que nos aparecen los parámetros %rn, estos los tenemos en %rnum_list, así podremos hacer mención de ellos aunque estos cambien en cada ejecución.

Expresemos las soluciones en forma matricial.
Un punto de la variedad lineal solución del sistema sería el dado con los parámetros igual a cero:

(%i3) P : ev([ x, y, z], ev( sol, %rnum_list[ 1] = 0, %rnum_list[ 2] = 0)) ;
(P) [ 5 2 , 0 , 0 ]

Los vectores del espacio director de la variedad intersección son:

(%i5) v : ev([ x, y, z], ev( sol, %rnum_list[ 1] = 1, %rnum_list[ 2] = 0)) - P ;
u : ev([ x, y, z], ev( sol, %rnum_list[ 1] = 0, %rnum_list[ 2] = 1)) - P ;
(v) [ 1 2 , 0 , 1 ] (u) [ 3 2 , 1 , 0 ]

La forma matricial es: (multiplicamos los vectores para quitar la parte fraccionaria)

(%i6) print( matrix([ x],[ y],[ z]), "=", transpose( matrix( P)), "+ λ",
   transpose( 2 * matrix( v)), "+ μ",
   transpose( 2 * matrix( u))) $ ;
[ x y z ] = [ 5 2 0 0 ] + λ [ 1 0 2 ] + μ [ 3 2 0 ]

(a,1,-2) pertence al subespacio director Gen{(-1,0,2),(3,2,0)} si el rango de la matriz cuyas filas son los {(a,1,-2),(-1,0,2),(3,2,0)} es dos; es decir,

(%i7) solve( determinant( matrix([ a, 3, 1], v, u)), a) ;
(%o7) [ a = 4 ]

Created with wxMaxima.