Une suite qui converge vers 1 / π

  On étudie la suite u n = n ( 2 n n ) 4 n   qui converge vers 1 π 0.564 .
  L'organisation des calculs est importante pour le calcul de u n : c'est l'objet de ce TD.

  On pose u1 ( n ) = ( n * ( 2 n ) ! ) / ( n ! * n ! * 4 n ) , u2 ( n ) = n * ( ( 2 n ) ! / n ! / n ! / 4 n ) et u3 ( n ) = n * ( ( 2 n ) ! / ( n ! * n ! * 4 n ) )

  Mathématiquement, ces trois fonctions sont définies sur N et calculent u n .
  Informatiquement, ces trois fonctions calculent u n , mais on va voir que leur domaines de définitions ne sont pas les mêmes. On va calculer ces domaines et analyser les résultats.
La fonction factorial() (dans le module math) est la fonction factorielle

Q1)  Définir les fonctions u1(n) , u2(n), u3(n).
  Vérifier par exemple que pour n = 10 ou n = 50,  u1(n) = u2(n) = u3(n)

On note D u1 = D 1 = [ 0 , n1 ] ,   D u2 = D 2 = [ 0 , n2 ] ,   D u3 = D 3 = [ 0 , n3 ] les domaines de définition informatiques de ces trois fonctions.

Q2) Sachant que:
    (1) Python calcule les entiers jusqu'à “l'infini”
    (2)  Des flottants pklus grands que MaxF = 2 1024 - 2 971 1.8 * 10 308 déclenchent une erreur d'overflow
  Justifier à priori (sans faire de tests) que n1 < n2 < n3 en indiquant avec précision quelle opération provoquera pour la première fois une erreur d'overflow dans le calcul de u1, u2 ou u3.

Q3) Calculer les valeurs des entiers n1 et n2.

Q4) Justifier qu'en théorie,  n3 = MaxF, mais qu'en pratique, c'est très loin d'être le cas (pourquoi ?) ! Quel temps faut-il par exemple pour calculer u3(300000) ?

  On cherche un moyen plus rapide de calculer u n pour de grands entiers n.

Q5) Montrer que   v n = u n + 1 u n = 2 n + 1 2 n 2 + n et en déduire une fonction u4(n) (avec n ∈ N * ) calculant u n pour tout entier n de D 4 = [ 0 , n4 ] et qui n'utilise pas la fonction factorielle.
  Justifier qu'en théorie,  n4 ≈ MaxF . En pratique, le temps de calcul est la limitation principale, mais la fonction u4(n) est bien plus rapide que u3(n). Quel temps faut-il par exemple pour calculer u3(300000) ?

© 2014 - Eric Obermeyer      Powered by      Corrigé