Ressources python:

 
 
 
 

1- Quelques exemples de programme:

 
 
 
 
( avec matplotlib.pyplot as plt
plt.hist(valeur, range=(min,max), bins=10, align='left', rwidth=0.5)
 
 
Programme simplifié de tracé de points expérimentaux sur python
import matplotlib.pyplot as plt

#programme minimaliste de tracé de points expérimentaux

plt.xlabel('inverse du volume')
plt.ylabel('pression')
plt.title('pression d\'un gaz en fonction de l\'inverse de son volume')
plt.plot([610,303,205,153,124,102], [1/10,1/20,1/30,1/40,1/50,1/60], color='green',linestyle='--')
plt.show()
Pour obtenir un tracé avec des points séparés remplacer plt.plot par plt.scatter.
plt.scatter([610,303,205,153,124,102], [1/10,1/20,1/30,1/40,1/50,1/60])
 

2- Première spécialité

 
Chapitre 1: La mole
 
Chapitre 2: Réactions d'oxydoréduction
 
Chapitre 3 Tableau d'avancement
 
 
 
 
 
Chapitre 4 Titrage colorimétrique
 
 
 
Chapitre 11: Pression exercice 31
Télécharger les ressources du manuel pour ne pas avoir à retaper tout le code
 
Epreuve commune de contrôle continu sur la pression G1SPHCH02725
Le programme python utilisé dans ce sujet comporte une erreur, qui provoque un mauvais tracé de courbe P en fonction de 1/V.
Dans le sujet le tableau des volumes n'est pas rempli dans le bon ordre. Il faut le rectifier comme suit pur obtenir la droite attendue.
 
pression = [1011,1127,1261,1419,1633,1932]
volume = [25,30,35,40,45,50]
invVolume = [ ]
pyplot.axis([0,0.05,0,2000])
pyplot.xlabel(‘’ 1/V (mL-1)’’)
pyplot.ylabel(‘’p (hPa) »)
pyplot.title(‘’Etude de la loi de Mariotte »)
for i in range (0,6) :
invVolume.append(1/volume[i])
pyplot.scatter (invVolume,pression,color=’black’,marker=‘’+”)
pyplot.show ( )
 
Chapitre 12: Mouvement d'un système
 
Installer et utiliser TRACKER
 
Chapitre 13: Electricité
 
Deux exemples de code pour tracer la puissance d'une cellule photovoltaïque en fonction de la tension, pour différents éclairements
 
 
import matplotlib.pyplot as plt
plt.xlabel ('tension')
plt.ylabel('puissance')
plt.title('Evolution de la puissance en fonction de la tension ')
plt.plot([0.055,0.1,0.145,0.191,0.236,0.28,0.322,0.364,0.401,0.428,0.448,0.465,0.476,0.485,0.49,0.495,0.499,0.503,0.505,0.506,0.508,0.51,0.512,0.513,0.514,0.515,0.516,0.517,0.517,0.517,0.517,0.517,0.519,0.519,0.52,0.521,0.521,0.521,0.522], [0.003025,0.005,0.0070,0.0091,0.0111,0.0130,0.0148,0.0165,0.0178,0.0183,0.01824,0.0180,0.01742,0.0168,0.0160,0.0153,0.0146,0.01405,0.0134,0.0128,0.0122,0.0118,0.0113,0.0109,0.0105,0.0102,0.0098,0.0095,0.0092,0.0089,0.0086,0.0083,0.0081,0.0079,0.0077,0.0075,0.0073,0.0071,0.0069],
color='green',linestyle='--')
plt.show()

ou avec les données dans un fichier csv
 
 
import matplotlib.pyplot as plt
import numpy as np
import csv

Ugrava = []
Pgrava = []
Uboulay = []
Pboulay = []
Ugirard = []
Pgirard = []
Ugagne = []
Pgagne = []

with open("data(1).csv", "r") as f:
    f.readline()
    csvin = csv.reader(f)
    for row in csvin:
        Ugrava.append(float(row[0]))
        Pgrava.append(float(row[1]))
        Uboulay.append(float(row[2]))
        Pboulay.append(float(row[3]))
        Ugirard.append(float(row[4]))
        Pgirard.append(float(row[5]))
        Ugagne.append(float(row[6]))
        Pgagne.append(float(row[7]))


plt.title('P en fonction de U')
plt.xlabel('U')
plt.ylabel('P')
plt.axis(xmin=0,xmax=0.7,ymin=0, ymax=0.020)
plt.grid(linestyle="--")
plt.plot(Ugrava, Pgrava, color='red', label='Grava' )
plt.plot(Uboulay, Pboulay, color='green', label='Boulay' )
plt.plot(Ugirard, Pgirard, color='blue', label='Girard' )
plt.plot(Ugagne, Pgagne, color='yellow', label='Gagne' )
plt.show()
 
 
Chapitre 15: Ondes mécaniques
 
Exercice 28
 
Cliquer sur l'image lors de l'exécution du programme pour arrêter le défilement de l'onde.
Matplotlib is building the font cache; this may take a moment.
Indiquer la fréquence de l'onde en hertz :200
Indiquer la célérité de l'onde en m/s :340
Indiquer l'amplitude de l'onde en mètre :1
 
Chapitre 16: Lentilles minces convergentes
 
Exercice 18 p316
 
print("Rentrer le numéro correspondant à votre choix: \n")
choix = int(input("1-Détermination du grandissement.\n2-Détermination de la taille de l'image.\n"))

if choix == 1:
    d_focale = float(input("Indiquer la distance focale de la lentille\n"))
    XA = float(input("Indiquer l'abscisse xA de l'objet\n"))

    if XA>0:
        print("Erreur. La valeur doit être négative")
        XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
    XAprime = (1/(1/d_focale + 1/XA))
    gamma = round(XAprime/XA,1)
    if XAprime<0:
        print("L'image est virtuelle")
    else:
        print("L'image est réelle")
    if abs(gamma)>1:
        print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
    elif abs(gamma)<1:
        print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")
 
Programme modifié
import matplotlib.pyplot as plt
import numpy as np#
x = np.array([-1/10,-1/20,-1/30,-1/40,-1/50,-1/60,-1/70,-1/80,-1/90]) # valeurs en abscisse
XA = 0
d_focale = float(input("Indiquer la distance focale de la lentille\n"))
while XA>=0:
    XA = float(input("Indiquer l'abscisse xA de l'objet\n"))
    print("Erreur. La valeur doit être négative")
XAprime = (1/(1/d_focale + 1/XA))
gamma = round(XAprime/XA,1)
if XAprime<0:
    print("L'image est virtuelle")
else:
    print("L'image est réelle")
if abs(gamma)>1:
    print("Le grandissement vaut ", gamma, "L'image est plus grande que l'objet.")
elif abs(gamma)<1:
    print("Le grandissement vaut ", gamma, "L'image est plus petite que l'objet.")

y = np.array([(1/d_focale - 1/10),(1/d_focale - 1/20),(1/d_focale - 1/30),(1/d_focale - 1/40),(1/d_focale - 1/50),(1/d_focale -1/60),(1/d_focale - 1/70),(1/d_focale- 1/80),(1/d_focale - 1/90)]) # valeurs en ordonnées

# Affichage
plt.title("1/xA' en fonction de 1/xA")
plt.xlabel("1/xA ")
plt.ylabel("1/xA'")
plt.plot(x, y, "bo",label="Formule de conjugaison")
plt.legend(loc='upper center')
plt.show()
 
Amélioration possible pour le calcul des valeurs en x et y
 

x = np.array([1/XA for XA in range(-10, -160, -10)])

    y = np.array([1/d_focale + XAprime for XAprime in x])

 
Chapitre 17: Couleurs
 
Synthèse soustractive des couleurs: Exemple1
 
print ("Ce programme indique le résultat la synthèse soustractive de la lumière blanche.\n Il indique la couleur obtenue sur l’écran en fonction des filtres choisis par l’utilisateur")
C= float(input("Choississez une combinaison de filtres: \n 1 Rouge/magenta 2 cyan/bleu 3 vert/jaune \n 4 cyan/jaune 5 rouge/jaune 6 magenta/bleu"))
if C==1:
    print("La couleur obtenue sur l'écran est rouge")
if C==2:
    print("La couleur obtenue sur l'écran est bleu")
if C==3:
    print("La couleur obtenue sur l'écran est vert")
if C==4:
    print("La couleur obtenue sur l'écran est vert")
if C==5:
    print("La couleur obtenue sur l'écran est rouge")
if C==6:
    print("La couleur obtenue sur l'écran est bleu")

Synthèse soustractive des couleurs: Exemple2
Ce programme comporte deux lignes inutiles à identifier et supprimer.
 
print("Synthèse soustractive")
Filtre1 = []
Filtre2=[]
couleur_trouvee = False
Choix1= str(input("Quelle est la couleur du premier filtre?  R, V, B, C, M, ou J  "))
Choix2= str(input("Quelle est la couleur du second filtre : R, V, B, C, M, ou J  "))
combinaisons = [["R", "R"], ["R", "M"], ["R", "J"], ["M", "J",], ["M", "R"], ["J", "R",], \
["J", "M"], ["B", "B"], ["B", "M"], ["B", "C"], ["M", "C"], ["M", "B"], ["C", "B"], ["C", "M"],\
 ["V", "V"], ["V", "C"], ["V", "J"], ["C", "J"], ["C", "V"], ["J", "V"], ["J", "C"]]
couleur_sur_ecran =["R","R","R","R","R","R","R", "B", "B", "B", "B", "B", "B", "B", "V", "V", "V", "V", "V", "V", "V"]
for i in range(len(combinaisons)):
    if [Choix1,Choix2] == combinaisons[i] or [Choix2,Choix1] == combinaisons[i]:
        print("La couleur affichée à l'écran est", couleur_sur_ecran[i])
        couleur_trouvee =True
        break
if couleur_trouvee== False: print("Ecran noir")
 
18- Interaction lumière matière
 
 
import matplotlib.pyplot as plt
from PIL import Image
print("Ce programme trace l'intensité lumineuse en fonction du numéro du pixel\
      sur une ligne horizontale \
placée au milieu de l'image sur toute sa longueur")
im = Image.open("spectre.png")
pix = im.load()
x, y = im.size
print(x,y)
print (im.size)
pixel = []
intensite = []
wavelength=[]
for j in range(x):
          pixel.append(j)
          a=pix[j,y/2]
          amax=max(a[0],a[1],a[2])
          intensite.append(amax)
          wavelength.append(0.91*j+373)
# Affichage
print (pixel)
plt.title("Spectre de raies")
plt.xlabel("Numéro du pixel")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(pixel, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()
plt.title("Spectre de raies")
plt.xlabel("Longueur d'onde en nm")
plt.ylabel("Intensité lumineuse ( de 0 à 255)")
plt.plot(wavelength, intensite,linestyle = 'solid', color ='black')
plt.grid(linestyle="-.")
plt.show()


 



 
 

3-Terminale spécialité

 
 
 
Exercice 20p66
Programme à compléter
....
 elif VA > Ve:
        V.append(VA)    # on rajoute des valeurs pour le volume de l'acide chlorhydrique avant et après l'équivalence
        CB.append(0) # La réaction est terminée. Tout le benzoate de sodium a déjà réagi.
        CBH.append((CBi*V0/(V0+VA))) # CBi*V0 est à la fois le nombre de moles de base B- initialement dans le bécher, mais aussi celui d'acide BH formé à l'équivalence. Le nombre de moles d'acide BH après l'équivalence reste constant, mais sa concentration diminue. L'acide formé est dilué à chaque ajout d'acide chlorhydrique. La réaction de dosage est déjà terminée.
        CH.append((CA*VA-CBi*V0 )/(V0+VA)) # CBi*V0 est le nombre de moles d'ions oxonium ayant réagit. CA*VA-CBi*V0 est le nombre de moles d'ions oxonium restant. Cette ligne ajoute donc une valeur de la concentration en ions oxonium à la liste.
        pH.append(-log10((CA*VA-CBi*V0 )/(V0+VA))) # calcul du pH à partir de la concentration en ions oxonium
....
 
 
 
 
Chapitre 4: Modélisation macroscopique
Exercice 20: (avec les données de l'exercice 13)
....
t = [0,200,400,600,800,1000,2000]
C = [200,100,50,25,12.5,6.3,3.1]
vd = []
for i in range (len(t)-1) :
    vd=vd+[abs((C[i+1]-C[i])/(t[i+1]-t[i]))].....
 
TP hydrolyse du Tertiobutyle: Fichier à compléter pour le calcul de la vitesse de disparition
La concentration initiale de Chlorure de tertiobutyle est 9,1.10-2 mol/l pour un ajout de 1 ml de tertiobutyle dans 100 ml de mélange eau/éthanol.
 
import matplotlib.pyplot as plt
import numpy as np

#  Temps et concentration

t = [0,10,20,30,40,50,60]
c = [   ,   ,   ,   ,   ,   ,   ] # compléter avec les valeurs expérimentales en mmol/L

# vitesse de disparition

v = []
for i in range (len(t)-1) :
    v=v+[abs(                     )] # indiquer la formule pour calculer la vitesse de réaction

vmax=max(v)

# Graphique de la vitesse de disparition en fonction du temps

C=list(c)
del C[-1]
plt.plot(C,v,'g+:',linewidth=1)
plt.grid()
plt.title("Vitesse de disparition = f(concentration)")

plt.axis([   ,   ,   ,1.15*vmax]) # définir les abscisses et ordonnées minimales et maximales
plt.ylabel("        ") # compléter le titre de l'ordonnée                              ")
plt.xlabel("        ") # compléter le titre de l'abscisse                              ")

plt.show()
 
 
Chapitre 8: Forces des acides et des bases
Exercice 21
 
import matplotlib.pyplot as plt
import numpy as np
pKA=float(input('pKA du couple HA / A-  ?'))
pH = np.linspace(0,14,1000)
pHA = [100/(1+10**(i-pKA)) for i in pH]
pA = [100/(1+10**(pKA-i)) for i in pH]
plt.title('Diagramme de distribution d\'un couple HA/A-')
plt.xlabel('pH')
plt.ylabel('%')
plt.axis(xmin=0,xmax=14,ymin=0, ymax=100)
plt.xticks(range(15))
plt.yticks(range(0,110,10))
plt.grid(linestyle="-.")
plt.plot(pH, pHA, color='r', label='% en HA' )
plt.plot(pH, pA, color='b',label='% en A-' )
plt.show()
Exercice 24
 
pH=float(input('pH de la solution ? pH ='))
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
    if tau==1 : print('tau d\'avancement =',tau,'Acide fort')
    else :
        print('tau = d\'avancement =',tau,'Acide faible')

Premier exemple d'exécution:
pH de la solution ? pH =5
Concentration en soluté apporté en mol/L ? C =3
Volume de la solution en L ? V =0.1
tau = d'avancement = 0.0 Acide faible
 
Deuxième exemple d'exécution:
pH de la solution ? pH =2
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =0.1
tau d'avancement = 1.0 Acide fort
 
Programme modifié
 
pH=float(input('pH de la solution ? pH ='))
C=float(input('Concentration en soluté apporté en mol/L ? C ='))
V=float(input('Volume de la solution en L ? V ='))
xf=10**-pH*V
xmax=C*V
tau=round(xf/xmax,2)
if tau>1 : print('tau d\'avancement =', tau,'impossible')
else :
    if tau==1 :
        print('tau d\'avancement =',tau,'Acide fort')
        print('nf(AH) = 0 mol')
        print('nf(A-) = nf(H3O+) = ', xmax, 'mol')
    else :
        print('tau = d\'avancement =',tau,'Acide faible')
        print('nf(AH)', xmax-xf, 'mol')
        print('nf(A-) = nf(H3O+) =', xf, 'mol')
if tau<0.1 : print('acide faiblement dissocié')
 
Exemples d'exécution
Concentration en soluté apporté en mol/L ? C =0.01
Volume de la solution en L ? V =1
tau d'avancement = 1.0 Acide fort
nf(AH) = 0 mol
nf(A-) = nf(H3O+) =  0.01 mol
>>>
*** Console de processus distant Réinitialisée ***
pH de la solution ? pH =3.5
Concentration en soluté apporté en mol/L ? C =0.02
Volume de la solution en L ? V =1
tau = d'avancement = 0.02 Acide faible
nf(AH) 0.01968377223398316 mol
nf(A-) = nf(H3O+) = 0.00031622776601683794 mol
acide faiblement dissocié
>>>
 
Chapitre 11 exercice 24
 
 
 
 
Chapitre 13
Activité Kepler:
 
Si vous rencontrez une erreur à cause du package pandas qui n'est pas installé, vous pouvez utiliser cette version du programme qui ne nécessite paas pandas.
 
Chapitre 18 interférences et diffraction
 
Interférences : Somme de deux signaux sinusoïdaux synchrones
 
 
 
Ressources générales en ligne:
 
 
 
 
 
 

Contact

spécialité ISN

© 2014 Tous droits réservés.

Créer un site internet gratuitWebnode