35. Base y dimensión de un espacio vectorial

Una base es un conjunto mínimo de direcciones independientes capaz de generar todo un espacio. La cantidad de vectores de una base determina la dimensión.

35.1 Introducción

Para describir un espacio vectorial buscamos un conjunto de vectores que permita construir todos sus elementos sin incluir información redundante.

Ese conjunto se denomina base. Una base funciona como un sistema de coordenadas: cada vector del espacio queda representado por una lista única de escalares.

Una base combina alcance completo e independencia lineal.

35.2 Definición de base

Un conjunto ordenado B = {b1, ..., bn} es una base de un espacio vectorial V si cumple dos condiciones:

  1. Generación: gen(B) = V.
  2. Independencia: los vectores de B son linealmente independientes.
Si falta...Consecuencia
GeneraciónHay vectores de V que no pueden representarse
IndependenciaLas representaciones no son únicas y hay redundancia

35.3 Condición de generación

B genera V cuando todo vector v de V puede escribirse como combinación lineal:

v = c1b1 + ... + cnbn
const b1 = [1, 0];
const b2 = [0, 1];
const coordenadas = [4, -3];
const v = b1.map((_, i) =>
  coordenadas[0] * b1[i] + coordenadas[1] * b2[i]
);

console.log(v); // [4, -3]

Si algún vector del espacio queda fuera del conjunto generado, B no es una base de todo V.

35.4 Condición de independencia

Los vectores de B deben satisfacer:

c1b1 + ... + cnbn = 0 ⇒ c1 = ... = cn = 0

Si uno de los vectores puede construirse con los demás, puede eliminarse sin reducir el espacio generado. El conjunto original era redundante.

const b1 = [1, 0];
const b2 = [0, 1];
const redundante = [1, 1];

const diferencia = redundante.map(
  (valor, i) => valor - b1[i] - b2[i]
);
console.log(diferencia); // [0, 0]

35.5 Bases canónicas

La base canónica de ℝn contiene los vectores con un 1 en una posición y ceros en las demás.

2: {(1, 0), (0, 1)}
3: {(1, 0, 0), (0, 1, 0), (0, 0, 1)}
function baseCanonica(dimension) {
  return Array.from({ length: dimension }, (_, i) =>
    Array.from({ length: dimension }, (_, j) => Number(i === j))
  );
}

console.log(baseCanonica(3));
// [[1,0,0], [0,1,0], [0,0,1]]

35.6 Coordenadas respecto de una base

Si B = (b1, ..., bn) es una base y v = c1b1 + ... + cnbn, las coordenadas de v en B son:

[v]B = (c1, ..., cn)

El orden de los vectores de la base importa, porque determina el orden de las coordenadas.

function reconstruir(base, coordenadas) {
  return base[0].map((_, componente) =>
    base.reduce(
      (suma, vector, i) => suma + coordenadas[i] * vector[componente],
      0
    )
  );
}

console.log(reconstruir([[1, 0], [0, 1]], [5, -2])); // [5, -2]

35.7 Unicidad de las coordenadas

La independencia garantiza que un vector no puede tener dos representaciones distintas en la misma base.

Si v tuviera coeficientes ci y di, al restar las expresiones se obtendría:

(c1 − d1)b1 + ... + (cn − dn)bn = 0

Por independencia, cada diferencia es cero y ambas listas de coordenadas coinciden.

35.8 Ejemplo con una base no canónica

Sea B = {(1, 1), (1, −1)}. Para representar v = (4, 2), buscamos a y b tales que:

a(1, 1) + b(1, −1) = (4, 2)
a + b = 4,   a − b = 2
a = 3,   b = 1

Por tanto, [v]B = (3, 1).

function coordenadasEnBaseEspecial([x, y]) {
  return [(x + y) / 2, (x - y) / 2];
}

const coordenadas = coordenadasEnBaseEspecial([4, 2]);
console.log(coordenadas); // [3, 1]
console.log([coordenadas[0] + coordenadas[1], coordenadas[0] - coordenadas[1]]);
// [4, 2]

35.9 Definición de dimensión

Si V tiene una base finita, su dimensión es la cantidad de vectores de cualquier base de V:

dim(V) = cantidad de vectores de una base de V

Todas las bases de un mismo espacio vectorial finito tienen exactamente la misma cantidad de elementos, aunque sus vectores sean diferentes.

35.10 Ejemplos de dimensiones

EspacioUna baseDimensión
nBase canónican
Recta por el origen en ℝ3Un vector director no nulo1
Plano por el origen en ℝ3Dos vectores directores independientes2
Pn{1, x, ..., xn}n + 1
Mm×nMatrices con un único 1mn
{0}Conjunto vacío0

35.11 Un espacio tiene muchas bases

La base canónica no es la única. En ℝ2, cualquier par de vectores no paralelos constituye una base.

function esBaseR2([u, v], tolerancia = 1e-10) {
  const determinante = u[0] * v[1] - v[0] * u[1];
  return Math.abs(determinante) > tolerancia;
}

console.log(esBaseR2([[1, 1], [1, -1]])); // true
console.log(esBaseR2([[1, 2], [2, 4]]));  // false

Elegir una base adaptada al problema puede simplificar coordenadas y cálculos.

35.12 Cantidad de vectores e independencia

Si dim(V) = n:

  • Todo conjunto independiente tiene como máximo n vectores.
  • Todo conjunto generador tiene como mínimo n vectores.
  • Cualquier conjunto de n vectores independientes ya es una base.
  • Cualquier conjunto de n vectores que genera V ya es una base.
Una base contiene exactamente la cantidad necesaria de vectores: ni faltan direcciones ni hay redundancia.

35.13 Extraer una base de un conjunto generador

Si un conjunto genera un espacio pero es dependiente, pueden eliminarse vectores redundantes hasta conservar una base.

  1. Colocar los vectores como columnas de A.
  2. Escalonar A.
  3. Identificar las columnas pivote.
  4. Elegir las columnas correspondientes de la matriz original.
Se toman columnas de la matriz original, no de la matriz escalonada.

35.14 Columnas pivote en JavaScript

La función siguiente devuelve los índices de las columnas pivote y una base del espacio columna.

function baseDelEspacioColumna(A, tolerancia = 1e-10) {
  const m = A.map(fila => [...fila]);
  const filas = m.length;
  const columnas = m[0]?.length ?? 0;
  const pivotes = [];
  let filaPivote = 0;

  for (let columna = 0; columna < columnas && filaPivote < filas; columna++) {
    let mejor = filaPivote;
    for (let fila = filaPivote + 1; fila < filas; fila++) {
      if (Math.abs(m[fila][columna]) > Math.abs(m[mejor][columna])) mejor = fila;
    }
    if (Math.abs(m[mejor][columna]) <= tolerancia) continue;
    [m[filaPivote], m[mejor]] = [m[mejor], m[filaPivote]];

    for (let fila = filaPivote + 1; fila < filas; fila++) {
      const factor = m[fila][columna] / m[filaPivote][columna];
      for (let j = columna; j < columnas; j++) {
        m[fila][j] -= factor * m[filaPivote][j];
      }
    }
    pivotes.push(columna);
    filaPivote++;
  }

  const base = pivotes.map(columna => A.map(fila => fila[columna]));
  return { pivotes, base, dimension: pivotes.length };
}

const A = [[1, 2, 3], [0, 1, 1], [1, 3, 4]];
console.log(baseDelEspacioColumna(A));

35.15 Completar un conjunto independiente

Un conjunto independiente que todavía no genera V puede ampliarse agregando vectores que aporten nuevas direcciones hasta formar una base.

En ℝ3, {(1, 0, 0), (0, 1, 0)} es independiente pero solo genera el plano xy. Agregar (0, 0, 1) completa una base.

const parcial = [[1, 0, 0], [0, 1, 0]];
const nuevaDireccion = [0, 0, 1];
const baseCompleta = [...parcial, nuevaDireccion];

console.log(baseCompleta.length); // 3

35.16 Base de un subespacio

El plano W = {(x, y, z) : z = x + y} puede parametrizarse como:

(x, y, x + y) = x(1, 0, 1) + y(0, 1, 1)

Los dos vectores son independientes, por lo que forman una base de W y dim(W) = 2.

const basePlano = [[1, 0, 1], [0, 1, 1]];
function puntoDelPlano(x, y) {
  return basePlano[0].map(
    (valor, i) => x * valor + y * basePlano[1][i]
  );
}

console.log(puntoDelPlano(3, 4)); // [3, 4, 7]

35.17 Bases de polinomios y matrices

Los conceptos no se limitan a flechas geométricas. P2 tiene base {1, x, x2} y dimensión 3. M2×2 tiene dimensión 4.

const baseMatrices2x2 = [
  [[1, 0], [0, 0]],
  [[0, 1], [0, 0]],
  [[0, 0], [1, 0]],
  [[0, 0], [0, 1]]
];

const coordenadas = [2, -1, 3, 4];
const matriz = [
  [coordenadas[0], coordenadas[1]],
  [coordenadas[2], coordenadas[3]]
];
console.log(baseMatrices2x2.length, matriz); // 4, [[2,-1],[3,4]]

35.18 Cambio de coordenadas, aplicaciones y errores

Si la matriz P tiene como columnas los vectores de una base B expresados en coordenadas canónicas, entonces:

v = P[v]B
[v]B = P-1v
const P = [[1, 1], [1, -1]]; // columnas de la base
const coordenadasB = [3, 1];
const v = P.map(fila =>
  fila.reduce((suma, valor, i) => suma + valor * coordenadasB[i], 0)
);

console.log(v); // [4, 2]

Las bases se usan para comprimir representaciones, adaptar coordenadas a un problema y describir transformaciones. Errores frecuentes son verificar solo generación o solo independencia, confundir dimensión con cantidad de componentes de un objeto, ignorar el orden de la base y elegir columnas escalonadas en vez de las originales.

35.19 Qué debes recordar de este tema

  • Una base genera todo el espacio y es linealmente independiente.
  • Cada vector tiene coordenadas únicas respecto de una base ordenada.
  • La dimensión es la cantidad de vectores de cualquier base.
  • Un espacio puede tener muchas bases, pero todas poseen igual tamaño.
  • En dimensión n, n vectores independientes forman una base.
  • Las columnas pivote originales permiten extraer una base del espacio columna.
  • Un conjunto independiente puede completarse hasta formar una base.
  • Para cambiar coordenadas se utiliza la matriz formada por los vectores de la base.

35.20 Conclusión

Una base proporciona las direcciones esenciales de un espacio, mientras que la dimensión cuenta cuántas son necesarias. Las coordenadas convierten cualquier vector en una lista única respecto de esas direcciones.

En el próximo tema estudiaremos transformaciones lineales, funciones que preservan las combinaciones lineales y pueden describirse a partir de su acción sobre una base.