🧮 Computational Mathematics

Inicio · Parte 11 — Métodos numéricos y computación científica

231 — Sistemas lineales directos

cientifico clase 11 de 20 4 horas demostración direct_linear_solvers

Factorizar una vez y sustituir muchas: LU convierte O(n³) en O(n²) por sistema.

Fórmulas

A = LU  con pivoteo parcial:  PA = LU
resolver Ly = Pb, luego Ux = y
coste: LU ≈ (2/3)n³;  cada sustitución ≈ n²

Desarrollo

Un método directo resuelve el sistema en un número predeterminado de operaciones, sin iterar. La eliminación gaussiana es el prototipo, y su versión organizada como factorización LU separa el trabajo en dos fases: descomponer la matriz, que cuesta O(n³), y resolver por sustitución, que cuesta O(n²).

Esa separación es lo que hace valiosa la factorización. Si hay que resolver el mismo sistema con veinte lados derechos distintos —algo habitual en simulación, en control y en métodos implícitos para EDO— se factoriza una vez y se sustituye veinte, en vez de repetir la eliminación completa veinte veces.

El pivoteo parcial es obligatorio, no opcional. Intercambiar filas para que el pivote sea el elemento de mayor módulo evita dividir por números diminutos, y con ello evita la amplificación de errores que puede destruir la solución. Sin pivoteo, sistemas perfectamente resolubles dan resultados sin ningún dígito correcto.

Verificar la solución es barato y obligatorio: calcular el residuo Ax − b. Un residuo pequeño no garantiza que la solución sea precisa —en sistemas mal condicionados puede ser minúsculo con una solución muy alejada de la real— pero un residuo grande sí garantiza que algo va mal. Combinar residuo y número de condición da el diagnóstico completo.

Ejemplo trabajado

Sistema 3×3 simétrico definido positivo, resuelto por LU.

A = [[ 4  −2   1]        b = [ 11]
     [−2   4  −2]            [−16]
     [ 1  −2   4]]           [ 17]

L = [[ 1,00   0,00   0,00]
     [−0,50   1,00   0,00]
     [ 0,25  −0,50   1,00]]

intercambios de fila: 0     (ya es dominante)

solución x = [1, −2, 3]
residuo Ax − b = [0, 0, 0]                          ✓

Coste con n = 3:  LU ≈ 18 operaciones
Cada nuevo lado derecho: ≈ 9 operaciones, sin refactorizar.

Qué calcula el laboratorio

Solvers directos: LU y sustitución, con conteo de operaciones.

python classes/part-11-metodos-numericos-y-computacion-cientifica/231-sistemas-lineales-directos/lab.py
compmath run 231

Salidas del laboratorio (10)

Muestra de la ejecución real

{
  "A": [
    [
      4.0,
      -2.0,
      1.0
    ],
    [
      -2.0,
      4.0,
      -2.0
    ],
    [
      1.0,
      -2.0,
      4.0
    ]
  ],
  "b": [
    11.0,
    -16.0,
    17.0
  ],
  "solucion": [
    1.0,
    -2.0,
    3.0
  ],
  "residuo": [
    0.0,
    0.0,
    0.0
  ],
  "intercambios": 0,
  "L": [
    [
      1.0,
      0.0,
      0.0
    ],
    [
      -0.5,
      1.0,
      0.0
    ],
    [
      0.25,
      -0.5,
      1.0
    ]
  ]
}

Errores comunes

Dónde se usa

Resolución de sistemas en simulación, mínimos cuadrados, métodos implícitos para EDO y cualquier problema con múltiples lados derechos.

Idea rectora de la parte

Todo método iterativo necesita criterio de parada y tolerancia declarada.

Error a evitar

Iterar sin límite máximo y colgar el proceso.

Conexión con IA

Los Neural ODE, los samplers de difusión y los optimizadores de segundo orden son métodos numéricos con parámetros aprendidos.

Bibliografía de la clase

Archivos de la clase