alben a écrit:Tel que tu le présentes ton algorithme est remarquablement inefficace.
Bjr Alben, tu as à la fois raison et tort.
tort, car les séries de Taylor m'ont permis de programmer tous les calculs usuels avec 800 décimales, le temps de réponse étant inférieur à la seconde, ce qui me convient dans bien des cas.
raison, car avec ce type d'algorithme, il est tout à fait impossible, en pratique, de dépasser le millier de décimales, les temps de réponse croissant exponentiellement avec le nombre de décimales souhaité.
alben a écrit:En virgule flottante, si b est ta base (2 en binaire, 10 en décimale) tu peux déjà poser p=valeur entière la plus proche de x/ln(b) et x'=x-p.ln(b). On a donc
=exp(x').b^p)
. Cela te permet de limiter ton calcul à des valeurs de x inférieures en valeur absolue à ln(b)/2 (0,35 en binaire).
merçi beaucoup pour cette optimisation.
Effectivement, ln(b) peut être calculé , une fois pour toutes.
ça m'intéresse d'avoir un majorant de l'erreur commise. Je pensais utiliser des différentielles pour les calculs élémentaires (additions, multiplications, divisions) et programmer un cumul de ces incertitudes dans la boucle
WHILE.
Idées à ce propos ?
De plus,
))
doit être de l'ordre de
 * \Delta(x))
d'après un calcul de différentielle.
cordialement,