Fermer2
ThibautLe 20/10/2011 à 18:55
Bonjour,

Avec un algo que je suis en train de (tenter de) mettre au point, les résultats risquent de ne pas être très précis après les nombreuses itérations qui composent le calcul. En effet, l'inexactitude des nombres flottants se cumulera et risque de mener à des résultats sous optimaux, ou plutôt de provoquer de nombreuses itérations superflues pour réussir à bouffer les miettes d'imprécision qui font croire qu'on n'a pas convergé.

Les calculs se limitant à des additions, des multiplications et des divisions, une solution pour s'affranchir des imprécisions serait de travailler sur Q. Vous connaissez peut être d'autres solutions.

Si l'on part sur des rationnels, la question est : y a-t-il des méthodes pour gérer efficacement les débordements ? En effet, au fil des opérations, les numérateurs et dénominateurs peuvent devenir énormes (a/b + c/d entraine une multiplication de b par d). Comment réduire efficacement les fractions ?

Une idée qui me vient serait d'amortir le coût de la réduction. Après toute opération, on regarde si le numérateur ou le dénominateur du résultat dépassent sqrt(2^bits), ce qui se fait en O(1). S'ils sont inférieurs, je pense qu'aucune opération ne risque de les faire déborder dans l'immédiat. Si l'on dépasse cette limite, on lance un calcul de PGCD afin de diviser les deux composantes par le PGCD. On limite donc au minimum les survenues de cette opération très couteuse.

Il existe sans doute des voies plus intelligentes...