Imprimer
Catégorie : Programmation Python - STAV
Affichages : 1833

Objectif

Utiliser python pour encadrer par la méthode du milieu les solutions d'une équation du type y = ax + b. Cette approche fait suite à la présentation de la méthode du milieu dans le cadre de l'utilisation du Tableur-Grapheur - voir cet article: 506 stav tableur classeur algorithme et methode du milieu version 2019

Je pars du principe que vous disposez d'une interface de développement du type Thonny.

Support de cours créé par Anthony Gallard disponible ici: Python - methode du milieu

 

Mise en place

L'étude porte comme pour le tableur-grapheur sur les solutions de la droite d'équation y=ax+b avec a=2.5 et b=-5 en partant des valeurs xmin=-100 et xmax=+200


Etape 1 - Réflexion papier

Rappel de la méthode du milieu en vidéo

Algorigramme ou cheminement logique

Activité possible

Avec l'aide de ce support de cours, vous pouvez créer un algorigramme du cheminement logique du dessous

Support sur les algorigrammes


Etape 2 - Script sans boucle

Mémo python

Source http://www.info-isn.fr/page_python.htm

Support de cours - mémo python

Voir pour comprendre la partie sur la fonction IF 

 

Script sans boucle

# saisie des constantes
a=2.5
b=-5

# valeur de départ
xmin=-100
xmax=200

# calculs des f(x)
fxmin=a*xmin+b
fxmax=a*xmax+b

# calculs des signes
if fxmin<0:
    sfxmin=-1
elif fxmin==0:
    sfxmin=0
else:
    sfxmin=1

if fxmax<0:
    sfxmax=-1
elif fxmax==0:
    sfxmax=0
else:
    sfxmax=1

# calculs de xmoy, fxmoy et signe de fxmoy
xmoy=(xmin+xmax)/2
fxmoy=a*xmoy+b
if fxmoy<0:
    sfxmoy=-1
elif fxmoy==0:
    sfxmoy=0
else:
    sfxmoy=1

print("valeurs initiales",xmin,xmax)

# choix du nouveau couple xmin xmax
if sfxmoy==sfxmin:
    xmin=xmoy
if sfxmoy==sfxmax:
    xmax=xmoy

print("valeurs finales",xmin,xmax)

 


Etape 3 - Script avec boucle bornée

Présentation de la boucle bornée for x in range(xx)

Voir le mémo à la partie III Boucle for ... in

Placer la boucle stratégiquement à l'endroit où vous devez reprendre votre logique de calculs

Ne pas oublier l'indentation de toutes les lignes se trouvant dans la boucle

 

Script avec boucle bornée

Dans le script du dessous je décide de reprendre 10 fois le principe de calcul pour i allant de 0 à 9
for i in range(10):

# saisie des constantes
a=2.5
b=-5

# valeur de départ
xmin=-100
xmax=200

#### BOUCLE
for i in range(10):
    
    # calculs des f(x)
    fxmin=a*xmin+b
    fxmax=a*xmax+b

    # calculs des signes
    if fxmin<0:
        sfxmin=-1
    elif fxmin==0:
        sfxmin=0
    else:
        sfxmin=1

    if fxmax<0:
        sfxmax=-1
    elif fxmax==0:
        sfxmax=0
    else:
        sfxmax=1

    # calculs de xmoy, fxmoy et signe de fxmoy
    xmoy=(xmin+xmax)/2
    fxmoy=a*xmoy+b
    if fxmoy<0:
        sfxmoy=-1
    elif fxmoy==0:
        sfxmoy=0
    else:
        sfxmoy=1

    print("valeurs initiales",xmin,xmax)

    # choix du nouveau couple xmin xmax
    if sfxmoy==sfxmin:
        xmin=xmoy
    if sfxmoy==sfxmax:
        xmax=xmoy
#### FIN BOUCLE

print("valeurs finales",xmin,xmax)

 


Etape 4 - Script avec boucle non bornée

Présentation de la boucle non bornée while 

Voir le mémo partie V Boucle while (While se traduira par Tant que xxx)

L'idée est ici de calculer en boucle tant que l'écart entre xmin et xmax est supérieur à une valeur nommée "precision"

 

Script avec boucle non bornée

Dans le script du dessous je décide de reprendre mon principe de calcul tant que l'écart entre xmin et xmax est supérieur à 0.01. Je dois donc définir cet écart, d'ou la ligne precision=0.01 #precision
while xmax-xmin>precision:

# saisie des constantes
a=2.5
b=-5

precision=0.01 #precision

# valeur de départ
xmin=-100
xmax=200

#### BOUCLE
while xmax-xmin>precision:
    
    # calculs des f(x)
    fxmin=a*xmin+b
    fxmax=a*xmax+b

    # calculs des signes
    if fxmin<0:
        sfxmin=-1
    elif fxmin==0:
        sfxmin=0
    else:
        sfxmin=1

    if fxmax<0:
        sfxmax=-1
    elif fxmax==0:
        sfxmax=0
    else:
        sfxmax=1

    # calculs de xmoy, fxmoy et signe de fxmoy
    xmoy=(xmin+xmax)/2
    fxmoy=a*xmoy+b
    if fxmoy<0:
        sfxmoy=-1
    elif fxmoy==0:
        sfxmoy=0
    else:
        sfxmoy=1

    print("valeurs intermédiaires",xmin,xmax)

    # choix du nouveau couple xmin xmax
    if sfxmoy==sfxmin:
        xmin=xmoy
    if sfxmoy==sfxmax:
        xmax=xmoy
#### FIN BOUCLE

print("valeurs finales",xmin,xmax)