# -*- coding:utf-8 -*- __projet__ = "CoursS5" __nom_fichier__ = "21_racinecarree" __author__ = "A-J. Tinet" __date__ = "octobre 2022" """ ======================================================================================================================== Ex. 21 CALCUL DE LA VALEUR APPROCHEE DE LA RACINE CARREE ======================================================================================================================== """ # Définition de fonctions def approximation_racine(a, r0 = 1, epsilon = 0.001): """ @param a: Nombre pour lequel on cherche une racine carrée @param r0: Point de départ de la recherche @param nmax: Nombre maximal d'itérations pour la recherche @return: Approximation de la racine carrée de a """ # Gestion des cas impossibles if a < 0: print("Pas de racine carrée réelle.") return if r0 <= 0: print("Erreur dans la valeur initiale. Calcul impossible.") return # Calcul de la valeur approchée de la racine r = r0 erreur = abs(r * r - a) while erreur >= epsilon: r = (r + a / r) / 2.0 erreur = abs(r*r - a) return r # ===================================================================================================================== # Solution alternative def calcul_suite_racine(a, r=1, epsilon = 0.001): # Condition d'arrêt if abs(r*r - a) < epsilon: return r # Récursion r = (r + a/r) / 2.0 return calcul_suite_racine(a, r, epsilon) # Programme principal if __name__ == '__main__': # Test si pas de racine print(approximation_racine(-1)) # Test avec r < 0 print(approximation_racine(2, -1)) # Tests avec différentes valeurs print(approximation_racine(0, epsilon = 0.000001)) # 0 print(approximation_racine(2)) # 1.414... # Test approche récursive print(calcul_suite_racine(2))