2016-11-20 2 views

Répondre

3

Cette approche peut être utile lorsque a est constante (au moins pour certaines valeurs b) et b<<a (significativement plus petite). Dans ce cas log(1 + b/a) pourrait être calculé par Taylor series l'expansion rapide et avec une bonne précision (log1p fonction dans certaines bibliothèques mathématiques, another method)

2

Un endroit où je l'ai vu ce genre de chose est en matière de probabilités, ou vraisemblances, sur espaces de grande dimension. On veut parfois calculer des sommes comme

p1 + p2 + .. 

Cependant, ces probabilités peuvent souvent être trop petit pour être représenté en double, si l'on travaille souvent avec le journal des probabilités plutôt. Ensuite, nous voulons calculer

log(exp(l1) + exp(l2) + ..) 

où l est le journal de p1 etc. Le problème est que si l'on évalue que les exps, on pourrait bien obtenir 0, puis l'expression devient indefined. Mais le truc que vous faites allusion vient à la rescousse, nous pouvons évaluer

l1 + log(1 + exp(l2-l1) + ...) 

et ce évaluerons (au moins si l1 est le plus grand du Ls) raisonnablement. Donc, ce n'est pas une question d'efficacité, mais de contourner la précision limitée des doubles.