Inicio · Parte 11 — Métodos numéricos y computación científica
criterio absoluto: ‖xₖ₊₁ − xₖ‖ < tol
criterio relativo: ‖xₖ₊₁ − xₖ‖ / ‖xₖ₊₁‖ < tol
criterio de residuo: ‖Axₖ − b‖ / ‖b‖ < tol
El criterio de parada no es un detalle de implementación: determina qué significa el resultado. Un método iterativo sin criterio declarado devuelve un número cuyo error nadie conoce, y eso lo invalida como resultado científico.
El criterio absoluto falla al cambiar de escala. Una tolerancia de 10⁻⁶ es exigente si la solución vale 1 y absurda si vale 10¹², donde ni siquiera es representable en doble precisión. El criterio relativo escala con la magnitud de la solución y es el que hay que usar por defecto, con la precaución de manejar el caso de solución próxima a cero.
El criterio de residuo mide algo distinto: cuánto incumple la ecuación la solución actual. Es complementario, no equivalente. En un sistema mal condicionado el cambio entre iterados puede ser minúsculo mientras el residuo sigue siendo grande, y al revés. Por eso lo prudente es combinar ambos.
Y siempre, sin excepción, un tope de iteraciones. No es una tolerancia sino una salvaguarda: si el método no converge —porque el problema es singular, porque la condición falla o porque hay un error de programación— el bucle debe terminar e informar de que no convergió, en vez de girar indefinidamente. Un solver que devuelve «no convergí» es infinitamente más útil que uno que se cuelga.
Evolución de los tres criterios en una iteración convergente.
iter cambio abs. cambio rel. norma residuo
1 0,990000 1,000000 1,40e+00
3 0,090000 0,090909 1,27e-01
5 0,009000 0,009009 1,27e-02
7 0,000900 0,000900 1,27e-03
9 1,00e-14 1,00e-14 1,41e-14
solución = [1, 1] 9 iteraciones hasta 1e-14
Criterio recomendado:
parar si (cambio relativo < tol) Y (residuo relativo < tol)
o si iter alcanza max_iter, informando de no convergencia.
Peligro del criterio solo absoluto: si la solución fuera
del orden de 1e12, tol = 1e-6 nunca se alcanzaría.
Criterio de parada: absoluto, relativo y residuo.
python classes/part-11-metodos-numericos-y-computacion-cientifica/233-metodos-iterativos-y-tolerancias/lab.py
compmath run 233
informeiteraciones_hasta_1e-14solucioncriterio_recomendadopeligro_de_solo_absolutosiempre_declarar_max_iter{
"informe": [
{
"iter": 1,
"cambio_absoluto": 0.99,
"cambio_relativo": 1.0,
"norma_del_residuo": 0.9900000000000002
},
{
"iter": 3,
"cambio_absoluto": 0.0009900000000000464,
"cambio_relativo": 0.0009900009900010362,
"norma_del_residuo": 9.900000000051534e-05
},
{
"iter": 6,
"cambio_absoluto": 9.900000819129673e-10,
"cambio_relativo": 9.900000819139574e-10,
"norma_del_residuo": 9.899991937345476e-11
}
],
"iteraciones_hasta_1e-14": 9,
"solucion": [
1.0,
1.0
],
"criterio_recomendado": "combinar cambio relativo y residuo, con tope de iteraciones",
"peligro_de_solo_absoluto": "falla si la escala del problema es muy grande o muy pequeña",
"siempre_declarar_max_iter": true
}
Cualquier solver iterativo, criterios de parada en entrenamiento de modelos, bucles de punto fijo y control de convergencia en simulación.
Los Neural ODE, los samplers de difusión y los optimizadores de segundo orden son métodos numéricos con parámetros aprendidos.
9780898718027, pendiente de resolver.