Partage
  • Partager sur Facebook
  • Partager sur Twitter

Méthode d'Héron d'Alexandrie

    21 décembre 2014 à 20:58:00

    Bonsoir,

    Dans la méthode d'Héron d'Alexandrie (ou de babylone) pour l'extraction d'une racine carrée), j'ai trouvé ce code :

    def babylone(a, n): 
        u = a
        for i in range(n):
            u = u /2. + a/(2.*u)
        return u

    avec n le nombre d'itérations et c'est là mon problème. Pourquoi passer le nombre d'itérations comme paramètre? Je pense qu'on peut obtenir une bonne approximation au bout de 4 itérations ..

    Merci

    • Partager sur Facebook
    • Partager sur Twitter
      21 décembre 2014 à 21:27:03

      Salut

      Bon je suis nul en maths donc je ne saurais comprendre ce que tu as écris comme code, mais ce que je peux te dire c'est qu'il faut bien passer une condition à ta boucle for (ici le range(n)), si tu estimes qu'il suffit de 4 itérations pour que ton extraction de racine carrée soit correct, et bien ne passe plus le nombre d'itération en paramètre de ta fonction mais écrit directement "for i in range(4):"

      Désolé si j'ai répondu à côté ^^

      • Partager sur Facebook
      • Partager sur Twitter
        21 décembre 2014 à 21:56:15

        rarashin a écrit:

        Pourquoi passer le nombre d'itérations comme paramètre? Je pense qu'on peut obtenir une bonne approximation au bout de 4 itérations ..


        Techniquement, une approximation sera bonne si la différence des valeurs N et N+1 de la suite sont plus petits qu'un epsilon (0,0000001 par exemple). Comme l'algo. converge plus vite si la valeur initiale est proche de la racine carrée recherchée, il suffit de tester avec de grands nombres pour se rendre compte que 4 itérations n'est pas si bon.
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          22 décembre 2014 à 12:16:52

          Salut, cela dit, ça n'explique toujours pas ceci (qui est une manière de faire parfaitement débile) :

          Pourquoi passer le nombre d'itérations comme paramètre?

          Comme on ne sait pas à l'avance le nombre d'itérations qu'il faudra pour avoir une erreur acceptable, il est beaucoup plus logique de faire une fonction qui prend l'erreur maximale en paramètre et d'itérer tant que l'écart entre deux itérations est supérieur à cette erreur (le \(\varepsilon\) de mps). Éventuellement, on peut aussi passer un nombre maximum d'itérations à effectuer, m'enfin comme cet algo converge toujours (et assez vite), l'intérêt est assez limité.

          • Partager sur Facebook
          • Partager sur Twitter

          Méthode d'Héron d'Alexandrie

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown