Imprimer
Catégorie : Programmation Python - 2nde SNT
Affichages : 14775

Objectif

Avec l'aide de python, encadrer la valeur de racine carrée de 2 par balayage successif comme proposé dans le référentiel de maths de seconde - réforme de janvier 2019 - page - 6.

Vous noterez le découpage des étapes et l'utilisation du copier/coller de l'algorigramme en tant que script sous Thonny puis sa correction pour que cela fonctionne. Notez aussi la démarche de résolution par essai-erreur très prisée en informatique (ou dans les jeux mais sous une autre dénomination qui fait peur ;)

Travail collaboratif avec Anthony Gallard ;)


Présentation du principe - Méthode de Héron

Un peu d'histoire

Vidéo présentant l'approche


Présentation de l'algorigramme

L'idée est de présenter la logique des calculs et le principe de la démarche. N'ayant toujours pas fait de choix, l'écriture S <- 2 représente d'affectation de la valeur 2 à la variable S. Sous python cela se transformera en S=2 mais ne pas y voir systématiquement une égalité ;)

Algorigramme encadrant la racine carrée de 2
Valeurs initiales
S <- 2
b <- 8
a <- S / b = 0.25
Nombre de boucle pour attendre une précision suffisante
imax <- 5

initialisation du compteur i
i <- 0

Boucle pour i allant de 0 à imax :
    #je calcule le nvx b en prenant la moyenne des cotés 
    #je mets le resultat de ce calcul dans la variable b
    b <- (b+a)/2
    #je calcule le nvx a en utilisant S et la nouvelle valeur de b
    #je mets le resultat de ce calcul dans la variable a
    a <- S/b
    #j'incrémente i de 1
    i <- i+1

Affichage de l'encadrement
Affichage de la valeur inf = a
Affichage de la valeur sup = b

Premier script

Comme d'habitude, priorité aux calculs pour le premier essai.

Vidéo présentant la saisie du script sous Thonny

Script

# Algorigramme encadrant la racine carrée de 2
# Valeurs initiales
S=2
b=8
a=S/b
# Nombre de boucles pour attendre une précision suffisante - arbitraire
imax=6


for i in range(imax):
    #je calcule le nvx b en prenant la moyenne des cotés 
    #je mets le resultat de ce calcul dans la variable b
    b=(b+a)/2
    #je calcule le nvx a en utilisant S et la nouvelle valeur de b
    #je mets le resultat de ce calcul dans la variable a
    a=S/b
    #j'incrémente i de 1 - mais cette ligne n'est pas nécessaire car automatique avec le for
    i=i+1

print("Affichage de l'encadrement")
print("Affichage de la valeur inf =",a)
print("Affichage de la valeur sup =",b)

Pour aller plus loin - calcul de la racine de n'importe quel nombre

Bon, ça marche. Nous pouvons partir de cette base pour peaufiner la bête. 

Proposition d'amélioration n°1, la méthode de Héron ne se cantonne par à l'encadrement de la racine carrée de 2. On doit bien pouvoir l'utiliser pour le calcul de n'importe quelle racine carrée de n'importe quel nombre. Donc modifier le script initial pour calculer toutes les racines carrées ;))) 

Vidéo présentant ma démarche hésitante

Script utilisé

# Algorigramme encadrant la racine carrée de S
# Valeurs initiales
S=float(input("Saisir la valeur dont vous voulez la racine carrée. S="))
b=1
a=S/b
# Nombre de boucles pour attendre une précision suffisante - arbitraire
imax=6



for i in range(imax):
    #je calcule le nvx b en prenant la moyenne des cotés 
    #je mets le resultat de ce calcul dans la variable b
    b=(b+a)/2
    #je calcule le nvx a en utilisant S et la nouvelle valeur de b
    #je mets le resultat de ce calcul dans la variable a
    a=S/b
    
    #affichages intermédiaires
    print(a,"-Racine S-",b)
    
    #j'incrémente i de 1    
    i=i+1

print("Affichage de l'encadrement")
print("Affichage de la valeur inf =",a)
print("Affichage de la valeur sup =",b)

Pour aller encore plus loin - précision de l'encadrement selon l'utilisateur

Pour vous aider:

Pour la solution voir en dessous mais ne pas suivre le lien si vous n'avez pas cherché un peu ;)))

https://ptroulet.blogspot.com/2019/09/script-python-pour-en-finir-avec.html