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.
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.
Reconocer cada estructura es importante porque las operaciones permitidas y las condiciones para realizarlas dependen de sus dimensiones.
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.
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.
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.
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.
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.
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.
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}`);
});
Un vector puede escribirse horizontalmente como vector fila o verticalmente como vector columna.
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.
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.
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.
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 |
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.
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.
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.
La estructura matemática no define por sí sola el significado de sus números. El contexto del programa determina qué representa cada componente.
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.
A lo largo del curso aprenderemos a combinar y transformar estas estructuras.
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.
No todas las operaciones pueden realizarse entre estructuras de cualquier tamaño. Las dimensiones deben cumplir ciertas condiciones.
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.
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.
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.