Espacios vectoriales. Ortogonalizacioón de Gram-Schmidt

Práctica de Álgebra  Lineal, E.U.A.T., Curso 2005-2006

En esta práctica se explica cómo resolver con Mathematica algunos problemas comunes que aparecen al estudiar espacios vectoriales.

Dependencia e independencia lineal de vectores

Dado un conjunto de vectores, ¿cómo ver si son linealmente independientes o no?

Un ejemplo

Por ejemplo, supongamos que tenemos los vectores (1,1,0), (0,1,0). ¿Son linealmente independientes? (Es fácil de ver a ojo, pero hagámoslo con el ordenador como ejemplo.) Si escribimos la matriz formada por esos vectores (puestos en filas o en columnas, no importa), entonces el número de vectores independientes es el rango de la matriz. Sabemos calcular el rango de la matriz de otras prácticas:

M1  =  {{1, 1, 0}, {0, 1, 0}}

MatrixForm[RowReduce[M1]]

El rango de esta matriz es 2, luego los dos vectores del principio son linealmente independientes (si el rango fuera menor que 2, eso nos diría que no lo son).

Otro ejemplo

Los vectores (1,1,0), (0,1,0), (1,2,0), ¿son linealmente independientes?
Para contestar esto hacemos lo mismo que antes:

M2 = {{1, 1, 0}, {0, 1, 0}, {1, 2, 0}}

MatrixForm[RowReduce[M2]]

El rango de esta matriz es 2, no 3, luego los tres vectores del principio no son linealmente independientes. Además, sabemos del ejemplo anterior que los dos primeros vectores sí son independientes, así que debe ocurrir que (1,2,0) sea una combinación lineal de los otros dos. De hecho es fácil ver que el tercero es la suma de los dos primeros. (Observa que en este ejemplo cualquier par de vectores es linealmente independiente, pero siempre podemos escribir el otro como combinación lineal de los dos que se escojan.)

Nota: la orden RowReduce puede cambiar el orden de las filas de la matriz de partida y por eso no sirve directamente para decidir cuáles de los vectores iniciales son independientes.

Cambio de base

Si tenemos la coordenadas de un vector en una base B1, ¿cómo podemos saber las coordenadas del mismo vector en otra base B2? Una forma de hacerlo es usar la matriz de cambio de base de B1 a B2, que es la matriz que tiene por columnas las coordenadas de los vectores de B1 en la base B2.

Un ejemplo

Consideramos la base B={(-1,0,1), (1,-1,0), (1,1,-1)}.

a) ¿Cuál es la matriz de cambio de base de B a la base canónica?

En este caso, como los vectores de B ya están dados en coordenadas de la base canónica, la matriz de cambio de base se forma poniendo por columnas los vectores de B:

CambioBaBC  =  
      Transpose[{{-1, 0, 1}, {1, -1, 0}, {1, 1, -1}}]

MatrixForm[CambioBaBC]

b) ¿Cuál es la matriz de cambio de base de la base canónica a B?

Este cambio de base es el contrario, luego su matriz de cambio de base es la inversa de la anterior:

CambioBCaB  =  Inverse[CambioBaBC]

MatrixForm[CambioBCaB]

Otro ejemplo

Consideramos las bases B1 = {(1,0,1), (0,1,1), (1,1,0)} y B2 = {(2,1,3), (0,1,0), (2,0,0)}.

a) Determinar la matriz de cambio de base de B1 a B2.

Podemos calcular esta matriz usando lo siguiente (BC representa la base canónica):

Matriz de cambio de B1 a B2 = (Matriz de cambio de BC a B2) . (Matriz de cambio de B1 a BC)

B1 = {{1, 0, 1}, {0, 1, 1}, {1, 1, 0}};
B2 = {{2, 1, 3}, {0, 1, 0}, {2, 0, 0}};

CambioB1aB2  =  Inverse[Transpose[B2]] . Transpose[B1]

MatrixForm[CambioB1aB2]

b) Determinar las coordenadas respecto de la base B2 del vector v con coordenadas (1,2,3) en la base B1.

Estas coordenadas se hallan fácilmente usando la matriz de cambio de base que obtuvimos antes:

CambioB1aB2 . {1, 2, 3}

c) Determinar la matriz de cambio de base de B2 a B1.

Este cambio de base es el contrario al que hallamos antes, luego su matriz es la inversa:

CambioB2aB1  =  Inverse[CambioB1aB2]

MatrixForm[CambioB2aB1]

Ejercicio

Calcula la matriz de cambio de base de B2 a B1 como en el apartado b) anterior, sin usar la matriz de cambio de B1 a B2. (Comprueba que sale lo mismo que acabamos de obtener.)

Subespacios vectoriales

La orden RowReduce es interesante para el estudio de un subespacios vectorial del que conocemos un sistema de generadores,  ya que nos da la dimensión del subespacio y una base del mismo.

Ejemplo

Consideramos el subespacio de (R^4) generado por los vectores (1, 2, -1, 1), (0, 2, 4, 6), (3, 1, 1, 2), (2, 3, -1, 2). Para calcular su dimensión y una base suya formamos la matriz que tiene por filas estos vectores y le aplicamos RowReduce:

U = {{1, 2, -1, 1}, {0, 2, 4, 6}, {3, 1, 1, 2}, {2, 3, -1, 
          2}}

MatrixForm[RowReduce[U]]

Por tanto, la dimensión de U es 3 y una base suya es {(1,0,0,0), (0,1,0,1), (0,0,1,1)}.

Método de ortogonalización de Gram-Schmidt

Dada una base de (R^n)o de un subespacio suyo, es fácil calcular una base ortonormal del mismo espacio a partir de ella usando el proceso de ortogonalización de Gram-Schmidt que se estudia en teoría. Mathematica tiene órdenes que realizan este proceso automáticamente. Para poder usarlas es necesario ejecutar la siguiente órden, que carga en la memoria el paquete adecuado (cuidado con las comillas hacia atrás):

<< LinearAlgebra`Orthogonalization`

Ejemplo

Consideramos la base de (R^3) dada por B={(1,-1,0), (0,1,-1), (1,0,1)}. Le aplicamos el método de Gram-Schmidt para obtener a partir de ella una base ortonormal:

GramSchmidt[{{1, -1, 0}, {0, 1, -1}, {1, 0, 1}}]

Aproximación por mínimos cuadrados

En diversas situaciones prácticas es corriente disponer de un conjunto de datos experimentales y querer encontrar una función sencilla que se aproxime "lo mejor posible" a esos datos. Un posible criterio para decidir qué significa "lo mejor posible" viene dado por los ajustes por mínimos cuadrados. Veamos cómo usar Mathematica para encontrar la recta que mejor se aproxima a unos datos según este criterio (ajuste lineal por mínimos cuadrados) o la parábola que mejor se aproxima (ajuste cuadrático por mínimos cuadrados).

Ejemplo

Supongamos que tenemos los datos (1,4), (2,4), (3,5), (4,6). (Tal vez corresponden al número de visitantes de cierto museo en distintos días: el primer día, 4 visitantes; el segundo día, 4 visitantes...) Al conjunto de datos de que dispone uno a veces se le llama nube de puntos. Primero, introducimos los datos en dos vectores y los representamos:

x = {1, 2, 3, 4};
y = {4, 4, 5, 6};
n = Length[x];
a = Min[x];
b = Max[x];

datos = 
      ListPlot[Table[{x[[i]], y[[i]]},  {i, n}],  
        PlotStyle -> {PointSize[0.03], RGBColor[0, 0, 1]}]

Ajuste lineal

Para obtener la recta que mejor se aproxima a estos datos hacemos los siguiente (simplemente estamos siguiendo los cálculos que se deducen en teoría):

A1  =  
        Table[x[[i]]^(j - 1),  {i, n}, {j, 
            2}];
MatrixForm[A1]

a1 = Inverse[Transpose[A1] . A1] . (Transpose[A1] . y)

f1 = a1 . {1, z}

graf1 = 
        Plot[f1, {z, a, b}, DisplayFunction -> Identity, 
          PlotStyle -> {RGBColor[1, 0, 0]}];

Show[datos,  graf1]

Ajuste cuadrático

Obtenemos ahora la parábola que mejor se aproxima a los datos anteriores:

A2 = 
        Table[x[[i]]^(j - 1),  {i, n}, {j, 
            3}];
MatrixForm[A2]

a2 = Inverse[Transpose[A2] . A2] . (Transpose[A2] . y)

f2 = a2 . {1, z, z^2}

graf2 = 
      Plot[f2, {z, a, b},  DisplayFunction -> Identity,  
        PlotStyle -> {RGBColor[0, 1, 0]}]

Show[datos, graf2]

Show[datos, graf1, graf2]

Ejercicios

1- Decide si los siguientes conjuntos de vectores son linealmente independientes o no:
	a) {(1,2,0), (1,2,1), (1,-2,0)}
	b) {(3,4,0), (2,2,1), (1,2,2)}
	c) {(1,2,1,1), (1,1,2,2), (1,2,4,1)}
	d) {(1,2,1,2), (1,1,1,1), (2,2,5,6), (3,4,4,3)}

2- Los siguientes conjuntos, ¿son bases de (R^4)?
	a) {(1,2,3,5), (1,4,5,6), (5,6,7,8), (4,6,7,9)}
	b) {(-3,-1,0,0), (0,1,1,-1), (2,2,5,6), (3,4,4,3)}

3- Consideramos en (R^3) los conjuntos de vectores siguientes:
	(Subscript[B, 1])= {(1,1,1), (1,1,2), (1,2,3)},  (Subscript[B, 2])= {(2,1,2), (3,2,-5), (1,-1,1)}
	a) Comprobar que son bases de (R^3).
	b) Calcular la matriz de cambio de base de (Subscript[B, 1]) a (Subscript[B, 2]).
	c) Calcular la matriz de cambio de base de (Subscript[B, 2]) a (Subscript[B, 1]).
	d) Calcular las coordenadas en la base (Subscript[B, 1]) del vector cuyas coordenadas en (Subscript[B, 2]) son (1,1,3).
	e) Calcular una base ortonormal a partir de (Subscript[B, 1]).
	f) Calcular una base ortonormal a partir de (Subscript[B, 2]).

4- Calcular la dimensión y una base del subespacio vectorial de (R^4)generado por los vectores {(1,1,1,1), (1,0,0,1), (0,1,1,2), (0,1,0,0)}.

5- Calcular la mejor aproximación lineal y cuadrática or mínimos cuadrados para el conjunto de datos siguiente: (1,2), (4,6), (9,3), (12,2), (22,11). Representar gráficamente los datos junto con las dos aproximaciones consideradas.