Objectif
Attention, la résolution des équations du second degré par la méthode du discriminent n'est plus au programme des STAV depuis la rentrée 2019!!!
Réaliser un programme permettant de calculer les solutions de toutes les fonctions du second degré de l'univers ET la représenter sur un graphe en python avec l'IDE Thonny.
- Installation de bibliothèques supplémentaires matplotlib et numpy
- Aide en ligne pour comprendre comment tracer des courbes:
https://www.courspython.com/introduction-courbes.html
Procédure
Etape 1 - Algorigrammer
Réaliser un schéma logique de votre programme. Pour vous aidez:
- document vous présentant les symboles dans un algorigramme
https://ipa-troulet.fr/cours/attachments/article/466/cours_algorithmique_algorigramme.pdf - OpenOffice Draw et sa barre d'outils Dessin vous propose les formes ad hoc et les connecteurs qui vont bien
Mon schéma logique ressemble à cela:
saisie des paramètres a,b,c
calcul delta
si delta >0
calcul X1
calcul X2
afficher X1 et X2
sinon
'j'en deduis que delta est soit nul, soit négatif
si delta = 0
calcul de X0
afficher X0
sinon
'j'en deduis que delta ne peut être que négatif
afficher "pas de solution dans IR
Etape 2 - Scripter
L'idée est de réaliser ici un premier jet. Priorité aux boucles et aux variables.
# commentaire
a=2
b=16
c=3
#calcul de delta
delta=b**2-4*a*c
# condition sur delta dans cet ordre >0 puis ==0 puis <0
if delta>0:
x1=(-b-delta**0.5)/(2*a)
x2=(-b+delta**0.5)/(2*a)
print("Delta est positif donc il y a 2 solutions")
print("x1 =",x1)
print("x2 =",x2)
else:
if delta==0:
x0=-b/(2*a)
print("Delta est nul donc il y a 1 solution unique")
print("x0 =",x0)
else:
print("Pas de solution dans l'espace des réels")
Etape 3 - Améliorer et commenter
Tout est perfectible, pour ici je dirais:
- Améliorer les impressions et les commentaires
- Permettre le choix des paramètres (Input)
# commentaire
# resolution equation seconde degre stav
# version 2
#saisie des paramètres à l'aide de la fonction input
#input donnant une variable de type string, la fonction float la transforme en
#type décimale
print("Saisir les paramètres a,b,c de votre polynome du second degré:")
a=float(input("Saisir la valeur de a="))
b=float(input("Saisir la valeur de b="))
c=float(input("Saisir la valeur de c="))
#calcul de delta
delta=b**2-4*a*c
#affichage
print("Résolution de l'équation ",a,"x² + ",b,"x + ",c)
# condition sur delta dans cet ordre >0 puis ==0 puis <0
if delta>0:
x1=(-b-delta**0.5)/(2*a)
x2=(-b+delta**0.5)/(2*a)
print("Delta est positif donc il y a 2 solutions")
print("x1 =",x1)
print("x2 =",x2)
else:
if delta==0:
x0=-b/(2*a)
print("Delta est nul donc il y a 1 solution unique")
print("x0 =",x0)
else:
print("Pas de solution dans l'espace des réel")
Etape 4 - Représenter graphiquement
C'est ici que les bibliothèques sont nécessaires.
Lire les commentaires dans le script pour comprendre et se référer à cette page si besoin:
https://www.courspython.com/introduction-courbes.html
# commentaire
# resolution equation seconde degre stav
# version 2
#saisie des paramètres à l'aide de la fonction input
#input donnant une variable de type string, la fonction float la transforme en
#type décimale
print("Saisir les paramètres a,b,c de votre polynome du second degré:")
a=float(input("Saisir la valeur de a="))
b=float(input("Saisir la valeur de b="))
c=float(input("Saisir la valeur de c="))
#calcul de delta
delta=b**2-4*a*c
#affichage
print("Résolution de l'équation ",a,"x² + ",b,"x + ",c)
# condition sur delta dans cet ordre >0 puis ==0 puis <0
if delta>0:
x1=(-b-delta**0.5)/(2*a)
x2=(-b+delta**0.5)/(2*a)
print("Delta est positif donc il y a 2 solutions")
print("x1 =",x1)
print("x2 =",x2)
else:
if delta==0:
x0=-b/(2*a)
print("Delta est nul donc il y a 1 solution unique")
print("x0 =",x0)
else:
print("Pas de solution dans l'espace des réel")
#
#représentation graphique
#
#import des bibliothèques sup - nécessite une installation sous Thonny avant pour matplotlib
import numpy as np
import matplotlib.pyplot as plt
#Proposer à l'utilisateur un encadrement pour le graphique
xmin=float(input("Saisir la valeur de xmin="))
xmax=float(input("Saisir la valeur de xmax="))
#Calculs des x allant de xmin à xmax avec 100 points
#pour plus de points augmenter 100
#puis calculs des y
x = np.linspace(xmin,xmax,100)
y=a*x**2+b*x+c
plt.plot(x, y)
#mise en forme du graphe
#titre / axe des x - h horizontale - coord y=0 / axe des y - v verticale - coord x=0
plt.title("Fonction du second degré")
plt.axhline(y=0,color='black')
plt.axvline(x=0,color='black')
#tracer de la courbe
plt.show() # affiche la figure a l'ecran