2010-10-31 6 views
5

Pourquoi la méthode bissectrice il est préférable de calculer le point médian c entre a et b aveccalculate milieu

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

au lieu du plus simple:

c = (a + b)/2. 

toutes les variables sont flottants.

+0

Est-ce qu'on parle d'int ou de float? Et pouvez-vous inclure une référence à "pourquoi c'est mieux"? –

+2

Pourquoi croyez-vous que la première méthode est meilleure? Il implique une opération à virgule flottante supplémentaire par rapport à la seconde méthode; il risque de déborder dans le cas rare où 'a' et' b' sont énormes avec des signes opposés (alors que la seconde méthode risque de déborder dans le cas presque aussi rare où 'a' et' b' sont énormes avec le même signe); En ignorant le débordement, la seconde méthode calculera toujours un point milieu correctement arrondi sur une machine typique. De même que le premier, au moins quand 'a' et' b' sont proches (et peut-être en général, je ne suis pas sûr). Donc, je ne vois pas de victoire propre pour la première méthode. –

Répondre

6

est d'éviter tout débordement potentiel/perte de précision dans les calculs intermédiaires.

+2

Le dépassement ne devrait pas poser de problème avec les types à virgule flottante. La perte de précision pourrait être. –

+0

mmm, j'ai étudié que l'opération de soustraction est pire que l'addition avec des nombres à virgule flottante, alors pourquoi perdre de la précision avec + et non avec -? –

+0

Comment et pourquoi? Je n'arrive pas à trouver une explication pour expliquer pourquoi cela fonctionne. – Will