Simulation Python mode texte : Fonctions

Pour éviter de répéter plusieurs fois les mêmes instructions, on peut les mettre dans une fonction.
  que l'on appellera plusieurs fois.

On peut également faire une fonction pour séparer les types de calculs.
Exemple de la suite qui calcule la racine carrée d'un nombre a expérimentation : copier le programme suivant dans https://py3.codeskulptor.org et lancer "Run"
Appliquer 10 fois cette relation à partir de u0=1 pour calculer √3 :
# definition de la fonction qui va etre appelee plusieurs fois
def suite(u, a):
    # formule de Heron
    # la fonction calcule a partir de ses 2 arguments : u et a
    v = (u + a/u) / 2.
    return v

a = 3.
u = 1.
for i in range(10) :
    u = suite(u, a)
    # ecart entre le terme de la suite et la racine exacte
    print("ecart=", u - a**(1./2.))
print("racine(", a, ")=", u)
En combien d'itérations trouve-t-on la bonne valeur de la racine de 3 ?
Essayez avec racine de 1000., de 1000000.
On peut créer la fonction racine_carree( ) qui calcule la racine carrée :
rappel : racine carrée de a = √a = a1/2
# importation du module math pour la fonction sqrt(a) "sqrt = SQuare RooT"
# on aurait pu aussi faire : a**(0.5)
import math

def racine_carre(a):
    # contrôle des données
    if a < 0 : return None
    elif a == 0 : return 0
    # u0 doit etre réel même si a est entier
    # a cause de la division a / u0
    # il faut u0 > racine(a) : pour que la suite décroisse
    # pour être sur : on part de a si a > 1 ; de 1 sinon
    u0 = max(1., float(a))
    # boucle infinie dont on sort par le test u1 >= u0
    while True :
        # la suite un converge en décroissant
        # si on part de u0 > racine(a)
        u1 = (u0 + a/u0) / 2.
        if u1 >= u0 :
            # quand la suite ne décroît plus :
            # elle a convergé
            break # sortie de la boucle while
        # bascule de la nouvelle valeur dans l'ancienne
        u0 = u1
    return u1

a = 3.
# comparaison entre notre fonction racine_carre et la fonction sqrt du module math.
print("ecart=", racine_carre(a) - math.sqrt(a))
print("racine(", a, ")=", racine_carre(a))
Aller aux menus :   Boucles de calcul   cours simulation