Rappel : Disposer d'un fichier de mesures exploitable
Pour importer des mesures dans un programme Python, il faut disposer d'un fichier de mesures au format csv, dont les colonnes sont séparées par des ';' et dont le séparateur décimal est le point '.'.
Programme à exécuter dans un environnement Python et à compléter⚓
Attention : Disposer d'un environnement Python
Cette partie nécessite de disposer d'un environnement Python installé sur votre ordinateur.
Programme à compléter
Question⚓
Après vous être assuré de disposer d'un fichier de mesures correct au format csv, utilisez le programme ci-dessous dans votre environnement Python après avoir compléter les lignes signalées.
Vous pouvez utiliser le copier-coller en supprimant au préalable les numéros de lignes à l'aide des fonctions de la barre d'outils dans la partie supérieure droite (Passer en texte brut).
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Importation des bibliothèques nécessaires
import matplotlib.pyplot as plt
import numpy as np
# Importation de la fonction d'ouverture du fichier
from tkinter.filedialog import askopenfilename
# ouvre une fenêtre pour charger le fichier csv issu des pointages NE PAS MODIFIER
nom_fichier = askopenfilename(filetypes=(("Fichier CSV", "*.csv"), ("Fichier Texte",
"*.txt"), ("Tous les fichiers", "*.*")), title="Choisir un fichier")
# nom_fichier contient le chemin et le nom du fichier à traiter.
"""La ligne ci-dessous importe les données du fichier de mesures et les place
dans deux listes : t et VH (date et volume de dihydrogène dégagé)
ATTENTION : Il faut avoir un fichier de valeurs au format csv avec le . comme séparateur
décimal et le ';' comme séparateur de colonnes"""
t, VH = np.loadtxt(nom_fichier, skiprows=1, delimiter=";",
unpack=True, usecols=(0, 1))
# Entrée des quantités initiales et du volume molaire (L/mol)
# Compléter les lignes ci-dessous avec les paramètres et les quantités de matière
# initiales
Vm = À COMPLÉTER
n0Mg = À COMPLÉTER
n0H = À COMPLÉTER
# Calcul des valeurs de l'avancement à partir des volumes mesurés
"""Compléter les lignes ci-dessous en prenant comme modèles celles déjà complétées
afin d'obtenir les listes des quantités de matière de toutes les espèces chimiques"""
x = [V / 1000 / Vm for V in VH]
# Quantité de matière de magnésium en fonction de x
nMg = [n0Mg - val for val in x]
# Quantité de matière dion H+ en fonction de x
nH = [À COMPLÉTER for val in x]
# Calcul de la quantité de matière de dihydrogène à partir de x
nH2 = [À COMPLÉTER for val in x]
# Quantité de matière d'ions Mg2+ en fonction de x
nMgPlus = [À COMPLÉTER for val in x]
"""Tracé des représentations graphiques"""
"""Compléter les lignes ci-dessous avec les noms corrects des listes à placer en
abscisses et ordonnées en accord avec le titre du graphique"""
plt.figure(1)
plt.title("Évolution du volume de dihydrogène dégagé")
plt.plot(À COMPLÉTER, À COMPLÉTER, "r+", label="Volume de dihydrogène dégagé")
plt.xlabel("t(s)")
plt.ylabel("$V_{H_2}\ (\mathrm{mL})$")
plt.grid()
plt.show()
plt.figure(2)
plt.title("Évolution de l'avancement x au cours du temps")
plt.plot(À COMPLÉTER, À COMPLÉTER, color="black")
plt.xlabel("t(s)")
plt.ylabel("x en mol")
plt.grid()
plt.show()
plt.figure(3)
plt.title("Évolution des quantités de matière au cours du temps")
plt.plot(À COMPLÉTER, À COMPLÉTER, "b+", label=r"$H_2$")
plt.plot(À COMPLÉTER, À COMPLÉTER, "r+", label=r"$Mg$")
plt.plot(À COMPLÉTER, À COMPLÉTER, "k+", label=r"$H^{+}$")
plt.plot(À COMPLÉTER, À COMPLÉTER, "gx", label=r"$Mg^{2+}$")
plt.xlabel("t(s)")
plt.ylabel(r"mol")
plt.grid()
plt.legend()
plt.show()
Solution⚓
Ci-dessous le programme corrigé.
Vous pouvez télécharger un fichier de mesures exploitable en cliquant sur le lien ci-contre : Télécharger un fichier de mesures csv.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Thu Dec 3 16:24:43 2020
@author: xofe
"""
import matplotlib.pyplot as plt
import numpy as np
# Importation de la fonction d'ouverture du fichier
from tkinter.filedialog import askopenfilename
# ouvre une fenêtre pour charger le fichier csv issu des pointages NE PAS MODIFIER
nom_fichier = askopenfilename(filetypes=(("Fichier CSV", "*.csv"), ("Fichier Texte",
"*.txt"), ("Tous les fichiers", "*.*")), title="Choisir un fichier")
# nom_fichier contient le chemin et le nom du fichier à traiter.
t, VH = np.loadtxt(nom_fichier, skiprows=1, delimiter=";",
unpack=True, usecols=(0, 1))
Vm = 24.2
n0Mg = 9.47e-3
n0H = 0.024
nH2 = [V / 1000 / Vm for V in VH]
x = nH2
nMg = [n0Mg - val for val in x]
nH = [n0H - 2 * val for val in x]
nMgPlus = nH2
plt.figure(1)
plt.title("Évolution du volume de dihydrogène dégagé")
plt.plot(t, VH, "r+", label="Volume de dihydrogène dégagé")
plt.xlabel("t(s)")
plt.ylabel("$V_{H_2}\ (\mathrm{mL})$")
plt.grid()
plt.show()
plt.figure(2)
plt.title("Évolution de l'avancement x au cours du temps")
plt.plot(t, x, color="black")
plt.xlabel("t(s)")
plt.ylabel("x en mol")
plt.grid()
plt.show()
plt.figure(3)
plt.title("Évolution des quantités de matière au cours du temps")
plt.plot(t, nH2, "b+", label=r"$H_2$")
plt.plot(t, nMg, "r+", label=r"$Mg$")
plt.plot(t, nH, "k+", label=r"$H^{+}$")
plt.plot(t, nMgPlus, "gx", label=r"$Mg^{2+}$")
plt.xlabel("t(s)")
plt.ylabel(r"mol")
plt.grid()
plt.legend()
plt.show()
Dans un Jupyter Notebook en ligne⚓
Notebook à disposition dans Capytale
Un notebook est disponible dans l'application Capytale de votre ENT avec le code 4a44-212236.
Sa version corrigée avec un exemple de quantité initiale de magnésium : code 3d3f-244624.
Notebook à télécharger pour l'utiliser sur votre PC
Ce Notebook peut être exécuté sur votre ordinateur si vous disposez d'un environnement Python avec l'application Jupyter.