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

Procédure

Etape 1 - Algorigrammer

Réaliser un schéma logique de votre programme. Pour vous aidez:

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