2010-10-31 14 views
5

Por qué en el método de bisección es mejor para calcular el punto medio c entre ayb concalcular el punto medio

c = a + (b - a)/2. 

en lugar de la más simple:

puntos
c = (a + b)/2. 

todas las variables son flotantes.

+0

¿Estamos hablando 'int' o' float'? ¿Y puede incluir una referencia a "por qué es mejor"? –

+2

¿Por qué crees que el primer método es mejor? Implica una operación extra de coma flotante en comparación con el segundo método; corre el riesgo de desbordamiento en el raro caso en que 'a' y 'b' son enormes con signos opuestos (mientras que el segundo método corre el riesgo de desbordamiento en el casi raro caso en que 'a' y 'b' son enormes con el mismo signo); ignorando el desbordamiento, el segundo método siempre calculará un punto medio redondeado correctamente en una máquina típica. Lo mismo ocurre con el primero, al menos cuando 'a' y' b' están cerca (y posiblemente en general; no estoy seguro). Así que no veo ningún triunfo limpio para el primer método. –

Respuesta

6

es para evitar posibles desbordamientos/pérdida de precisión en los cálculos intermedios.

+2

El desbordamiento no debería ser un problema con los tipos de coma flotante. La pérdida de precisión podría ser. –

+0

mmm, he estudiado que la operación de resta es peor que la suma con números de puntos flotantes, entonces ¿por qué pierdo precisión con + y no con -? –

+0

¿Cómo y por qué? Parece que no puedo encontrar una explicación de por qué esto funciona. – Will

Cuestiones relacionadas