2. Escalares, vectores y matrices

Un escalar representa un único valor, un vector reúne una lista ordenada de valores y una matriz los organiza en filas y columnas. Estas tres estructuras son la base del álgebra lineal aplicada a programación.

2.1 Introducción

En el tema anterior vimos que el álgebra lineal permite representar y transformar información. Para avanzar necesitamos distinguir sus tres elementos más básicos: escalares, vectores y matrices.

La diferencia principal está en la cantidad y la organización de sus valores. Un escalar contiene un solo número; un vector contiene varios números ordenados en una dimensión; una matriz distribuye números en filas y columnas.

Escalar: 5
Vector: [5, 8, 2]
Matriz: [[5, 8, 2], [1, 4, 7]]

Reconocer cada estructura es importante porque las operaciones permitidas y las condiciones para realizarlas dependen de sus dimensiones.

2.2 ¿Qué es un escalar?

Un escalar es un único número. Puede representar una cantidad, una medida o un factor que modifica otros elementos. Su nombre proviene de la idea de escalar o cambiar el tamaño de un vector.

  • La temperatura de una habitación: 23.
  • El precio de un producto: 1500.
  • El factor para duplicar un objeto: 2.
  • El tiempo transcurrido: 4.5 segundos.

Según el contexto matemático, un escalar puede ser un número real o complejo. En los primeros temas trabajaremos principalmente con números reales.

2.3 Escalares en JavaScript

En JavaScript podemos guardar un escalar real mediante una variable de tipo number.

const temperatura = 23;
const precio = 1500;
const escala = 2;

console.log(temperatura);
console.log(precio);
console.log(escala);

El valor de cada variable puede utilizarse en expresiones aritméticas. Por ejemplo, un escalar puede multiplicar todos los componentes de un vector.

const factor = 3;
const vector = [2, 4];

const vectorEscalado = vector.map(componente => factor * componente);

console.log(vectorEscalado);

El resultado es [6, 12]: cada componente fue multiplicado por el mismo escalar.

2.4 ¿Qué es un vector?

Un vector es una lista ordenada de números llamados componentes. El orden importa: los vectores [3, 7] y [7, 3] contienen los mismos números, pero no representan el mismo vector.

Geométricamente, un vector puede representar una dirección y una magnitud. En un plano, sus dos componentes indican cuánto avanzar en los ejes horizontal y vertical.

v = [3, 2]

Primera componente: 3 unidades en el eje x
Segunda componente: 2 unidades en el eje y

Un vector también puede representar información sin interpretación geométrica, como las edades de un grupo o las características numéricas de un producto.

2.5 Componentes y dimensión de un vector

La dimensión de un vector es su cantidad de componentes.

Vector Dimensión Interpretación posible
[8] 1 Posición sobre una recta
[4, 6] 2 Punto o desplazamiento en un plano
[2, 5, 9] 3 Posición o color en tres componentes
[12, 1.75, 68, 30] 4 Registro con cuatro características

La dimensión no indica cuán grandes son los números. El vector [1000, 2000] sigue teniendo dimensión 2.

2.6 Vectores en JavaScript

Un arreglo es una forma directa de representar un vector. La propiedad length indica la cantidad de componentes.

const velocidad = [12, -3];

console.log("Dimensión:", velocidad.length);
console.log("Componente x:", velocidad[0]);
console.log("Componente y:", velocidad[1]);

Los índices comienzan en cero. La primera componente se encuentra en la posición 0 y la segunda en la posición 1.

Podemos recorrer todos los componentes sin conocer de antemano la dimensión:

const mediciones = [18.5, 19.2, 20.1, 19.8];

mediciones.forEach((valor, indice) => {
  console.log(`Componente ${indice}: ${valor}`);
});

2.7 Vector fila y vector columna

Un vector puede escribirse horizontalmente como vector fila o verticalmente como vector columna.

Vector fila: [2   5   7]

Vector columna:
[2]
[5]
[7]

Ambas representaciones contienen tres componentes, pero su orientación es relevante en operaciones matriciales. Un vector fila puede verse como una matriz de 1 × 3, mientras que un vector columna puede verse como una matriz de 3 × 1.

En un arreglo simple de JavaScript la orientación no queda expresada automáticamente. Debemos conocerla por el contexto o representarla explícitamente.

2.8 ¿Qué es una matriz?

Una matriz es una colección rectangular de números organizada en filas y columnas. Cada elemento ocupa una posición determinada por ambos valores.

A = [[1, 2, 3],
     [4, 5, 6]]

La matriz A tiene dos filas y tres columnas. Los elementos de la primera fila son 1, 2 y 3; los de la segunda son 4, 5 y 6.

Las matrices pueden representar tablas de datos, imágenes, relaciones entre variables, sistemas de ecuaciones y transformaciones geométricas.

2.9 Orden o dimensión de una matriz

El tamaño de una matriz se expresa como cantidad de filas × cantidad de columnas. El orden siempre se lee en ese orden.

Matriz Filas Columnas Orden
[[1, 2, 3]] 1 3 1 × 3
[[1], [2], [3]] 3 1 3 × 1
[[1, 2], [3, 4]] 2 2 2 × 2
[[1, 2, 3], [4, 5, 6]] 2 3 2 × 3
Una matriz de orden m × n posee m filas, n columnas y un total de m × n elementos.

2.10 Matrices en JavaScript

Podemos representar una matriz mediante un arreglo que contiene un arreglo por cada fila.

const matriz = [
  [10, 20, 30],
  [40, 50, 60]
];

const filas = matriz.length;
const columnas = matriz[0].length;

console.log(`Orden: ${filas} × ${columnas}`);
console.log("Elemento de la fila 2, columna 3:", matriz[1][2]);

La expresión matriz[1][2] accede al valor 60. El primer índice selecciona la fila y el segundo selecciona la columna.

2.11 Recorrer una matriz

Para visitar todos los elementos se utilizan dos recorridos anidados: uno para las filas y otro para las columnas.

const matriz = [
  [2, 4, 6],
  [8, 10, 12]
];

for (let fila = 0; fila < matriz.length; fila++) {
  for (let columna = 0; columna < matriz[fila].length; columna++) {
    console.log(`A[${fila}][${columna}] = ${matriz[fila][columna]}`);
  }
}

Este patrón aparece en algoritmos que procesan imágenes, tableros, mapas y tablas numéricas.

2.12 Relación entre escalares, vectores y matrices

Estas estructuras pueden verse como niveles de organización de la información.

Estructura Cantidad de ejes Acceso conceptual Ejemplo
Escalar Ninguno Un valor 7
Vector Uno Una posición v[i]
Matriz Dos Fila y columna A[i][j]

Una matriz contiene vectores fila o vectores columna. A su vez, cada vector contiene escalares. Esta relación ayuda a comprender cómo se organizan los datos en programación.

2.13 Un mismo dato con distintas interpretaciones

La estructura matemática no define por sí sola el significado de sus números. El contexto del programa determina qué representa cada componente.

  • [120, 80] puede ser una posición en pantalla.
  • [120, 80] puede representar ancho y alto.
  • [120, 80] puede contener dos mediciones.
  • [120, 80] puede ser una dirección de movimiento.

Por eso conviene utilizar nombres descriptivos y documentar el orden de los componentes.

const posicionJugador = [120, 80];
const tamanoVentana = [120, 80];

console.log("Posición:", posicionJugador);
console.log("Tamaño:", tamanoVentana);

Los arreglos contienen los mismos valores, pero representan conceptos diferentes y no deberían intercambiarse sin considerar su significado.

2.14 Operaciones que realizaremos

A lo largo del curso aprenderemos a combinar y transformar estas estructuras.

  • Multiplicar un vector o una matriz por un escalar.
  • Sumar y restar vectores o matrices de igual dimensión.
  • Multiplicar matrices con dimensiones compatibles.
  • Calcular la transpuesta, la traza y el determinante.
  • Obtener la inversa y el rango de una matriz.
  • Aplicar productos, normas y proyecciones a vectores.
const a = [1, 2, 3];
const b = [4, 5, 6];

const suma = a.map((componente, indice) => componente + b[indice]);

console.log(suma);

El resultado es [5, 7, 9]. Cada componente se suma con la componente que ocupa la misma posición.

2.15 La compatibilidad de dimensiones

No todas las operaciones pueden realizarse entre estructuras de cualquier tamaño. Las dimensiones deben cumplir ciertas condiciones.

  • Para sumar dos vectores, ambos deben tener la misma dimensión.
  • Para sumar dos matrices, deben tener la misma cantidad de filas y columnas.
  • Para multiplicar matrices, sus dimensiones internas deben coincidir.
function tienenMismaDimension(a, b) {
  return a.length === b.length;
}

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

Comprobar las dimensiones antes de operar evita resultados incompletos y errores difíciles de detectar.

2.16 Errores frecuentes al representarlos

  • Confundir un escalar con un vector que contiene un solo elemento.
  • Creer que cambiar el orden de las componentes no cambia el vector.
  • Intercambiar la cantidad de filas con la cantidad de columnas.
  • Usar filas de distinta longitud y llamar matriz al resultado.
  • Olvidar que los índices de JavaScript comienzan en cero.
  • Realizar operaciones sin comprobar la compatibilidad de dimensiones.
const matrizIrregular = [
  [1, 2, 3],
  [4, 5]
];

const esRectangular = matrizIrregular.every(
  fila => fila.length === matrizIrregular[0].length
);

console.log("¿Es una matriz rectangular?", esRectangular);

Un arreglo de arreglos puede tener filas de diferentes longitudes, pero una matriz matemática rectangular debe tener la misma cantidad de columnas en todas sus filas.

2.17 Qué debes recordar de este tema

  • Un escalar es un único número.
  • Un vector es una lista ordenada de escalares y su dimensión es la cantidad de componentes.
  • Una matriz organiza escalares en filas y columnas.
  • El orden de una matriz se expresa como filas × columnas.
  • En JavaScript podemos representar vectores con arreglos y matrices con arreglos de arreglos.
  • El significado de los valores depende del contexto del programa.
  • Las dimensiones determinan si una operación puede realizarse.

2.18 Conclusión

Escalares, vectores y matrices permiten representar información con distintos niveles de organización. Un programa puede utilizar un escalar para guardar una medida, un vector para describir una posición y una matriz para almacenar datos o definir una transformación.

En el próximo tema aprenderemos la notación matricial utilizada para nombrar matrices, indicar sus dimensiones y localizar cada uno de sus elementos.