La PizarraMatemática.

Matemáticas para ingeniería

Aritmética de punto flotante y propagación de errores

Escribir un número en una máquina se parece a anotarlo con un número limitado de cifras: algunos valores caben exactamente y otros se sustituyen por uno cercano. Primero veremos qué se guarda; después mediremos el error y seguiremos su recorrido por las operaciones. Separaremos siempre el dato ideal, el dato almacenado y el resultado calculado.

1. La precisión limita las cifras disponibles; el exponente cambia la escala

Un formato de punto flotante escribe un signo, una parte significativa y un exponente. En base dos, un número normalizado tiene forma ±(1+b₁/2+b₂/4+…)·2ᵉ, donde cada bᵢ es cero o uno. Si la precisión es p=3, solo guardamos el uno inicial y dos bits después del punto.

El exponente permite mover la escala, pero no añade cifras significativas.

Los valores disponibles no tienen una separación absoluta constante
Modelo binario: precisión p=3De 1 a 211,251,51,75222,533,54De 2 a 4Separación: 1/4Separación: 1/2Al duplicar escala, se duplica el salto.
Con tres bits significativos, el salto entre valores pasa de 1/4 a 1/2 al duplicar la escala. Cada fila tiene su propia escala numérica y muestra cuatro huecos: la separación absoluta aumenta.

Redondear al más cercano significa elegir el representable con menor distancia al valor exacto. En los empates usaremos significando entero par. No todos los decimales finitos caben en binario: 1/10 tiene un factor cinco en su denominador reducido; una fracción tiene expansión binaria finita exactamente cuando su denominador es una potencia de dos.

Fabricar la lista antes de redondear

Usamos base dos y tres bits significativos, alrededor de uno.

  1. Cuatro significandos

    1.00₂; 1.01₂; 1.10₂; 1.11₂ equivalen a 1; 1,25; 1,5; 1,75.

  2. Cambiar exponente

    Multiplicar por dos produce 2; 2,5; 3; 3,5. La separación pasa de 0,25 a 0,5.

  3. Elegir vecino

    1,4 está a 0,15 de 1,25 y a 0,1 de 1,5: se guarda 1,5.

Resultado

El salto absoluto aumenta al cambiar de escala.

Lo comprobamos

No confundimos tres bits con tres cifras decimales.

Resolver un empate con una regla declarada

Redondeamos 1,375 y 1,125 en el mismo modelo binario.

  1. Primer punto medio

    1,375 queda exactamente entre 1,25=5·2⁻² y 1,5=6·2⁻².
  2. Desempatar

    El entero seis es par: elegimos 1,5.

  3. Segundo punto medio

    1,125 queda entre 1=4·2⁻² y 1,25=5·2⁻².

    Ahora el entero par es cuatro: elegimos 1.

Resultado

1,375→1,5 y 1,125→1.

Lo comprobamos

Desempatar a par no significa redondear siempre hacia arriba ni hacia abajo.

2. El error absoluto conserva unidades; el relativo compara con el valor verdadero

Si x es el valor de referencia y a la aproximación, el error absoluto es |a−x|.

El relativo es |a−x|/|x| cuando x≠0.

Para expresarlo en porcentaje multiplicamos por cien. El denominador es el valor de referencia, no la aproximación: cambiarlo define otra medida.

Un error absoluto pequeño puede ser grande respecto de un valor muy pequeño. En cero no existe el error relativo usual. Para aceptar aproximaciones cerca y lejos de cero se puede fijar |a−x|≤atol+rtol·|x|, con tolerancia absoluta y relativa no negativas y unidades coherentes. Es un criterio elegido para la aplicación, no una garantía automática de exactitud.

El tamaño del dato cambia la lectura del error

Comparamos 99 con 100 y 0,009 con 0,01.

  1. Primer caso

    |99−100|=1; al dividir por 100 obtenemos 0,01=1 %.
  2. Segundo caso

    |0,009−0,01|=0,001; al dividir por 0,01 obtenemos 0,1=10 %.
  3. Interpretar

    La segunda diferencia absoluta es menor, pero representa una parte mayor de su referencia.

Resultado

Error absoluto y relativo responden a preguntas distintas.

Lo comprobamos

Las unidades desaparecen en el cociente relativo.

Aceptar una aproximación a cero sin dividir por cero

La referencia es x=0; a=0,0003; atol=0,001 y rtol=0,01.

  1. Diferencia

    El error absoluto vale 0,0003.

  2. Umbral mixto

    atol+rtol·|x|=0,001+0=0,001.
  3. Decisión

    0,0003≤0,001, así pasa este criterio.

    No calculamos un porcentaje respecto de cero.

Resultado

La tolerancia absoluta resuelve la comparación en cero.

Lo comprobamos

Pasar la tolerancia no convierte el error relativo indefinido en cero.

3. El modelo relativo describe una operación bajo hipótesis concretas

Para una operación básica correctamente redondeada al más cercano escribimos fl(a∘b)=(a∘b)(1+δ), |δ|≤u, si el resultado está en el rango normal y no hay desbordamiento. u es el redondeo unitario del formato: en base β y precisión p, u=(1/2)β^(1−p). No es el error total de un programa ni presupone errores independientes.

En el formato binary64 de Number, la precisión normal es de 53 bits: u=2⁻⁵³. La distancia del uno al siguiente representable mayor es 2⁻⁵², distinta de u. Los subnormales permiten valores más próximos a cero, pero allí una cota absoluta puede sustituir a la relativa. Un resultado fuera del rango finito tampoco satisface este modelo.

Comprobar una cota sin confundir cifras con decimales

Modelo decimal con tres cifras significativas; redondeamos 1,234.

  1. Guardar

    El vecino más cercano es 1,23: se conservan tres cifras significativas.

  2. Medir

    El error relativo es 0,004/1,234≈0,0032415.
  3. Comparar

    u=(1/2)·10⁻²=0,005.

    El error relativo observado es menor que u.

Resultado

La cota sirve para esta operación de redondeo y sus hipótesis.

Lo comprobamos

A otra escala, 1234 se redondearía a 1230, no a un número con tres decimales.

Ver por qué muy cerca de cero la cota relativa puede fallar

En binary64 sea η=2⁻¹⁰⁷⁴, el menor subnormal positivo; redondeamos el valor exacto η/2 al más cercano con empate a par.

  1. Vecinos

    Los dos valores más cercanos son 0 y η, a distancia η/2.

  2. Empate

    Se selecciona cero con la regla a par.

  3. Errores

    El error absoluto es η/2; el relativo respecto de η/2 vale uno, mucho mayor que 2⁻⁵³.

Resultado

No extendemos la cota relativa normal a todo el rango subnormal.

Lo comprobamos

La descripción de esta operación no requiere que η/2 sea almacenable como entrada.

4. Una contribución puede desaparecer y el orden de las sumas puede importar

Absorción significa que una contribución es demasiado pequeña para cambiar el número representable grande al que se añade. No se ha demostrado que valga cero matemáticamente: simplemente el resultado redondeado coincide con el sumando grande.

En aritmética real podemos reagrupar sumas; en punto flotante cada operación intermedia se redondea. Agrupar magnitudes parecidas o usar sumas compensadas puede reducir errores en ciertos casos, pero no hace exacta cualquier suma ni elimina los límites de rango. Siempre declararemos el formato del ejemplo.

Una décima que no cambia un cien almacenado

Modelo decimal con tres cifras significativas: calculamos 100+0,1.

  1. Cuenta exacta

    100+0,1=100,1.
  2. Vecinos del formato

    Por encima de cien, los valores próximos son 100 y 101; la distancia al primero es solo 0,1.

  3. Redondear

    fl(100+0,1)=100.

    El error absoluto de esta suma es 0,1.

Resultado

La aportación se pierde en el resultado almacenado.

Lo comprobamos

No concluimos que 0,1 sea cero ni que las décimas nunca se puedan representar.

Las mismas tres entradas producen dos resultados

En ese modelo evaluamos 1000+1−1000 con dos agrupaciones.

  1. Agrupar a la izquierda

    1000+1=1001 se redondea a 1000.
    Después 1000−1000=0.
  2. Agrupar a la derecha

    1−1000=−999 cabe exactamente con tres cifras.
    Después 1000−999=1.
  3. Referencia real

    La cuenta exacta vale uno; la primera agrupación ha perdido la unidad.

Resultado

fl(fl(1000+1)−1000)=0, mientras la otra agrupación da 1.

Lo comprobamos

El redondeo ocurre después de cada operación; no solo al escribir el resultado final.

5. Cancelar cifras comunes puede dejar al descubierto errores anteriores

Al restar números cercanos desaparecen muchas cifras comunes. Si los datos de entrada ya estaban redondeados, el resultado pequeño puede quedar dominado por esos errores. La última resta incluso puede ser exacta entre los números almacenados: el error se mide respecto de los datos ideales.

La pérdida puede ocurrir antes de hacer la resta
Dos datos reales distintos1,2341,2333 cifras1,23−1,230Diferencia ideal: 0,001La resta final puede ser exacta.
Los datos ideales 1,234 y 1,233 difieren en 0,001. A tres cifras significativas se guardan ambos como 1,23. La resta almacenada es exactamente cero: la información se perdió al redondear las entradas.

Sean datos ideales x, y y perturbaciones Δx, Δy. La diferencia calculada sin nuevo redondeo es (x−y)+(Δx−Δy). Su error absoluto es a lo sumo |Δx|+|Δy|. Si |x−y| es diminuto, el cociente relativo puede ser grande. Esta sensibilidad no se arregla diciendo que se han impreso muchas cifras.

La información se pierde antes de restar

Datos ideales 1,234 y 1,233; cada uno se redondea a tres cifras significativas.

  1. Diferencia ideal

    1,234−1,233=0,001.
  2. Datos guardados

    Ambos quedan en 1,23.

  3. Última operación

    1,23−1,23=0 es una resta exacta de los datos guardados, pero su error respecto del resultado ideal es 0,001: un 100 %.

Resultado

El cero obtenido no prueba que los datos ideales fueran iguales.

Lo comprobamos

La causa aquí son las entradas redondeadas, aunque la cancelación hace visible su efecto.

Dos errores pequeños se combinan en una diferencia pequeña

x=10; y=9,99; usamos x̃=10,001 e ỹ=9,989.

  1. Referencia

    x−y=0,01.
  2. Perturbaciones

    Δx=0,001 y Δy=−0,001; la diferencia cambia en Δx−Δy=0,002.
  3. Resultado

    x̃−ỹ=0,012.
    El error relativo de la diferencia es 0,002/0,01=20 %.
Resultado

Errores de una milésima producen un 20 % de error en esta diferencia.

Lo comprobamos

La cota |Δx|+|Δy|=0,002 se alcanza porque los errores llevan signos opuestos.

6. La derivada aproxima la propagación; el resto indica qué hemos omitido

Para una función diferenciable, f(x+Δx)−f(x)=f′(x)Δx+o(|Δx|).

La expresión lineal ayuda a estimar cambios pequeños, pero no es una igualdad exacta salvo casos particulares. En varias entradas sumamos las contribuciones de las derivadas parciales. Las unidades de cada término deben ser las de la salida.

Hay otra herramienta para cadenas de factores de redondeo: si cada |δᵢ|≤u y nu<1, entonces ∏ᵢ₌₁ⁿ(1+δᵢ)=1+θₙ con |θₙ|≤γₙ=nu/(1−nu). Una prueba acota por (1±u)ⁿ: abajo, Bernoulli da (1−u)ⁿ≥1−nu; arriba, el binomio y la serie geométrica dan (1+u)ⁿ≤1/(1−nu). No se supone independencia. Antes de aplicar γₙ hay que justificar que el algoritmo produce esa estructura de factores; n no es sin más el número de líneas del programa.

Separar el cambio lineal del término cuadrático

f(x)=x²; partimos de x=3 y añadimos Δx=0,01.

  1. Referencia y nueva salida

    3²=9; 3,01²=9,0601.
  2. Predicción lineal

    f′(3)Δx=6·0,01=0,06.
  3. Resto exacto

    (3+Δx)²−9=6Δx+(Δx)²=0,06+0,0001.
Resultado

El cambio exacto es 0,0601; la aproximación de primer orden es 0,06.

Lo comprobamos

La diferencia entre ambas es precisamente 0,0001.

Dos entradas cambian un producto

x=2; y=5; Δx=0,01; Δy=−0,02.

  1. Expandir completo

    (x+Δx)(y+Δy)−xy=yΔx+xΔy+ΔxΔy.
  2. Parte lineal

    5·0,01+2·(−0,02)=0,01.
  3. Cruce y resultado

    ΔxΔy=−0,0002.

    El cambio exacto es 0,0098 y el producto nuevo 10,0098.

Resultado

La aproximación lineal omite el producto de las perturbaciones.

Lo comprobamos

Volver a multiplicar 2,01·4,98 verifica 10,0098.

Calcular una cota para cuatro factores

En un modelo con u=0,005 justificamos una cadena de cuatro factores (1+δᵢ).

  1. Condición

    nu=4·0,005=0,02<1.
  2. Cota

    γ₄=0,02/0,98=1/49≈0,0204082.
  3. Caso extremo positivo

    Si todos δᵢ=u, el cambio es 1,005⁴−1=0,020150500625, menor que γ₄.
Resultado

El producto difiere de uno en valor absoluto como máximo 1/49.

Lo comprobamos

No estamos afirmando que todos los algoritmos de cuatro operaciones tengan ese error relativo.

7. Una identidad algebraica puede evitar restar dos números casi iguales

Para h≥−1, multiplicar por el conjugado da √(1+h)−1=h/(√(1+h)+1).

El denominador es al menos uno, así no se anula. Cerca de h=0 la forma original resta cantidades próximas; la segunda conserva h en el numerador. Las expresiones coinciden en aritmética real, pero pueden producir errores diferentes al redondear.

Reformular no recupera un dato que ya se perdió. Si nos entregan solo x=fl(1+h)=1, sin conservar h, no podemos deducir qué incremento pequeño había. Tampoco se afirma que todas las bibliotecas evalúen cada raíz cuadrada con el mismo redondeo: el modelo usado debe quedar explícito.

Verificar la identidad con un incremento que se puede calcular a mano

Tomamos h=8.

  1. Forma original

    √9−1=3−1=2.
  2. Forma racionalizada

    8/(√9+1)=8/4=2.
  3. Comprobar dominio

    8≥−1 y el denominador cuatro es positivo.
Resultado

Ambas formas dan dos; la ventaja numérica aparece especialmente para incrementos pequeños.

Lo comprobamos

La identidad se obtuvo de (a−b)(a+b)=a²−b².

Conservar un incremento que la suma absorbe

Modelo binary64 con operaciones y raíz redondeadas al más cercano; conservamos h=2⁻⁵⁴ como entrada.

  1. Suma redondeada

    1+h está más cerca de uno que del siguiente representable; fl(1+h)=1.

  2. Restar después

    La raíz de ese uno es uno; la forma original calculada da cero.

  3. Mantener h

    La forma racionalizada usa el h conservado y el denominador calculado dos: obtiene 2⁻⁵⁵, distinto de cero y próximo al valor exacto.

Resultado

La reformulación evita perder el incremento en la resta final.

Lo comprobamos

La comparación se hace en el modelo declarado; no promete el mismo comportamiento para toda implementación de raíces.

Reconocer el mismo mecanismo con otra constante

Reformulamos √(9+h)−3 para h≥−9 y evaluamos h=7.

  1. Conjugado

    Multiplicamos por √(9+h)+3: el numerador queda h.

  2. Nueva forma

    √(9+h)−3=h/(√(9+h)+3); el denominador es al menos tres.
  3. Evaluar

    7/(4+3)=1, igual a √16−3.
Resultado

La técnica se reconoce por la diferencia de dos cuadrados.

Lo comprobamos

No se cambia la constante tres por uno sin rehacer el álgebra.

8. Comprobar exige una referencia independiente y una afirmación de error

Distinguimos cuatro objetos: dato ideal, representación de entrada, operaciones ejecutadas y número mostrado. Redondear la impresión no cambia lo que se calculó internamente. Más cifras visibles tampoco certifican más cifras correctas. Podemos usar fracciones exactas, cotas analíticas, intervalos o una reformulación independiente para contrastar el resultado.

Repetir con más precisión o con otra fórmula es útil para detectar problemas; la coincidencia por sí sola no demuestra exactitud, pues los dos caminos pueden compartir el mismo error de entrada o la misma suposición equivocada. Siempre indicaremos qué referencia se usa y bajo qué condiciones da una cota.

Una fracción permite medir el error sin una calculadora decimal

Aproximamos 1/7 por 0,143.

  1. Pasar a fracción

    0,143=143/1000.
  2. Diferencia exacta

    143/1000−1/7=(1001−1000)/7000=1/7000.
  3. Error relativo

    (1/7000)/(1/7)=1/1000=0,1 %.
Resultado

El error absoluto es 1/7000 y el relativo 0,001.

Lo comprobamos

No hemos usado una expansión decimal truncada de la propia referencia.

Encerrar una raíz usando cuadrados exactos

Queremos controlar la aproximación 1,414 a √2.

  1. Extremo inferior

    1,414²=1,999396<2.
  2. Extremo superior

    1,415²=2,002225>2.
  3. Monotonía

    El cuadrado crece en los positivos: 1,414<√2<1,415.

    Por tanto el error absoluto de 1,414 es menor que 0,001.

Resultado

La aproximación tiene una cota comprobada, además de cifras impresas.

Lo comprobamos

La conclusión usa positividad y monotonía; no basta comparar cuadrados sin atender al signo.

Ahora lo resolvemos de principio a fin.

EJEMPLO RESUELTO 1

Medir un error

Aproximamos 1/3 por 0,33. Calcula sus errores absoluto y relativo.

  1. Identificar la referencia

    El valor exacto es x=1/3; el aproximado a=0,33=33/100.
  2. Mismo denominador

    1/3−33/100=(100−99)/300=1/300.
  3. Tomar valor absoluto

    Como la aproximación está por debajo, |a−x|=1/300.
  4. Comparar con el exacto

    Dividimos por |x|=1/3: (1/300)·3=1/100=0,01.
  5. Pasar a porcentaje

    0,01·100 %=1 %.

    El cociente entre aproximación y exacto es 0,99.

  6. Cerrar

    Errores absoluto 1/300 y relativo 1 %; no dividimos por 0,33.

Resultado

Error absoluto 1/300; relativo 0,01, es decir, 1 %.

Lo comprobamos

0,33 es el 99 % de 1/3.

EJEMPLO RESUELTO 2

Una resta que podemos evitar

Reformula √(1+h)−1 y calcula el valor para h=3.

  1. Revisar el dominio

    Para h=3 se cumple h≥−1; la raíz es real.
  2. Introducir el conjugado

    Multiplicamos √(1+h)−1 por (√(1+h)+1)/(√(1+h)+1).

  3. Simplificar el numerador

    (√(1+h))²−1²=(1+h)−1=h.
  4. Conservar el denominador

    Queda h/(√(1+h)+1), siempre positivo en el dominio.

  5. Sustituir

    Con h=3 obtenemos 3/(√4+1)=3/3=1.
  6. Comprobar por la forma inicial

    √4−1=2−1=1; ambas rutas coinciden exactamente.
Resultado

El valor es 1.

Lo comprobamos

La expresión original es √4−1=1; la reformulación exige h≥−1 y denominador no nulo, que aquí siempre es positivo.

Los símbolos que hemos usado

fl(x)
Representación o resultado redondeado en la aritmética elegida.
Base β
Base de representación; es dos en la aritmética binaria habitual.
Precisión p
Número de cifras significativas de la mantisa en esa base.
u
Unidad de redondeo; para redondeo al más cercano de precisión p, normalmente β^(1−p)/2.
Error absoluto
|a−x|, si a aproxima al valor verdadero x.
Error relativo
|a−x|/|x|, definido con ese denominador cuando x≠0.
Cancelación
Pérdida relativa de información al obtener una diferencia pequeña de cantidades cercanas.

Ahora te toca a ti.

Tienes cinco ejercicios. Inténtalos; las pistas te ayudan si te atascas.

Practicar este tema →

Para ampliar