7. Matriz identidad y matriz nula

La matriz nula es el elemento neutro de la suma y la matriz identidad es el elemento neutro de la multiplicación. Ambas permiten expresar propiedades, inicializar algoritmos y comprobar operaciones matriciales.

7.1 Introducción

En la aritmética, sumar cero no modifica un número y multiplicar por uno tampoco lo modifica. El álgebra de matrices posee estructuras que cumplen papeles semejantes: la matriz nula y la matriz identidad.

Estas matrices aparecen al expresar propiedades, resolver ecuaciones, calcular inversas, definir potencias e inicializar algoritmos. Sin embargo, su orden debe ser compatible con las matrices que participan en cada operación.

A + O = A
AI = IA = A, cuando las dimensiones son compatibles

7.2 ¿Qué es una matriz nula?

Una matriz nula, también llamada matriz cero, es aquella cuyos elementos son todos iguales a cero. Puede ser cuadrada o rectangular.

O2×3 = [ 0   0   0 ]
        [ 0   0   0 ]

El subíndice 2 × 3 indica su orden. Es importante especificarlo porque existen matrices nulas de cualquier dimensión.

7.3 Notación y dimensiones de la matriz nula

La matriz nula suele representarse con O o con un cero destacado. Cuando el contexto no determina su tamaño, se agrega el orden como subíndice.

Notación Orden Cantidad de ceros
O1×3 1 × 3 3
O2×2 2 × 2 4
O3×1 3 × 1 3
O4×5 4 × 5 20

Dos matrices nulas de órdenes diferentes no son iguales y no siempre pueden participar en la misma operación.

7.4 Crear una matriz nula en JavaScript

Podemos construir una matriz nula rectangular indicando su cantidad de filas y columnas.

function crearMatrizNula(filas, columnas) {
  return Array.from({ length: filas }, () =>
    Array.from({ length: columnas }, () => 0)
  );
}

const O23 = crearMatrizNula(2, 3);

console.log(O23);

Cada fila se crea de forma independiente, evitando referencias compartidas entre los arreglos internos.

7.5 Reconocer una matriz nula

Para verificar que una matriz sea nula debemos comprobar todos sus elementos.

function esMatrizNula(matriz) {
  return matriz.length > 0 && matriz.every(fila =>
    fila.length > 0 && fila.every(valor => valor === 0)
  );
}

console.log(esMatrizNula([[0, 0], [0, 0]]));
console.log(esMatrizNula([[0, 0], [0, 1]]));

Encontrar muchos ceros no es suficiente: un solo elemento distinto de cero impide que la matriz sea nula.

7.6 Elemento neutro de la suma

La matriz nula es el elemento neutro de la suma matricial. Si O tiene el mismo orden que A, entonces:

A + O = O + A = A
function sumarMatrices(A, B) {
  return A.map((fila, i) =>
    fila.map((valor, j) => valor + B[i][j])
  );
}

const A = [[2, 5, 1], [4, 3, 7]];
const O = [[0, 0, 0], [0, 0, 0]];

console.log(sumarMatrices(A, O));

Cada elemento aij se suma con cero, por lo que conserva su valor.

7.7 Multiplicación relacionada con la matriz nula

Multiplicar cualquier matriz por el escalar cero produce una matriz nula del mismo orden.

0A = O
const A = [[2, 5], [4, 3]];

const O = A.map(fila =>
  fila.map(valor => 0 * valor)
);

console.log(O);

También, si las dimensiones permiten realizar el producto, una matriz multiplicada por una matriz nula produce otra matriz nula: AO = O y OA = O, con el orden correspondiente al resultado.

7.8 ¿Qué es una matriz identidad?

Una matriz identidad es una matriz cuadrada que tiene unos en la diagonal principal y ceros en todas las demás posiciones.

I3 = [ 1   0   0 ]
      [ 0   1   0 ]
      [ 0   0   1 ]

El subíndice indica el orden. La matriz I3 es 3 × 3 y la matriz In es n × n.

7.9 Matrices identidad de distintos órdenes

Notación Representación Orden
I1 [[1]] 1 × 1
I2 [[1, 0], [0, 1]] 2 × 2
I3 [[1, 0, 0], [0, 1, 0], [0, 0, 1]] 3 × 3

No existe una matriz identidad rectangular no cuadrada en el sentido habitual del elemento neutro bilateral de la multiplicación.

7.10 Crear una matriz identidad en JavaScript

Cada posición de la diagonal cumple fila = columna. Esa condición permite generar la matriz.

function crearIdentidad(orden) {
  return Array.from({ length: orden }, (_, fila) =>
    Array.from({ length: orden }, (_, columna) =>
      fila === columna ? 1 : 0
    )
  );
}

console.log(crearIdentidad(4));

7.11 Reconocer una matriz identidad

La validación exige comprobar que la matriz sea cuadrada, que la diagonal contenga unos y que las demás posiciones contengan ceros.

function esIdentidad(matriz) {
  const n = matriz.length;
  if (!n || !matriz.every(fila => fila.length === n)) return false;

  return matriz.every((fila, i) =>
    fila.every((valor, j) =>
      valor === (i === j ? 1 : 0)
    )
  );
}

console.log(esIdentidad([[1, 0], [0, 1]]));
console.log(esIdentidad([[1, 0], [1, 1]]));

7.12 Elemento neutro de la multiplicación

La matriz identidad es el elemento neutro de la multiplicación matricial. Si A es una matriz de orden m × n, se utilizan identidades de órdenes diferentes a cada lado:

ImA = A
AIn = A
function multiplicar(A, B) {
  return A.map(fila =>
    B[0].map((_, j) =>
      fila.reduce((suma, valor, k) => suma + valor * B[k][j], 0)
    )
  );
}

const A = [[2, 5, 1], [4, 3, 7]];
const I2 = [[1, 0], [0, 1]];
const I3 = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];

console.log(multiplicar(I2, A));
console.log(multiplicar(A, I3));

La matriz A es 2 × 3. Por eso se multiplica por I2 a la izquierda y por I3 a la derecha.

7.13 La identidad como transformación

Al multiplicar un vector por la matriz identidad, sus componentes no cambian. Geométricamente, representa la transformación que deja cada punto exactamente donde estaba.

Iv = v
function matrizPorVector(A, vector) {
  return A.map(fila =>
    fila.reduce((suma, valor, j) => suma + valor * vector[j], 0)
  );
}

const I3 = [[1, 0, 0], [0, 1, 0], [0, 0, 1]];
const posicion = [8, -2, 5];

console.log(matrizPorVector(I3, posicion));

En gráficos, la identidad puede utilizarse como estado inicial antes de acumular rotaciones, escalados u otras transformaciones.

7.14 Relación con la matriz inversa

La inversa de una matriz cuadrada A es una matriz A-1 que, al multiplicarse por A, produce la identidad.

AA-1 = A-1A = I

No todas las matrices cuadradas tienen inversa. Cuando existe, la identidad permite comprobar el resultado del cálculo.

function multiplicar2x2(A, B) {
  return [
    [A[0][0] * B[0][0] + A[0][1] * B[1][0],
     A[0][0] * B[0][1] + A[0][1] * B[1][1]],
    [A[1][0] * B[0][0] + A[1][1] * B[1][0],
     A[1][0] * B[0][1] + A[1][1] * B[1][1]]
  ];
}

const A = [[2, 0], [0, 4]];
const inversa = [[0.5, 0], [0, 0.25]];

console.log(multiplicar2x2(A, inversa));

7.15 Potencias de matrices

Para una matriz cuadrada A, la potencia Ak representa la multiplicación repetida de A por sí misma. Por convenio, la potencia cero se define como la identidad del mismo orden.

A0 = I
A1 = A
A2 = AA
A3 = AAA

La identidad permite iniciar algoritmos que calculan potencias acumulando productos sin alterar el primer resultado.

7.16 Uso como valores iniciales

Los elementos neutros son útiles para inicializar acumuladores.

  • Para acumular una suma de matrices, se comienza con una matriz nula del orden adecuado.
  • Para acumular un producto de matrices cuadradas, se comienza con una matriz identidad.
  • Para construir una transformación compuesta, se parte de la identidad y se incorporan transformaciones.
function crearIdentidad(orden) {
  return Array.from({ length: orden }, (_, i) =>
    Array.from({ length: orden }, (_, j) => i === j ? 1 : 0)
  );
}

const acumuladorProducto = crearIdentidad(3);
const acumuladorSuma = Array.from({ length: 3 }, () => [0, 0, 0]);

console.log(acumuladorProducto);
console.log(acumuladorSuma);

7.17 Comparaciones con números decimales

Los cálculos con números de punto flotante pueden producir pequeñas diferencias de redondeo. Después de varias operaciones, un valor esperado como cero podría ser 0.0000000001.

En esos casos conviene comparar con una tolerancia en lugar de exigir igualdad exacta.

function esIdentidadAproximada(matriz, tolerancia = 1e-9) {
  const n = matriz.length;
  if (!n || !matriz.every(fila => fila.length === n)) return false;

  return matriz.every((fila, i) =>
    fila.every((valor, j) => {
      const esperado = i === j ? 1 : 0;
      return Math.abs(valor - esperado) <= tolerancia;
    })
  );
}

const casiIdentidad = [[1, 1e-12], [-1e-12, 1]];
console.log(esIdentidadAproximada(casiIdentidad));

7.18 Errores frecuentes

  • Confundir una matriz nula con una matriz vacía.
  • Olvidar que la matriz nula debe tener el mismo orden para poder sumarse con A.
  • Considerar identidad a una matriz que tiene unos en la diagonal pero valores no nulos fuera de ella.
  • Intentar construir una matriz identidad rectangular no cuadrada.
  • Usar una identidad de orden incorrecto al multiplicar una matriz rectangular.
  • Suponer que toda matriz cuadrada tiene inversa.
  • Comparar resultados decimales con la identidad usando siempre igualdad exacta.
  • Concluir que A u O deben ser nulas solamente porque un producto de matrices da cero.
En matrices puede ocurrir AB = O aunque A y B no sean matrices nulas.

7.19 Qué debes recordar de este tema

  • La matriz nula tiene todos sus elementos iguales a cero y puede tener cualquier orden.
  • La matriz nula es el elemento neutro de la suma: A + O = A.
  • La matriz identidad es cuadrada, tiene unos en la diagonal y ceros fuera de ella.
  • La identidad es el elemento neutro de la multiplicación.
  • Para A de orden m × n, se cumple ImA = A y AIn = A.
  • La inversa satisface AA-1 = A-1A = I.
  • Por convenio, A0 = I para una matriz cuadrada.
  • En cálculos decimales puede ser necesario comparar con una tolerancia.

7.20 Conclusión

La matriz nula y la matriz identidad trasladan a las matrices las ideas de cero y uno como elementos neutros. Su orden y posición dentro de una operación son esenciales para conservar la compatibilidad de dimensiones.

En el próximo tema estudiaremos las matrices diagonales, triangulares y simétricas, estructuras que aprovechan la ubicación especial de sus elementos.