Placer un nuage de points et le modéliser

Pour vous entrainer, vous pouvez :

  • niveau débutant : copier tout le code de la correction d'un TP, le coller et l'éxécuter, ensuite modifier comme en classe les marqueurs, les couleurs, inverser l'ordonnée et l'abscisse, modifier le coefficient directeur de la modélisation.... et exécuter à chaque fois pour visualiser votre modification. 
  • niveau confirmé : créer votre code, importer la bibliothèque, les fonctions nécessaires, créer votre code e et compléter ensuite le code (utiliser vos résultats de TP) vous-même afin de tracer des graphiques.

1. Comment exécuter du code sans installation (ordinateur ou smartphone) ?

Vous pouvez créer ou copier votre code sur le laboratoire du livre scolaire et l'éxécuter.

Vous pouvez également télécharger Carnets sur iPhone ou iPad comme en classe et scanner les Qr code des TP

2. Les différentes parties d'un code pour un graphique

  • Etape 1 : importez la bibliothèque matplotlib
  • Etape 2 : copiez les fonctions dont vous avez besoin (fonctions nuage de points, modèle_linéaire ou modèle _affine)
  • Etape 3 : Ecrire le code principal  en donnant la liste des valeurs expérimentales des grandeurs du graphique, en appelant les fonctions nécessaires puis faire afficher le graphique (code déjà prêt)
#importation des modules
import matplotlib.pyplot as plt

#définition des fonctions pour le graphique
......

#code principal
#tracé du nuage de points
.......

#tracé de la modelisation du graphique
......

#affichage du graphique
plt.xlim(0,1)#valeurs min et max des abscisses
plt.ylim(0,1)#valeurs min et max des ordonnées
plt.legend() #affiche les labels
plt.show() #affiche le graphique

La fonction nuage de points :

def nuagedepoints(x,y,xtitle,ytitle,title):
    """
    Fonction générant le nuage de points y en fonction de x
    Entrées : coordonnées de x, coordonnées de y, titre abscisse, titre ordonnée, titre graphique
    Résultat : nuage de points y en fonction de x
    """
    plt.plot(x, y, linestyle="none" ,marker="x" ,color="red", markersize="10", label="nuage de points")
    # nuage de points,'none' points non reliés,'x' forme des points (o,-,+,s)
    # 'red' couleur (blue, green, cyan, magenta, yellow, black)
    # '10' taille des points
    # affiche la légende
    plt.xlabel(xtitle) #légende axe des abscisses
    plt.ylabel(ytitle) #légende axe des ordonnées
    plt.legend() #affiche la légende
    plt.title(title) #affiche un titre

La fonction modèle linéaire :

def modele_lineaire(a,xmax) :
    """
    Fonction générant, jusqu'à l'abscisse xmax, une fonction linéaire y=f(x) de coefficient directeur a
    Entrées : coefficient directeur a, valeur maximale pour les abscisses
    Résultat : fonction linéaire de coefficient directeur a jusqu'à l'abscisse xmax
    """
    abscisses=[] # création de la liste des abscisses
    ordonnees=[] # création de la liste des ordonnées
    x=0 # première valeur des abscisses
    while x<xmax :
        y=a*x # calcul de l'image (valeur de y) de la fonction linéaire
        abscisses.append(x) # la valeur de x est ajoutée à la fin de la liste des abscisses
        ordonnees.append(y) # la valeur de y est ajoutée à la fin de la liste des ordonnées
        x=x+xmax/1e3 # modification de la valeur de x correspondant au millième de la valeur de xmax
    plt.plot(abscisses,ordonnees,linestyle='-',linewidth="1",color="blue",label="modèle : y = {:.2f} * x".format(a))
    #"-" forme de la courbe, "1" épaisseur de la courbe,
    #"blue" couleur (red, green, cyan, magenta, yellow, black),
    # affiche la légende contenant la valeur de a avec 2 chiffres après la virgule

3. Correction des TP

  • Correction du TP 8 : un modèle pour la réfraction
"""
TP réfraction
Auteur: TeamPhysBressuire
Date : novembre 2019
Programme permettant de tracer le nuage de points sin(i1) en fonction de sin(i2)
Entrée : aucune
Résultat : affiche le nuage de points
"""

#importation des modules
import matplotlib.pyplot as plt

#definition des fonctions
def nuagedepoints(x,y,xtitle,ytitle,title):
    """
    Fonction générant le nuage de points y en fonction de x
    Entrées : coordonnées de x, coordonnées de y, titre abscisse, titre ordonnée, titre graphique
    Résultat : nuage de points y en fonction de x
    """
    plt.plot(x, y, linestyle="none" ,marker="x" ,color="red", markersize="10", label="nuage de points") #nuage de points,'none' points non reliés,'x' forme des points (o,-,+,s),'red' couleur(blue, green, cyan, magenta, yellow, black),'10' taille des points
    plt.xlabel(xtitle) #légende axe des abscisses
    plt.ylabel(ytitle) #légende axe des ordonnées
    plt.legend() #affiche la légende
    plt.title(title) #affiche un titre


#code principal
sini1 = [0,0.17,0.26,0.34,0.42,0.50,0.64,0.77,0.93] #valeurs séparées par une virgule
sini2 =[0,0.12,0.17,0.22,0.26,0.34,0.42,0.5,0.61] #valeurs séparées par une virgule
nuagedepoints (sini2,sini1,"sini2","sini1","tracé de sini1 en fonction de sini2")
plt.xlim(0,1) #valeurs min et max des abscisses
plt.ylim(0,1) #valeurs min et max des ordonnées
plt.show() #affiche le graphique
  • Correction du TP 9 : rendre un objet invisible 
"""
TP réfraction
Auteur: TeamPhysBressuire
Date : novembre 2019
Programme permettant de tracer le nuage de points sin(i1) en fonction de sin(i2) et la modélisation
Entrée : aucune
Résultat : affiche le nuage de points et la modélisation
"""
#importation des modules
import matplotlib.pyplot as plt

#définition des fonctions
def nuagedepoints(x,y,xtitle,ytitle,title):
    """
    Fonction générant le nuage de points y en fonction de x
    Entrées : coordonnées de x, coordonnées de y, titre abscisse, titre ordonnée, titre graphique
    Résultat : nuage de points y en fonction de x
    """
    plt.plot(x, y, linestyle="none" ,marker="x" ,color="red", markersize="10", label="nuage de points")
    # nuage de points,'none' points non reliés,'x' forme des points (o,-,+,s)
    # 'red' couleur (blue, green, cyan, magenta, yellow, black)
    # '10' taille des points
    # affiche la légende
    plt.xlabel(xtitle) #légende axe des abscisses
    plt.ylabel(ytitle) #légende axe des ordonnées
    plt.legend() #affiche la légende
    plt.title(title) #affiche un titre

def modele_lineaire(a,xmax) :
    """
    Fonction générant, jusqu'à l'abscisse xmax, une fonction linéaire y=f(x) de coefficient directeur a
    Entrées : coefficient directeur a, valeur maximale pour les abscisses
    Résultat : fonction linéaire de coefficient directeur a jusqu'à l'abscisse xmax
    """
    abscisses=[] # création de la liste des abscisses
    ordonnees=[] # création de la liste des ordonnées
    x=0 # première valeur des abscisses
    while x<xmax :
        y=a*x # calcul de l'image (valeur de y) de la fonction linéaire
        abscisses.append(x) # la valeur de x est ajoutée à la fin de la liste des abscisses
        ordonnees.append(y) # la valeur de y est ajoutée à la fin de la liste des ordonnées
        x=x+xmax/1e3 # modification de la valeur de x correspondant au millième de la valeur de xmax
    plt.plot(abscisses,ordonnees,linestyle='-',linewidth="1",color="blue",label="modèle : y = {:.2f} * x".format(a))
    #"-" forme de la courbe, "1" épaisseur de la courbe,
    #"blue" couleur (red, green, cyan, magenta, yellow, black),
    # affiche la légende contenant la valeur de a avec 2 chiffres après la virgule

#code principal
#tracé du nuage de points
sini1 =[0,0.17,0.26,0.34,0.42,0.50,0.64,0.77,0.93]
sini2 =[0,0.12,0.17,0.22,0.26,0.34,0.42,0.5,0.61]
nuagedepoints (sini2,sini1,"sin(i2)","sin(i1)","tracé de sin(i1) en fonction de sin(i2)")

#tracé de la modelisation
modele_lineaire(1.5,1)
plt.xlim(0,1)#valeurs min et max des abscisses
plt.ylim(0,1)#valeurs min et max des ordonnées
plt.legend() #affiche les labels
plt.show() #affiche le graphique