🧮 Computational Mathematics

Inicio · Parte 01 — Aritmética computacional y representación numérica

035 — Condicionamiento de problemas

basico-computacional clase 15 de 20 4 horas demostración conditioning

El número de condición mide cuánto amplifica el problema el error de la entrada, con independencia del algoritmo.

Fórmulas

κ(f, x) = |x·f′(x) / f(x)|
error relativo de salida ≈ κ · error relativo de entrada

Desarrollo

El condicionamiento es una propiedad del problema, no de cómo se resuelva. Formaliza la pregunta: si perturbo la entrada un 0.001 %, ¿cuánto cambia la salida? El número de condición es el factor de amplificación. Si vale 1, el problema conserva la precisión; si vale 10⁸, un error de entrada en el dígito 16 se convierte en un error en el dígito 8 de la salida.

Para una función de una variable, κ = |x·f′(x)/f(x)|. La fórmula dice algo intuitivo: el problema está mal condicionado donde la función es muy sensible en relación a su propio valor, típicamente cerca de sus ceros. f(x) = 1 − x cerca de x = 1 tiene condición enorme: es la versión analítica de la cancelación catastrófica.

La consecuencia práctica es dura y conviene aceptarla pronto: ningún algoritmo puede resolver con precisión un problema mal condicionado. Si la entrada tiene 16 dígitos y la condición es 10⁸, la salida tiene como mucho 8 dígitos correctos, use uno el método que use. Buscar un algoritmo mejor es buscar en el sitio equivocado; hay que reformular el problema.

En álgebra lineal el mismo concepto aparece como el número de condición de una matriz —cociente entre el mayor y el menor valor singular (clase 132)—, y en machine learning como la razón entre el mayor y el menor autovalor del Hessiano, que determina lo lento que converge el descenso de gradiente (clase 244).

Ejemplo trabajado

Condición de f(x) = 1 − x en tres puntos.

κ(x) = |x · f′(x) / f(x)| = |x / (1 − x)|

x = 0.5     f(x) = 0.5        κ = 1.0        bien condicionado
x = 0.99    f(x) = 0.01       κ = 99         empieza a amplificar
x = 1e−8    f(x) ≈ 1.0        κ = 1e−8       muy bien condicionado

x = 0.9999  f(x) = 1e−4       κ = 9999
  un error de entrada de 1e−16 → error de salida de 1e−12

La condición no depende de cómo se calcule 1 − x: depende del problema.

Qué calcula el laboratorio

Número de condición de una función: sensibilidad del problema.

python classes/part-01-aritmetica-computacional-y-representacion-numerica/035-condicionamiento-de-problemas/lab.py
compmath run 035

Salidas del laboratorio (4)

Muestra de la ejecución real

{
  "x=0.5": {
    "f(x)=1-x": 0.5,
    "condicion": 1.0
  },
  "x=0.99": {
    "f(x)=1-x": 0.010000000000000009,
    "condicion": 98.99999999999991
  },
  "x=1e-08": {
    "f(x)=1-x": 0.99999999,
    "condicion": 1.0000000100000002e-08
  },
  "lectura": "condición alta = el problema amplifica cualquier error de entrada"
}

Errores comunes

Dónde se usa

Diagnóstico de sistemas lineales (parte 05), regularización (ridge mejora el condicionamiento, clase 283) y análisis de convergencia de optimizadores. Es la pregunta previa a elegir método.

Idea rectora de la parte

Reproducibilidad numérica exige fijar orden de operaciones, no solo semillas.

Error a evitar

Usar float para dinero en vez de Decimal o enteros de centavos.

Conexión con IA

float32, bfloat16 y la cuantización a int8 son decisiones de representación. Los NaN en un entrenamiento casi siempre nacen aquí, no en la arquitectura.

Bibliografía de la clase

Archivos de la clase