4 votos

¿Cómo resolver con seguridad un par de ecuaciones elementales en un sistema de cálculo en coma flotante?

Escribí un sencillo y corto programa de ordenador para resolver un par de ecuaciones del formato ,

  • $y = a1 * x + b1$

  • $y = a2 * x + b2$ .

Pero , emite respuestas claramente erróneas a veces cuando $abs(a1)$ o $abs(a2)$ es muy pequeño, pero no cero. Analizo el problema como sigue. Cuando calcula $a1-a2$ para los más pequeños $a2$ la función de punto flotante se calcula como $a1-a2 = a1$ . ¿Es posible y cómo resuelven los matemáticos con seguridad estas ecuaciones en sus investigaciones?

Gracias de antemano.

Para más detalles, mi algoritmo es el siguiente.

  • comprobar $ a1 != a2 $ ;
  • $0 = (a1-a2)x+(b1-b2)$ ;
  • $x=-1*(b1-b2)/(a1-a2)$ .

3voto

Shabaz Puntos 403

Si se equipara el $y$ 's, se obtiene $a2*x+b2=a1*x+b1$ o $x=\frac{b1-b2}{a2-a1}$ . La sustracción de cantidades casi iguales puede perder precisión. No es tanto $a1$ o $a2$ siendo pequeño en comparación con $1$ Es decir, es $a2-a1$ siendo pequeño en comparación con $a1$ . Piensa en restar $1.000001-.999999$ cuando ambos tienen sólo $6$ precisión de los dígitos. Si cada uno es $\pm 1 e-6$ la diferencia es $\pm 2 e-6$ que es un desastre si la diferencia es $2 e-6$ . A veces no hay ayuda. Si estas dos líneas tienen casi la misma pendiente, la intersección está mal definida. Pero si se trata de una cuadrática, hay ayuda. La sección 5.6 de Recetas numéricas y muchos textos de análisis numérico discuten cómo resolverlo aquí.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X