6. Matriz cuadrada y matriz rectangular

Una matriz cuadrada tiene igual cantidad de filas y columnas; una matriz rectangular tiene cantidades diferentes. Esta distinción determina qué operaciones pueden realizarse y qué tipo de transformación representa cada matriz.

6.1 Introducción

La cantidad de filas y columnas define la forma de una matriz. Entre las clasificaciones más importantes se encuentran las matrices cuadradas y las matrices rectangulares no cuadradas.

La diferencia parece sencilla, pero tiene consecuencias importantes. El determinante, la traza, la inversa y los valores propios se estudian para matrices cuadradas. Las matrices rectangulares, en cambio, son habituales al organizar conjuntos de datos o transformar vectores entre espacios de dimensiones diferentes.

Matriz cuadrada: m = n
Matriz rectangular no cuadrada: m ≠ n

6.2 ¿Qué es una matriz rectangular?

En sentido amplio, toda matriz forma un arreglo rectangular de filas y columnas. En este curso utilizaremos el nombre matriz rectangular para destacar el caso en que la cantidad de filas es diferente de la cantidad de columnas.

R = [ 1   2   3 ]
    [ 4   5   6 ]

Orden: 2 × 3
Dos filas y tres columnas

Una matriz rectangular puede tener más columnas que filas, como en el ejemplo, o más filas que columnas.

6.3 ¿Qué es una matriz cuadrada?

Una matriz cuadrada tiene la misma cantidad de filas y columnas. Su orden general es n × n.

A = [ 2   5   1 ]
    [ 4   3   7 ]
    [ 6   8   9 ]

Orden: 3 × 3

El número n recibe el nombre de orden de la matriz cuadrada. En este ejemplo decimos que A es una matriz cuadrada de orden 3.

function formaDeMatriz(matriz) {
  if (!matriz.length) return "vacía";

  const columnas = matriz[0].length;
  const esRegular = matriz.every(fila => fila.length === columnas);
  if (!esRegular) return "estructura irregular";

  return matriz.length === columnas ? "cuadrada" : "rectangular";
}

console.log(formaDeMatriz([[1, 2], [3, 4]]));
console.log(formaDeMatriz([[1, 2, 3], [4, 5, 6]]));

6.4 Comparación entre matrices cuadradas y rectangulares

Característica Matriz cuadrada Matriz rectangular
Dimensión n × n m × n, con m ≠ n
Filas y columnas Igual cantidad Distinta cantidad
Diagonal principal Recorre toda la matriz Existe, pero no cubre ambas dimensiones
Determinante Puede calcularse No se define
Inversa tradicional Puede existir No existe como inversa cuadrada
Uso frecuente Transformaciones dentro del mismo espacio Datos y transformaciones entre dimensiones diferentes

Que una matriz sea cuadrada no garantiza que tenga inversa. Para que exista, además debe cumplir otras condiciones que estudiaremos más adelante.

6.5 Diagonal de una matriz cuadrada

En una matriz cuadrada de orden n, la diagonal principal contiene exactamente n elementos: a11, a22, ..., ann.

A = [ 2   5   1 ]
    [ 4   3   7 ]
    [ 6   8   9 ]

Diagonal principal: [2, 3, 9]
const A = [
  [2, 5, 1],
  [4, 3, 7],
  [6, 8, 9]
];

const diagonal = A.map((fila, i) => fila[i]);

console.log(diagonal);

6.6 Matrices rectangulares como tablas de datos

Los conjuntos de datos suelen ser rectangulares porque la cantidad de observaciones no coincide normalmente con la cantidad de características.

Filas: estudiantes
Columnas: nota 1, nota 2 y nota 3

D = [[8, 7, 9],
     [6, 8, 7],
     [9, 10, 8],
     [7, 6, 8]]

Orden: 4 × 3
const notas = [
  [8, 7, 9],
  [6, 8, 7],
  [9, 10, 8],
  [7, 6, 8]
];

const segundaEvaluacion = notas.map(fila => fila[1]);

console.log("Orden:", `${notas.length} × ${notas[0].length}`);
console.log("Segunda evaluación:", segundaEvaluacion);

6.7 Cantidad de elementos y almacenamiento

Una matriz de orden m × n contiene m · n elementos. Esto es válido tanto para matrices cuadradas como rectangulares.

Orden Forma Cantidad de elementos
2 × 2 Cuadrada 4
3 × 3 Cuadrada 9
2 × 5 Rectangular 10
100 × 20 Rectangular 2000

Al programar, conocer esta cantidad ayuda a estimar el espacio de memoria y la cantidad de operaciones necesarias para recorrer la matriz.

6.8 Crear una matriz de cualquier orden

Podemos crear matrices cuadradas o rectangulares indicando la cantidad de filas, columnas y un valor inicial.

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

const cuadrada = crearMatriz(3, 3);
const rectangular = crearMatriz(2, 4, 1);

console.log(cuadrada);
console.log(rectangular);

Cada fila se crea como un arreglo independiente. Esto evita que modificar una fila cambie accidentalmente las demás.

6.9 Suma y resta

Dos matrices pueden sumarse o restarse si tienen exactamente el mismo orden. No importa si son cuadradas o rectangulares: lo importante es que coincidan tanto las filas como las columnas.

(m × n) + (m × n) = (m × n)
function sumarMatrices(A, B) {
  const mismoOrden = A.length === B.length &&
    A.every((fila, i) => fila.length === B[i].length);

  if (!mismoOrden) throw new Error("Las matrices deben tener igual orden");

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

const A = [[1, 2, 3], [4, 5, 6]];
const B = [[6, 5, 4], [3, 2, 1]];

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

6.10 Multiplicación por un escalar

Toda matriz puede multiplicarse por un escalar. Cada elemento se multiplica por el mismo número y el orden de la matriz no cambia.

function multiplicarPorEscalar(matriz, escalar) {
  return matriz.map(fila =>
    fila.map(valor => valor * escalar)
  );
}

const R = [[1, 2, 3], [4, 5, 6]];

console.log(multiplicarPorEscalar(R, 3));

La matriz original es 2 × 3 y el resultado también es 2 × 3.

6.11 Multiplicación de matrices rectangulares

Una matriz A de orden m × n puede multiplicarse por una matriz B de orden n × p. El número de columnas de A debe coincidir con el número de filas de B.

Am×n · Bn×p = Cm×p

Las dimensiones internas n coinciden.
Las dimensiones externas m y p forman el resultado.
function multiplicarMatrices(A, B) {
  if (A[0].length !== B.length) {
    throw new Error("Dimensiones incompatibles");
  }

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

const A = [[1, 2, 3], [4, 5, 6]];
const B = [[1, 2], [3, 4], [5, 6]];

console.log(multiplicarMatrices(A, B));

En este caso, una matriz 2 × 3 multiplicada por una matriz 3 × 2 produce una matriz cuadrada 2 × 2.

6.12 Multiplicación entre matrices cuadradas

Dos matrices cuadradas del mismo orden siempre tienen dimensiones compatibles para multiplicarse. El resultado conserva el orden n × n.

An×n · Bn×n = Cn×n

Sin embargo, el producto no suele ser conmutativo: en general, AB ≠ BA. Que ambas matrices sean cuadradas permite calcular los dos productos, pero no obliga a que sus resultados coincidan.

6.13 Operaciones propias de matrices cuadradas

La forma cuadrada permite relacionar cada fila con una columna correspondiente y definir varias operaciones importantes.

  • Traza: suma de los elementos de la diagonal principal.
  • Determinante: número que resume propiedades de la transformación.
  • Inversa: matriz que revierte la transformación, cuando existe.
  • Valores y vectores propios: describen direcciones especiales de una transformación.
function traza(matriz) {
  const n = matriz.length;
  if (!n || !matriz.every(fila => fila.length === n)) {
    throw new Error("La traza requiere una matriz cuadrada");
  }

  return matriz.reduce((suma, fila, i) => suma + fila[i], 0);
}

console.log(traza([[2, 5, 1], [4, 3, 7], [6, 8, 9]]));

6.14 Matrices en sistemas de ecuaciones

Una matriz de coeficientes cuadrada representa un sistema con igual cantidad de ecuaciones e incógnitas. Esto no garantiza una solución única: también depende de que las ecuaciones sean independientes.

Una matriz rectangular aparece cuando las cantidades no coinciden:

  • Si hay más ecuaciones que incógnitas, el sistema es sobredeterminado.
  • Si hay menos ecuaciones que incógnitas, el sistema es subdeterminado.
Am×nxn×1 = bm×1

m: cantidad de ecuaciones
n: cantidad de incógnitas

6.15 Matrices como transformaciones

Una matriz de orden m × n transforma un vector con n componentes en un vector con m componentes. En notación de espacios:

A de orden m × n representa una transformación de ℝn hacia ℝm.

Una matriz cuadrada transforma vectores dentro de un espacio de la misma dimensión. Una matriz rectangular cambia la cantidad de componentes.

function matrizPorVector(A, vector) {
  if (A[0].length !== vector.length) {
    throw new Error("Dimensiones incompatibles");
  }

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

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

console.log(matrizPorVector(A, vector3D));

La matriz 2 × 3 transforma el vector de tres componentes en un vector de dos componentes.

6.16 Transpuesta y cambio de forma

La transpuesta intercambia filas por columnas. Una matriz rectangular m × n se convierte en una matriz n × m. Una matriz cuadrada n × n continúa siendo cuadrada.

A de orden 2 × 3 → AT de orden 3 × 2
B de orden 3 × 3 → BT de orden 3 × 3
function transponer(matriz) {
  return matriz[0].map((_, j) =>
    matriz.map(fila => fila[j])
  );
}

const A = [[1, 2, 3], [4, 5, 6]];
const AT = transponer(A);

console.log(AT);
console.log(`Orden: ${AT.length} × ${AT[0].length}`);

6.17 Validar dimensiones en un programa

Antes de operar conviene comprobar que la estructura sea rectangular y obtener su orden de manera segura.

function analizarMatriz(matriz) {
  if (!Array.isArray(matriz) || matriz.length === 0) {
    return { valida: false, motivo: "Matriz vacía o inexistente" };
  }

  if (!matriz.every(fila => Array.isArray(fila))) {
    return { valida: false, motivo: "Cada fila debe ser un arreglo" };
  }

  const columnas = matriz[0].length;
  const valida = columnas > 0 && matriz.every(fila => fila.length === columnas);

  if (!valida) return { valida: false, motivo: "Filas de distinta longitud" };

  const filas = matriz.length;
  return {
    valida: true,
    orden: [filas, columnas],
    forma: filas === columnas ? "cuadrada" : "rectangular"
  };
}

console.log(analizarMatriz([[1, 2, 3], [4, 5, 6]]));

6.18 Errores frecuentes

  • Confundir una matriz cuadrada con una matriz cuyos valores forman visualmente un cuadrado, sin comprobar las dimensiones.
  • Suponer que toda matriz cuadrada posee inversa.
  • Intentar calcular el determinante de una matriz rectangular.
  • Sumar matrices de órdenes distintos.
  • Multiplicar matrices comparando dimensiones externas en lugar de las internas.
  • Creer que el producto de matrices cuadradas es conmutativo.
  • Usar arreglos con filas de distintas longitudes como si fueran matrices rectangulares válidas.

6.19 Qué debes recordar de este tema

  • Una matriz cuadrada tiene orden n × n.
  • En este curso, una matriz rectangular tiene orden m × n con m ≠ n.
  • La suma exige matrices del mismo orden.
  • El producto Am×nBn×p produce una matriz m × p.
  • Determinante, traza, inversa y valores propios se estudian en matrices cuadradas.
  • Una matriz m × n transforma vectores de n componentes en vectores de m componentes.
  • La transpuesta de una matriz m × n tiene orden n × m.

6.20 Conclusión

La forma de una matriz determina las operaciones que admite y la transformación que puede representar. Las matrices cuadradas relacionan espacios de igual dimensión, mientras que las rectangulares permiten organizar datos y conectar espacios de dimensiones diferentes.

En el próximo tema estudiaremos la matriz identidad y la matriz nula, dos estructuras fundamentales por su papel en la multiplicación y la suma de matrices.