Guía de Álgebra Lineal para Ingeniería: El Manual Definitivo

0. ¿Por qué el Álgebra Lineal decide tu capacidad como ingeniero?

TL;DR — Respuesta directa

Álgebra Lineal no es sólo una asignatura de primer curso: es el sistema de coordenadas en el que está escrita toda la ingeniería cuantitativa. Sin dominar espacios vectoriales, matrices, transformaciones lineales y diagonalización, ningún modelo de elementos finitos, ningún algoritmo de control y ninguna red neuronal tiene sentido matemático real.

En palabras de Gilbert Strang (MIT 18.06): «El Álgebra Lineal es el idioma en el que está escrita la mayor parte de la ciencia aplicada del siglo XXI.» Todo sistema de ecuaciones diferenciales parciales discretizado se convierte en un sistema lineal $A\mathbf{x}=\mathbf{b}$. Todo proceso de compresión de imágenes (JPEG, MP3) usa la descomposición espectral. Todo algoritmo de recomendación factoriza una matriz. La asignatura que parece la más abstracta es, en la práctica, la más usada.

Esta guía pilar conecta seis áreas temáticas interconectadas: espacios vectoriales, transformaciones lineales, diagonalización, espacio euclídeo, cómputo con Python y el sistema de preguntas frecuentes de alta conversión. Cada sección enlaza de forma orgánica con los artículos satélite que la desarrollan en profundidad.

Referencias canónicas de Álgebra Lineal

Esta guía está alineada con Gilbert Strang — Introduction to Linear Algebra (MIT Press, 5.ª ed.), David C. Lay — Linear Algebra and Its Applications (5.ª ed.) y Sheldon Axler — Linear Algebra Done Right (3.ª ed.). Se indica el nivel correspondiente en cada sección.

0.1 Índice interactivo del temario de Álgebra Lineal

0.2 Mapa conceptual de Álgebra Lineal

1. Espacios Vectoriales, Subespacios y Geometría Estructural

TL;DR — Espacios Vectoriales

Un espacio vectorial es un conjunto $V$ equipado con dos operaciones —suma de vectores y producto por escalar— que satisfacen 10 axiomas. El concepto generaliza $\mathbb{R}^n$: los polinomios de grado $\leq n$, las matrices $m\times n$ y las funciones continuas son todos espacios vectoriales. Un subespacio $W\subseteq V$ debe contener el vector nulo, ser cerrado bajo la suma y cerrado bajo el producto por escalar: son las tres condiciones mínimas, nunca más.

El Álgebra Lineal arranca con la pregunta más fundamental: ¿qué tienen en común los vectores geométricos de $\mathbb{R}^3$, los polinomios de grado $\leq 2$ y las matrices $2\times 2$? Todos son espacios vectoriales: estructuras algebraicas donde la suma y la multiplicación por escalares cumplen las mismas reglas. Esta abstracción permite desarrollar toda la teoría una sola vez y aplicarla después a docenas de objetos matemáticos distintos.

1.1 Los 10 axiomas de un espacio vectorial

Definición formal — Espacio Vectorial (Strang / Axler)

Sea $V$ un conjunto no vacío con dos operaciones: $+: V\times V\to V$ y $\cdot: \mathbb{F}\times V\to V$ (donde $\mathbb{F}=\mathbb{R}$ o $\mathbb{C}$). $V$ es un espacio vectorial sobre $\mathbb{F}$ si y sólo si $\forall\,\mathbf{u},\mathbf{v},\mathbf{w}\in V$ y $\forall\,\alpha,\beta\in\mathbb{F}$:

A1 $\mathbf{u}+\mathbf{v}\in V$ (cierre suma)
A2 $\mathbf{u}+\mathbf{v}=\mathbf{v}+\mathbf{u}$ (conmutatividad)
A3 $(\mathbf{u}+\mathbf{v})+\mathbf{w}=\mathbf{u}+(\mathbf{v}+\mathbf{w})$ (asociatividad)
A4 $\exists\,\mathbf{0}\in V:\mathbf{v}+\mathbf{0}=\mathbf{v}$ (neutro)
A5 $\exists\,{-\mathbf{v}}\in V:\mathbf{v}+(-\mathbf{v})=\mathbf{0}$ (inverso)
A6 $\alpha\cdot\mathbf{v}\in V$ (cierre escalar)
A7 $\alpha(\mathbf{u}+\mathbf{v})=\alpha\mathbf{u}+\alpha\mathbf{v}$
A8 $(\alpha+\beta)\mathbf{v}=\alpha\mathbf{v}+\beta\mathbf{v}$
A9 $\alpha(\beta\mathbf{v})=(\alpha\beta)\mathbf{v}$
A10 $1\cdot\mathbf{v}=\mathbf{v}$ (neutro multiplicativo)

1.2 Subespacios: verificación práctica y trampa de examen

Un subconjunto $W$ de un espacio vectorial $V$ es un subespacio vectorial si y sólo si satisface las tres condiciones de cierre. En la práctica, la verificación se reduce a tres preguntas concretas que, según David C. Lay (§4.1), concentran el 80% de los ejercicios de examen sobre subespacios.

Trampa de examen — Subespacios

El error más frecuente es comprobar el cierre bajo la suma y el producto por escalar sin verificar que el vector nulo pertenece a $W$. Si $\mathbf{0}\notin W$, el subconjunto nunca puede ser un subespacio, aunque sea cerrado bajo las dos operaciones.

Ejemplo clásico: el conjunto $W = \{\mathbf{v}\in\mathbb{R}^2 : v_1 + v_2 = 1\}$ es cerrado bajo la suma si $1+1=1$ (falso), pero el verdadero problema es que $(0,0)\notin W$. Empieza siempre comprobando el vector nulo.

Condición Cómo verificarla Fallo típico en examen
$\mathbf{0}\in W$ Sustituir directamente el vector nulo en la definición de $W$ Olvidarlo completamente y perder todos los puntos
$\mathbf{u}+\mathbf{v}\in W$ Tomar dos elementos genéricos de $W$ y verificar que su suma pertenece Tomar ejemplos concretos en vez de elementos genéricos
$\alpha\mathbf{v}\in W\ \forall\alpha\in\mathbb{F}$ Multiplicar un elemento genérico por un escalar arbitrario $\alpha$ Probar sólo $\alpha>0$ y olvidar el caso $\alpha=0$ o negativos
Tabla 1 · Protocolo de verificación de subespacios — Álgebra Lineal.

1.3 Bases, Dimensión y Cambio de Base

Una base de $V$ es un conjunto de vectores linealmente independientes que genera todo $V$. La dimensión $\dim(V)$ es el número de vectores en cualquier base —resultado que el Teorema de la Base garantiza que es único. El Teorema de la Base Incompleta permite extender cualquier sistema libre a una base completa de $V$, herramienta indispensable para construir cambios de base entre representaciones distintas del mismo endomorfismo.

Fórmula del cambio de base

$$[\mathbf{v}]_{\mathcal{B}’} = P^{-1}[\mathbf{v}]_{\mathcal{B}}$$

donde $P$ es la matriz de cambio de base de $\mathcal{B}$ a $\mathcal{B}’$, cuyas columnas son los vectores de $\mathcal{B}$ expresados en la base $\mathcal{B}’$. Para la matriz de un endomorfismo: $[f]_{\mathcal{B}’} = P^{-1}[f]_{\mathcal{B}}P$.

1.4 Dependencia e Independencia Lineal — Combinaciones Lineales

Un conjunto $\{\mathbf{v}_1,\ldots,\mathbf{v}_k\}$ es linealmente independiente si la única combinación lineal que da el vector nulo es la trivial: $\alpha_1\mathbf{v}_1+\cdots+\alpha_k\mathbf{v}_k=\mathbf{0}$ implica $\alpha_i=0\ \forall i$. La herramienta práctica para decidirlo es reducir la matriz formada por los vectores a forma escalonada reducida (RREF). El número de pivotes da el rango; las columnas sin pivote corresponden a vectores dependientes. Consulta el desarrollo completo en el artículo de dependencia e independencia lineal: sistemas libres y ligados.

Tip de examen — Independencia Lineal

Si el número de vectores es mayor que la dimensión del espacio, el conjunto es siempre linealmente dependiente. No necesitas calcular nada. Si $k > \dim(V)$, concluye directamente que son dependientes y justifícalo con este resultado (Teorema de Steinitz). Ahorra 5 minutos en un examen de 2 horas.

import numpy as np

# ═══════════════════════════════════════════════════════════
# Álgebra Lineal — FísicaIngeniería
# Verificar independencia lineal y calcular base de un subespacio
# ═══════════════════════════════════════════════════════════

# Vectores como columnas de la matriz
v1 = [1, 2, 0, -1]
v2 = [3, 1, 2,  0]
v3 = [5, 5, 2, -2]   # v3 = v1 + v2 * 4/3 ... ¿depende?

A = np.array([v1, v2, v3], dtype=float).T  # columnas = vectores

# Rango de la matriz → nº de vectores linealmente independientes
rango = np.linalg.matrix_rank(A)
print(f"Rango = {rango} de {A.shape[1]} vectores")
print(f"Son linealmente {'independientes' if rango == A.shape[1] else 'DEPENDIENTES'}")

# Forma escalonada reducida con scipy
from scipy.linalg import lu
_, _, U = lu(A)
print("\nForma escalonada (U de la descomposición LU):")
print(np.round(U, 4))

# Espacio nulo (vectores de dependencia)
null_space = np.linalg.svd(A)[2][-1]  # último vector singular derecho
print(f"\nVector de dependencia (nulo): {np.round(null_space, 4)}")

2. Transformaciones Lineales y Matrices Asociadas

TL;DR — Transformaciones Lineales

Una transformación lineal (o aplicación lineal) $f: V\to W$ preserva la suma y el producto por escalares. El Teorema del Rango-Nulidad es el resultado central: $\dim(\operatorname{Im} f) + \dim(\operatorname{Ker} f) = \dim(V)$. Toda transformación lineal entre espacios de dimensión finita está completamente determinada por su actuación sobre una base: la matriz asociada $[f]_{\mathcal{B}}^{\mathcal{B}’}$ recoge esa información columna a columna.

Las transformaciones lineales son los morfismos de la categoría de espacios vectoriales: las funciones que respetan la estructura algebraica. Rotaciones, reflexiones, proyecciones y derivadas formales son todas transformaciones lineales. La teoría central de Álgebra Lineal —la que justifica el estudio de matrices— es que cada transformación lineal entre espacios finito-dimensionales tiene una representación matricial que depende de la elección de bases, y que cambiar de base transforma la matriz por semejanza.

2.1 Teorema del Rango-Nulidad

Teorema del Rango-Nulidad (Rank-Nullity Theorem)

$$\dim(\operatorname{Im} f) + \dim(\operatorname{Ker} f) = \dim(V)$$

También escrito como: $\operatorname{rang}(f) + \operatorname{nul}(f) = n = \dim(V)$. El rango es el número de columnas pivote de $[f]$; la nulidad es el número de variables libres en $[f]\mathbf{x}=\mathbf{0}$. Su suma siempre es $n$. Referencia: Strang §3.5, Lay §4.6.

2.2 Núcleo e Imagen de una aplicación lineal

El núcleo (kernel) $\operatorname{Ker}(f) = \{\mathbf{v}\in V : f(\mathbf{v})=\mathbf{0}\}$ es el subespacio de $V$ que $f$ colapsa al vector nulo. La imagen $\operatorname{Im}(f) = \{f(\mathbf{v}) : \mathbf{v}\in V\}$ es el subespacio de $W$ que $f$ puede alcanzar. El desarrollo completo de núcleo e imagen, con su interpretación geométrica en $\mathbb{R}^2$ y $\mathbb{R}^3$, es la clave para entender cuándo un sistema lineal $A\mathbf{x}=\mathbf{b}$ tiene solución única, infinitas soluciones o ninguna solución.

Propiedad de $f$ Condición algebraica Condición matricial Consecuencia
Inyectiva (monomorfismo) $\operatorname{Ker}(f) = \{\mathbf{0}\}$ $\operatorname{nul}(A)=0$, rango completo en filas $A\mathbf{x}=\mathbf{b}$ tiene a lo sumo una solución
Sobreyectiva (epimorfismo) $\operatorname{Im}(f) = W$ $\operatorname{rang}(A)=\dim(W)$, rango completo en columnas $A\mathbf{x}=\mathbf{b}$ tiene al menos una solución $\forall\mathbf{b}$
Biyectiva (isomorfismo) Inyectiva y sobreyectiva $A$ cuadrada e invertible, $\det(A)\neq 0$ $A\mathbf{x}=\mathbf{b}$ tiene solución única $\forall\mathbf{b}$
Tabla 2 · Tipo de transformación lineal y sus consecuencias en sistemas lineales.

2.3 Matriz Asociada y Cambio de Base

La matriz asociada a una aplicación lineal $f:V\to W$ en las bases $\mathcal{B}$ de $V$ y $\mathcal{B}’$ de $W$ se construye aplicando $f$ a cada vector de $\mathcal{B}$ y expresando el resultado en coordenadas de $\mathcal{B}’$: la $j$-ésima columna de $[f]_{\mathcal{B}}^{\mathcal{B}’}$ es $[f(\mathbf{b}_j)]_{\mathcal{B}’}$.

⚠️ Concepto Clave — Álgebra Lineal

La matriz asociada depende de la elección de bases. El mismo endomorfismo $f:V\to V$ tiene matrices diferentes en bases diferentes, pero todas son semejantes entre sí: $[f]_{\mathcal{B}’} = P^{-1}[f]_{\mathcal{B}}P$. La diagonalización no es más que encontrar la base $\mathcal{B}’$ en la que la matriz es diagonal. Esta es la conexión fundamental entre el cambio de base y los autovectores.

⚙ Simulador — Transformación Lineal 2D (Matrices 2×2)
det = 1.0000 | rang = 2

Ajusta las entradas de la matriz $A$ para ver cómo transforma la rejilla del plano. Observa el determinante y el rango en tiempo real.

import numpy as np

# ═══════════════════════════════════════════════════════════
# Álgebra Lineal — FísicaIngeniería
# Matriz asociada, rango, nulidad y espacio nulo
# ═══════════════════════════════════════════════════════════

# Definir la transformación lineal f: R^4 → R^3
# por su matriz en las bases estándar
A = np.array([
    [1,  3,  5,  2],
    [0,  1,  2,  1],
    [2,  4,  8,  3]
], dtype=float)

rango   = np.linalg.matrix_rank(A)
nulidad = A.shape[1] - rango
print(f"Dimensiones: {A.shape[0]} filas × {A.shape[1]} columnas")
print(f"Rango    = {rango}")
print(f"Nulidad  = {nulidad}")
print(f"Verificación Rango-Nulidad: {rango} + {nulidad} = {rango+nulidad} (= n = {A.shape[1]})")

# Espacio nulo (Ker f) vía SVD
_, S, Vt = np.linalg.svd(A)
tol = 1e-10
null_mask = np.abs(S) < tol  # valores singulares nulos
print(f"\nBase del Ker(f) [nulidad={nulidad}]:")
ker_basis = Vt[rango:]       # filas de Vt correspondientes a S≈0
for i, v in enumerate(ker_basis):
    print(f"  v{i+1} = {np.round(v, 4)}")

# Espacio imagen (Im f) vía QR
Q, R = np.linalg.qr(A.T)
print(f"\nBase de Im(f) [rango={rango}]:")
for i in range(rango):
    print(f"  u{i+1} = {np.round(Q[:, i], 4)}")

3. Diagonalización de Endomorfismos y Teoremas Estructurales

TL;DR — Diagonalización

Un endomorfismo $f:V\to V$ es diagonalizable si existe una base de $V$ formada por autovectores de $f$. En esa base, la matriz asociada es diagonal con los autovalores en la diagonal. La condición necesaria y suficiente es que para cada autovalor $\lambda_i$ la multiplicidad geométrica (dimensión del autoespacio) coincida con la multiplicidad algebraica (orden como raíz del polinomio característico).

La diagonalización es la herramienta más potente del Álgebra Lineal aplicada: permite calcular potencias de matrices en tiempo lineal, resolver sistemas de ecuaciones diferenciales ordinarias acoplados, analizar la estabilidad de sistemas dinámicos y desacoplar modos normales en mecánica de estructuras. Toda esta maquinaria depende de los autovalores y autovectores, que a su vez se obtienen del polinomio característico.

3.1 Autovalores y Autovectores

Un escalar $\lambda\in\mathbb{F}$ es autovalor (eigenvalue) de $f$ si existe un vector no nulo $\mathbf{v}\in V$ tal que $f(\mathbf{v})=\lambda\mathbf{v}$. El vector $\mathbf{v}$ es el autovector (eigenvector) asociado a $\lambda$. Geométricamente, $f$ sólo escala a $\mathbf{v}$ sin rotar su dirección: es la dirección invariante de la transformación.

3.2 Polinomio Característico

Polinomio característico y ecuación de autovalores

$$p(\lambda) = \det(A – \lambda I) = 0$$

Las raíces de $p(\lambda)$ son los autovalores de $A$. Para cada autovalor $\lambda_i$, el autoespacio es $E_{\lambda_i} = \operatorname{Ker}(A-\lambda_i I)$, que siempre tiene dimensión $\geq 1$. Para $n\times n$: $p(\lambda)$ tiene grado $n$ y, por el Teorema Fundamental del Álgebra, exactamente $n$ raíces (contadas con multiplicidad) en $\mathbb{C}$.

Magnitud Definición Notación Condición para diagonalizar
Multiplicidad algebraica Orden de $\lambda_i$ como raíz de $p(\lambda)$ $m_a(\lambda_i)$ Debe coincidir con $m_g$
Multiplicidad geométrica $\dim\operatorname{Ker}(A-\lambda_i I)$ $m_g(\lambda_i)$ $1 \leq m_g \leq m_a$ (siempre)
Diagonalizable $m_g(\lambda_i) = m_a(\lambda_i)$ para todo $\lambda_i$ $A = PDP^{-1}$ Equivale a que $\mathbb{F}^n$ tiene base de autovectores
No diagonalizable $\exists\,\lambda_i: m_g(\lambda_i) < m_a(\lambda_i)$ Forma de Jordan El déficit de autovectores impide la diagonalización
Tabla 3 · Multiplicidades algebraica y geométrica en Álgebra Lineal.

3.3 Criterio Práctico de Diagonalización paso a paso

  1. Calcula $p(\lambda) = \det(A – \lambda I)$ y factoriza para obtener los autovalores $\lambda_i$.
  2. Para cada $\lambda_i$, determina $m_a(\lambda_i)$ (multiplicidad como raíz de $p$).
  3. Resuelve $(A-\lambda_i I)\mathbf{v}=\mathbf{0}$ y calcula $m_g(\lambda_i) = \dim\operatorname{Ker}(A-\lambda_i I)$.
  4. Si $m_g(\lambda_i)=m_a(\lambda_i)$ para todo $i$ → $A$ es diagonalizable. Construye $P$ con los autovectores como columnas y $D=\operatorname{diag}(\lambda_1,\ldots,\lambda_n)$.
  5. Si existe algún $i$ con $m_g < m_a$ → $A$ no es diagonalizable (usa la Forma de Jordan si se requiere una descomposición).
Tip de examen — Diagonalización rápida

Si todos los autovalores de $A$ son distintos, entonces $A$ es automáticamente diagonalizable (los autovectores de autovalores distintos son linealmente independientes). No necesitas calcular las multiplicidades geométricas: sólo hay que verificar que las $n$ raíces de $p(\lambda)$ son distintas. Esto cubre el 60% de los ejercicios de examen sobre diagonalización.

⚙ Simulador — Autovectores y Autovalores de una Matriz 2×2
λ₁ = — λ₂ = — Diagonalizable: —

Las líneas coloreadas muestran las direcciones de los autovectores. Los autovectores sólo se escalan bajo la transformación, nunca se rotan.

3.4 Teorema de Cayley-Hamilton

El Teorema de Cayley-Hamilton establece que toda matriz cuadrada $A$ satisface su propio polinomio característico: si $p(\lambda)=\det(A-\lambda I)$, entonces $p(A)=\mathbf{0}$. Este resultado, cuya demostración completa requiere la Forma Canónica de Jordan, tiene una aplicación práctica directa en el módulo de Teorema de Cayley-Hamilton y potencias de matrices: permite calcular $A^k$ para $k\geq n$ como combinación lineal de $\{I, A, A^2,\ldots, A^{n-1}\}$, reduciendo el coste computacional de forma drástica.

Teorema de Cayley-Hamilton

$$p(A) = \det(A – \lambda I)\big|_{\lambda\to A} = \mathbf{0}_{n\times n}$$

Ejemplo para $n=2$: si $p(\lambda)=\lambda^2 – \operatorname{tr}(A)\lambda + \det(A)$, entonces $A^2 – \operatorname{tr}(A)\cdot A + \det(A)\cdot I = \mathbf{0}$. Despejando: $A^2 = \operatorname{tr}(A)\cdot A – \det(A)\cdot I$. Toda potencia superior se reduce a esta relación de recurrencia.

3.5 Potencia de una Matriz mediante Diagonalización — Sistemas Dinámicos

Si $A = PDP^{-1}$ con $D=\operatorname{diag}(\lambda_1,\ldots,\lambda_n)$, entonces $A^k = PD^kP^{-1}$ y $D^k = \operatorname{diag}(\lambda_1^k,\ldots,\lambda_n^k)$. Esta factorización transforma el cálculo de potencias de matrices —que en general cuesta $O(n^3)$ multiplicaciones por paso— en una operación de $O(n)$ elevaciones a potencia. Su aplicación más inmediata en ingeniería es la resolución de sistemas dinámicos discretos: $\mathbf{x}_{k+1} = A\mathbf{x}_k \Rightarrow \mathbf{x}_k = A^k\mathbf{x}_0 = PD^kP^{-1}\mathbf{x}_0$.

import numpy as np

# ═══════════════════════════════════════════════════════════
# Álgebra Lineal — FísicaIngeniería
# Diagonalización: autovalores, autovectores y potencia de A
# ═══════════════════════════════════════════════════════════

A = np.array([
    [4, 1, 0],
    [2, 3, 0],
    [0, 0, 5]
], dtype=float)

# Autovalores y autovectores
eigenvalues, P = np.linalg.eig(A)
print("Autovalores λᵢ:")
for i, lam in enumerate(eigenvalues):
    print(f"  λ{i+1} = {lam:.4f}")

print("\nMatriz P (columnas = autovectores):")
print(np.round(P, 4))

# Verificar diagonalización: A = P D P^{-1}
D = np.diag(eigenvalues)
A_reconstruida = P @ D @ np.linalg.inv(P)
print(f"\n||A - P·D·P⁻¹|| = {np.linalg.norm(A - A_reconstruida):.2e}  (debe ser ≈ 0)")

# Potencia k mediante diagonalización
k = 10
Dk = np.diag(eigenvalues**k)
Ak_diag  = P @ Dk @ np.linalg.inv(P)
Ak_bruta = np.linalg.matrix_power(A, k)
print(f"\nA^{k} — Error entre ambos métodos: {np.linalg.norm(Ak_diag - Ak_bruta):.2e}")
print(f"A^{k}[0,0] = {np.real(Ak_diag[0,0]):.2f}")

# Polinomio característico
coeffs = np.poly(A)  # coeficientes de det(λI - A)
print(f"\nPolinomio característico: {np.round(coeffs, 4)}")

# Cayley-Hamilton: p(A) ≈ 0
p_A = sum(coeffs[i] * np.linalg.matrix_power(A, len(coeffs)-1-i)
          for i in range(len(coeffs)))
print(f"||p(A)|| = {np.linalg.norm(p_A):.2e}  (Cayley-Hamilton verificado)")

4. Espacio Euclídeo, Ortogonalidad y Formas Cuadráticas

TL;DR — Espacio Euclídeo

El espacio euclídeo $(\mathbb{R}^n, \langle\cdot,\cdot\rangle)$ añade al espacio vectorial una noción de longitud y ángulo mediante el producto escalar. La ortogonalización de Gram-Schmidt convierte cualquier base en una base ortonormal. La proyección ortogonal sobre un subespacio es la solución al problema de mínimos cuadrados: la aproximación óptima a un punto fuera del subespacio. Las formas cuadráticas clasifican superficies cónicas y cuádricas mediante el criterio de Sylvester sobre los menores principales.

4.1 Producto Escalar y Norma

Producto escalar en $\mathbb{R}^n$ y propiedades

$$\langle\mathbf{u},\mathbf{v}\rangle = \mathbf{u}^T\mathbf{v} = \sum_{i=1}^n u_i v_i$$

Norma: $\|\mathbf{v}\| = \sqrt{\langle\mathbf{v},\mathbf{v}\rangle}$  ·  Ángulo: $\cos\theta = \dfrac{\langle\mathbf{u},\mathbf{v}\rangle}{\|\mathbf{u}\|\|\mathbf{v}\|}$  ·  Ortogonalidad: $\mathbf{u}\perp\mathbf{v} \Leftrightarrow \langle\mathbf{u},\mathbf{v}\rangle=0$
Desigualdad de Cauchy-Schwarz: $|\langle\mathbf{u},\mathbf{v}\rangle| \leq \|\mathbf{u}\|\|\mathbf{v}\|$

4.2 Proceso de Gram-Schmidt — Paso a Paso

Dado un conjunto de vectores linealmente independientes $\{\mathbf{v}_1,\ldots,\mathbf{v}_k\}$, el proceso de Gram-Schmidt construye de forma iterativa una base ortonormal $\{\mathbf{e}_1,\ldots,\mathbf{e}_k\}$ del mismo subespacio:

Algoritmo de Gram-Schmidt

$\mathbf{u}_1 = \mathbf{v}_1$  →  $\mathbf{e}_1 = \dfrac{\mathbf{u}_1}{\|\mathbf{u}_1\|}$
$\mathbf{u}_j = \mathbf{v}_j – \displaystyle\sum_{i=1}^{j-1}\langle\mathbf{v}_j,\mathbf{e}_i\rangle\,\mathbf{e}_i$  →  $\mathbf{e}_j = \dfrac{\mathbf{u}_j}{\|\mathbf{u}_j\|}$   para $j=2,\ldots,k$

Cada paso proyecta $\mathbf{v}_j$ sobre el complemento ortogonal de $\operatorname{span}\{\mathbf{e}_1,\ldots,\mathbf{e}_{j-1}\}$. El resultado es la factorización $A = QR$ con $Q$ ortonormal y $R$ triangular superior.

4.3 Proyección Ortogonal y Mínimos Cuadrados

La proyección ortogonal de un vector $\mathbf{b}$ sobre un subespacio $W$ es el vector $\hat{\mathbf{b}}\in W$ más cercano a $\mathbf{b}$ en la norma euclídea. Si $W=\operatorname{col}(A)$, la proyección satisface las ecuaciones normales: $A^TA\hat{\mathbf{x}} = A^T\mathbf{b}$.

Ecuaciones normales — Mínimos cuadrados

$$A^TA\hat{\mathbf{x}} = A^T\mathbf{b}$$

Si $A$ tiene rango completo en columnas ($\operatorname{rang}(A)=n$), la solución es única: $\hat{\mathbf{x}} = (A^TA)^{-1}A^T\mathbf{b}$. La matriz $P_W = A(A^TA)^{-1}A^T$ es la matriz de proyección ortogonal sobre $\operatorname{col}(A)$; cumple $P_W^2 = P_W$ (idempotente) y $P_W^T = P_W$ (simétrica).

4.4 Formas Cuadráticas y Criterio de Sylvester

Una forma cuadrática sobre $\mathbb{R}^n$ es $Q(\mathbf{x}) = \mathbf{x}^TA\mathbf{x}$ con $A$ simétrica. La clasificación del signo de $Q$ determina la geometría de las curvas de nivel (elipsoides, hiperboloides, paraboloides) y la naturaleza de los puntos críticos en optimización. El desarrollo completo de las formas cuadráticas y el criterio de Sylvester incluye la reducción a la forma canónica mediante la diagonalización ortogonal de $A$.

Clasificación Condición espectral Criterio de Sylvester (menores $\Delta_k$) Superficie cónica
Definida positiva Todos $\lambda_i > 0$ $\Delta_k > 0\ \forall k=1,\ldots,n$ Elipsoide (mínimo local)
Definida negativa Todos $\lambda_i < 0$ $(-1)^k\Delta_k > 0\ \forall k$ Elipsoide invertido (máximo local)
Semidefinida positiva $\lambda_i \geq 0$, alguno $= 0$ $\Delta_k \geq 0$, alguno $= 0$ Paraboloide cilíndrico
Indefinida Autovalores de ambos signos Algún $\Delta_k < 0$ sin patrón Hiperboloide (punto de silla)
Tabla 4 · Clasificación de formas cuadráticas y criterio de Sylvester en Álgebra Lineal.
import numpy as np

# ═══════════════════════════════════════════════════════════
# Álgebra Lineal — FísicaIngeniería
# Gram-Schmidt, proyección ortogonal y mínimos cuadrados
# ═══════════════════════════════════════════════════════════

def gram_schmidt(V):
    """Ortogonalización de Gram-Schmidt.
       V: columnas = vectores a ortonormalizar.
       Devuelve Q ortonormal con las mismas columnas."""
    Q = np.zeros_like(V, dtype=float)
    for j in range(V.shape[1]):
        u = V[:, j].copy()
        for i in range(j):
            u -= np.dot(Q[:, i], V[:, j]) * Q[:, i]
        norm = np.linalg.norm(u)
        if norm > 1e-12:
            Q[:, j] = u / norm
    return Q

# Vectores a ortonormalizar
V = np.array([[1, 1, 0],
              [1, 0, 1],
              [0, 1, 1]], dtype=float)

Q = gram_schmidt(V)
print("Base ortonormal Q (columnas):")
print(np.round(Q, 4))
print(f"\nVerificación QᵀQ = I: ||QᵀQ - I|| = {np.linalg.norm(Q.T @ Q - np.eye(3)):.2e}")

# ─────────────────────────────────────────────
# Mínimos cuadrados: Ax ≈ b
A = np.array([[1, 1],
              [1, 2],
              [1, 3],
              [1, 4]], dtype=float)
b = np.array([1.1, 2.0, 2.9, 4.1])

# Solución vía ecuaciones normales
x_hat = np.linalg.solve(A.T @ A, A.T @ b)
print(f"\nMínimos cuadrados x̂ = {np.round(x_hat, 4)}")

# Proyección y residuo
b_hat = A @ x_hat
e     = b - b_hat
print(f"Residuo ||e|| = {np.linalg.norm(e):.6f}")
print(f"Verificación e ⊥ col(A): ||Aᵀe|| = {np.linalg.norm(A.T @ e):.2e}")

# Clasificar forma cuadrática Q(x) = xᵀBx
B = np.array([[4, 2],
              [2, 3]], dtype=float)
eigenvalues_B = np.linalg.eigvalsh(B)
print(f"\nAutovalores de B: {np.round(eigenvalues_B, 4)}")
if np.all(eigenvalues_B > 0):
    print("Forma cuadrática: DEFINIDA POSITIVA")
elif np.all(eigenvalues_B < 0):
    print("Forma cuadrática: DEFINIDA NEGATIVA")
else:
    print("Forma cuadrática: INDEFINIDA")

5. Computación Científica: Álgebra Lineal con Python (NumPy)

TL;DR — Python para Álgebra Lineal

NumPy implementa en C todas las operaciones de Álgebra Lineal de forma vectorizada: multiplicación de matrices (@), descomposición espectral (np.linalg.eig), factorización QR (np.linalg.qr) y descomposición en valores singulares SVD (np.linalg.svd). Estas son las cuatro factorizaciones fundamentales que todo ingeniero debe conocer y que Gilbert Strang denomina «las cuatro grandes.»

La computación numérica de Álgebra Lineal con Python no sustituye la comprensión teórica, pero actúa como verificador instantáneo de cálculos a mano, visualizador de conceptos abstractos y herramienta de producción para problemas de gran escala. La API de numpy.linalg cubre el 95% de las necesidades de un ingeniero; para matrices dispersas o problemas de gran escala se usa scipy.sparse.linalg.

Factorización Notación NumPy Aplicación principal Coste
LU $A = LU$ (con pivoteo) scipy.linalg.lu Resolución de sistemas $A\mathbf{x}=\mathbf{b}$ $O(n^3/3)$
QR $A = QR$ np.linalg.qr Mínimos cuadrados, Gram-Schmidt $O(2mn^2)$
Espectral $A = PDP^{-1}$ np.linalg.eig Sistemas dinámicos, PCA, oscilaciones $O(n^3)$
SVD $A = U\Sigma V^T$ np.linalg.svd Compresión, pseudoinversa, PCA, redes neuronales $O(\min(mn^2, m^2n))$
Cholesky $A = LL^T$ (si $A\succ 0$) np.linalg.cholesky Simulación, mínimos cuadrados ponderados $O(n^3/6)$
Tabla 5 · Las cinco factorizaciones fundamentales de Álgebra Lineal y su implementación en NumPy.
import numpy as np

# ═══════════════════════════════════════════════════════════
# Álgebra Lineal — FísicaIngeniería
# Las cuatro grandes factorizaciones con numpy.linalg
# ═══════════════════════════════════════════════════════════

# Matriz de ejemplo (cuadrada, bien condicionada)
A = np.array([
    [ 4,  3,  2,  1],
    [ 3,  4,  3,  2],
    [ 2,  3,  4,  3],
    [ 1,  2,  3,  4]
], dtype=float)

b = np.array([10, 15, 18, 15], dtype=float)

print("═" * 50)
print("1. SISTEMA LINEAL Ax = b")
x = np.linalg.solve(A, b)
print(f"   Solución x = {np.round(x, 4)}")
print(f"   Residuo ||Ax-b|| = {np.linalg.norm(A @ x - b):.2e}")

print("\n" + "═" * 50)
print("2. DESCOMPOSICIÓN ESPECTRAL (Eigendecomposition)")
eigenvalues, eigenvectors = np.linalg.eig(A)
idx = np.argsort(eigenvalues.real)[::-1]
eigenvalues  = eigenvalues[idx]
eigenvectors = eigenvectors[:, idx]
for i, (lam, v) in enumerate(zip(eigenvalues, eigenvectors.T)):
    print(f"   λ{i+1} = {lam.real:.4f} | v{i+1} = {np.round(v.real, 3)}")

print("\n" + "═" * 50)
print("3. FACTORIZACIÓN QR")
Q, R = np.linalg.qr(A)
print(f"   ||QᵀQ - I|| = {np.linalg.norm(Q.T @ Q - np.eye(4)):.2e}")
print(f"   ||A - QR||  = {np.linalg.norm(A - Q @ R):.2e}")

print("\n" + "═" * 50)
print("4. SVD — Descomposición en Valores Singulares")
U, S, Vt = np.linalg.svd(A)
print(f"   Valores singulares σᵢ = {np.round(S, 4)}")
print(f"   Número de condición κ(A) = {S[0]/S[-1]:.2f}")

# Rango numérico
tol   = 1e-10
rango = np.sum(S > tol)
print(f"   Rango = {rango}")

# Pseudoinversa via SVD
A_pinv = np.linalg.pinv(A)
print(f"\n   Pseudoinversa: ||A·A⁺·A - A|| = {np.linalg.norm(A @ A_pinv @ A - A):.2e}")

print("\n" + "═" * 50)
print("5. DETERMINANTE Y TRAZA")
print(f"   det(A) = {np.linalg.det(A):.4f}")
print(f"   tr(A)  = {np.trace(A):.4f}")
print(f"   Verificación: ∏λᵢ = {np.prod(eigenvalues.real):.4f}")
print(f"   Verificación: Σλᵢ = {np.sum(eigenvalues.real):.4f}")
Librerías recomendadas para Álgebra Lineal computacional

NumPy: operaciones densas de Álgebra Lineal (matrices pequeñas y medianas). SciPy: factorizaciones avanzadas (LU con pivoteo, Schur, Hessenberg), matrices dispersas y solucionadores iterativos. SymPy: cálculo simbólico exacto de determinantes, polinomios característicos, formas de Jordan. PyTorch/JAX: diferencación automática y álgebra lineal en GPU para aprendizaje automático.

6. Preguntas Frecuentes de Álgebra Lineal

TL;DR — FAQ

Las tres preguntas más buscadas sobre Álgebra Lineal en buscadores y asistentes de IA tienen respuestas cortas y concretas que sirven como respuestas autónomas para búsquedas conversacionales. Aquí están desarrolladas con la precisión que exige un examen de ingeniería.

Sigue este protocolo en cinco pasos:

  1. Calcula el polinomio característico $p(\lambda) = \det(A-\lambda I)$ y factorízalo completamente sobre $\mathbb{R}$ (o $\mathbb{C}$).
  2. Identifica los autovalores distintos $\lambda_1,\ldots,\lambda_r$ y sus multiplicidades algebraicas $m_a(\lambda_i)$.
  3. Para cada autovalor, resuelve $(A-\lambda_i I)\mathbf{v}=\mathbf{0}$ y calcula la multiplicidad geométrica $m_g(\lambda_i) = n – \operatorname{rang}(A-\lambda_i I)$.
  4. Compara: si $m_g(\lambda_i) = m_a(\lambda_i)$ para todos los autovalores, $A$ es diagonalizable. Si existe algún $i$ con $m_g < m_a$, no lo es.
  5. Construye la diagonalización: $A = PDP^{-1}$ donde $P$ tiene los autovectores como columnas (agrupados por autovalor) y $D$ es diagonal con los autovalores.

Atajo: si los $n$ autovalores son distintos entre sí, la matriz es automáticamente diagonalizable sin necesidad de verificar los pasos 3 y 4.

El núcleo (kernel) de una matriz $A$ es el conjunto de vectores que $A$ transforma en cero: $\operatorname{Ker}(A) = \{\mathbf{x}: A\mathbf{x}=\mathbf{0}\}$. Su utilidad en ingeniería es directa en cinco contextos:

  • Análisis de estructuras: los mecanismos de un sistema estructural (movimientos libres de carga) corresponden a vectores del núcleo de la matriz de rigidez.
  • Control automático: los modos inobservables de un sistema lineal son vectores del núcleo de la matriz de observabilidad.
  • Procesado de señales: el espacio nulo de una matriz de muestreo determina las componentes de la señal que se pierden irreversiblemente.
  • Redes eléctricas: los vectores del núcleo de la matriz de incidencia nodal corresponden a los lazos independientes del grafo del circuito.
  • Robótica: las configuraciones singulares de un robot paralelo son los vectores del núcleo de su matriz jacobiana.

Numéricamente, el núcleo se calcula eficientemente con la SVD: los vectores singulares derechos correspondientes a valores singulares nulos (o muy pequeños) forman una base del espacio nulo.

La proyección ortogonal de un punto $\mathbf{b}$ sobre un subespacio $W$ es la respuesta a: «¿cuál es el punto de $W$ más cercano a $\mathbf{b}$?». Geométricamente, es la sombra que deja $\mathbf{b}$ sobre $W$ cuando la fuente de luz es perpendicular a $W$.

El error $\mathbf{e} = \mathbf{b} – \hat{\mathbf{b}}$ es siempre perpendicular a todo vector de $W$: $\langle\mathbf{e}, \mathbf{w}\rangle = 0\ \forall\,\mathbf{w}\in W$. Esta perpendicularidad es la condición de optimalidad (condición de Karush-Kuhn-Tucker del problema de mínima distancia).

La aplicación más importante en ingeniería es la regresión lineal: ajustar una recta (o un hiperplano) a datos experimentales es equivalente a proyectar el vector de observaciones $\mathbf{b}$ sobre el subespacio columna de la matriz de diseño $A$. La solución $\hat{\mathbf{x}} = (A^TA)^{-1}A^T\mathbf{b}$ es exactamente la proyección ortogonal.

El determinante de una matriz cuadrada $A\in\mathbb{R}^{n\times n}$ mide el factor de escala de volumen que aplica la transformación lineal $f(\mathbf{x}) = A\mathbf{x}$: si $\det(A)=0$, la transformación colapsa el espacio $n$-dimensional en un subespacio de dimensión menor (al menos una columna es combinación lineal de las demás), y por tanto existe un vector no nulo $\mathbf{v}$ con $A\mathbf{v}=\mathbf{0}$, es decir, $\operatorname{Ker}(A)\neq\{\mathbf{0}\}$.

El sistema $A\mathbf{x}=\mathbf{b}$ tiene solución única $\Leftrightarrow$ $A$ es invertible $\Leftrightarrow$ $\det(A)\neq 0$ $\Leftrightarrow$ $\operatorname{rang}(A)=n$ $\Leftrightarrow$ $\operatorname{Ker}(A)=\{\mathbf{0}\}$. Estas cinco condiciones son equivalentes (Teorema Invertible, Lay §2.3).

En la práctica numérica, no se usa el determinante para decidir invertibilidad (es numéricamente inestable para matrices grandes). Se usa el número de condición $\kappa(A) = \sigma_{\max}/\sigma_{\min}$: si $\kappa\gg 1$, la matriz está mal condicionada y los errores numéricos se amplifican.

Los autovalores $\lambda_i$ sólo están definidos para matrices cuadradas y pueden ser complejos. Los valores singulares $\sigma_i$ están definidos para cualquier matriz rectangular $A\in\mathbb{R}^{m\times n}$ y son siempre reales y no negativos: $\sigma_i = \sqrt{\lambda_i(A^TA)}$.

Para matrices simétricas definidas positivas, los valores singulares coinciden con los autovalores. Para matrices asimétricas o rectangulares, son conceptos distintos. La SVD $A=U\Sigma V^T$ siempre existe y es única (salvo signos); la descomposición espectral $A=PDP^{-1}$ puede no existir (si $A$ no es diagonalizable).

En aplicaciones: los autovalores gobiernan la dinámica de sistemas lineales (estabilidad, oscilaciones); los valores singulares miden la geometría de la transformación (cómo deforma la bola unitaria) y son la herramienta correcta para compresión de datos, PCA y regularización numérica.

Un sistema lineal de EDOs $\dot{\mathbf{x}} = A\mathbf{x}$ con condición inicial $\mathbf{x}(0)=\mathbf{x}_0$ se resuelve exactamente mediante la exponencial de matriz: $\mathbf{x}(t) = e^{At}\mathbf{x}_0$. Si $A$ es diagonalizable: $A = PDP^{-1}$ con $D = \operatorname{diag}(\lambda_1,\ldots,\lambda_n)$, entonces $e^{At} = Pe^{Dt}P^{-1}$ y $e^{Dt} = \operatorname{diag}(e^{\lambda_1 t},\ldots,e^{\lambda_n t})$.

El cambio de variable $\mathbf{y} = P^{-1}\mathbf{x}$ desacopla el sistema: $\dot{\mathbf{y}} = D\mathbf{y}$ se convierte en $n$ ecuaciones escalares independientes $\dot{y}_i = \lambda_i y_i$, cada una con solución $y_i(t) = y_i(0)e^{\lambda_i t}$. La solución original es $\mathbf{x}(t) = P\mathbf{y}(t)$.

Los autovalores determinan el comportamiento asintótico: si $\operatorname{Re}(\lambda_i) < 0$ para todo $i$, el sistema es estable y $\mathbf{x}(t)\to\mathbf{0}$. Si algún $\operatorname{Re}(\lambda_i) > 0$, el sistema es inestable.

Glosario Completo de Álgebra Lineal

Matriz Invertible
Matriz cuadrada $A$ con $\det(A)\neq 0$. Equivale a: $\operatorname{rang}(A)=n$, $\operatorname{Ker}(A)=\{\mathbf{0}\}$, $A\mathbf{x}=\mathbf{b}$ tiene solución única.
Autovalor (Eigenvalue)
Escalar $\lambda$ con $A\mathbf{v}=\lambda\mathbf{v}$, $\mathbf{v}\neq\mathbf{0}$. Raíz del polinomio característico $\det(A-\lambda I)=0$.
Subespacio Invariante
Subespacio $W\subseteq V$ con $f(W)\subseteq W$: la transformación no saca vectores de $W$. El autoespacio de $\lambda_i$ es el subespacio invariante mínimo.
Vector Ortogonal
$\mathbf{u}\perp\mathbf{v} \Leftrightarrow \langle\mathbf{u},\mathbf{v}\rangle=0$. En $\mathbb{R}^n$ equivale a $\mathbf{u}^T\mathbf{v}=0$.
Rango de una Matriz
$\operatorname{rang}(A) = \dim\operatorname{Im}(A)$. Número de columnas (o filas) linealmente independientes. Igual al número de pivotes en la RREF.
Nulidad
$\operatorname{nul}(A) = \dim\operatorname{Ker}(A)$. Por el Teorema del Rango-Nulidad: $\operatorname{rang}(A) + \operatorname{nul}(A) = n$ (número de columnas).
Forma de Jordan
Descomposición $A=PJP^{-1}$ cuando $A$ no es diagonalizable. $J$ es casi diagonal con bloques de Jordan en la diagonal principal.
Valores Singulares
$\sigma_i = \sqrt{\lambda_i(A^TA)} \geq 0$. La SVD $A=U\Sigma V^T$ siempre existe para cualquier matriz $m\times n$, real o compleja.
Pseudoinversa de Moore-Penrose
$A^+ = V\Sigma^+U^T$. Generaliza la inversa a matrices rectangulares o singulares. Solución de mínimos cuadrados: $\hat{\mathbf{x}} = A^+\mathbf{b}$.
Número de Condición
$\kappa(A) = \sigma_{\max}/\sigma_{\min}$. Mide la sensibilidad de la solución a perturbaciones en los datos. $\kappa\gg 1$ indica mal condicionamiento.
Proyección Ortogonal
$P_W = A(A^TA)^{-1}A^T$ proyecta sobre $\operatorname{col}(A)$. Cumple $P_W^2=P_W$ (idempotente) y $P_W^T=P_W$ (simétrica).
Forma Cuadrática Definida Positiva
$Q(\mathbf{x})=\mathbf{x}^TA\mathbf{x}>0\ \forall\,\mathbf{x}\neq\mathbf{0}$. Equivale a: todos los autovalores $> 0$ o todos los menores de Sylvester $> 0$.

Bibliografía, Recursos y Cierre

📘
Gilbert Strang — Introduction to Linear Algebra (MIT Press, 5.ª ed.)Referencia canónica del MIT 18.06. Cubre todo el temario con rigor y aplicaciones reales. Clases disponibles gratuitamente en OCW.
📗
David C. Lay — Linear Algebra and Its Applications (5.ª ed.)Muy pedagógico. El estándar en la mayoría de universidades europeas e hispanoamericanas.
📙
Sheldon Axler — Linear Algebra Done Right (3.ª ed.)Enfoque conceptual sin determinantes en los primeros capítulos. Para entender la teoría profunda.
📕
Horn & Johnson — Matrix Analysis (2.ª ed.)Referencia avanzada. Valores singulares, normas matriciales y descomposiciones estructurales.
🌐
MIT OCW 18.06 — Linear Algebra (Strang)Curso completo gratuito con vídeos, problemas y exámenes resueltos.
🐍
NumPy Linear Algebra ReferenceDocumentación oficial de numpy.linalg con ejemplos y referencias a LAPACK.

Has recorrido las seis áreas principales del temario de Álgebra Lineal para ingeniería: espacios vectoriales con sus 10 axiomas, subespacios y bases; transformaciones lineales con el Teorema del Rango-Nulidad; diagonalización con el polinomio característico y los teoremas de Cayley-Hamilton; el espacio euclídeo con Gram-Schmidt, proyección ortogonal y formas cuadráticas; la computación con NumPy y las cuatro grandes factorizaciones; y el sistema de preguntas frecuentes. El siguiente paso es resolver problemas de Strang o Lay en cada sección y verificar con los scripts de Python incluidos.

Estado de la guía

Guía completada el 20 de mayo de 2026. Alineada con los temarios de Álgebra Lineal de las principales universidades politécnicas españolas e hispanoamericanas. Los simuladores interactivos funcionan en cualquier navegador moderno sin plugins adicionales.

Artículos satélite relacionados con Álgebra Lineal

Álgebra Lineal Espacios Vectoriales Diagonalización Formas Cuadráticas Transformaciones Lineales Python NumPy Strang MIT David Lay Autovalores SVD Mínimos Cuadrados

FísicaIngeniería

© 2026 FísicaIngeniería · Guía de Álgebra Lineal para Ingeniería · El Manual de Alto Rendimiento

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *