# data[].attributes.headline
AE - analyse d'un système chimique - Tle

# data[].attributes.subject
AE - analyse d'un système chimique - Tle

# data[].attributes.headline
AE - Trajectoire d'un système en mouvement - 2nde

# data[].attributes.subject
AE - Trajectoire d'un système en mouvement - 2nde

# data[].attributes.headline
AE - Trajectoire d'un système en mouvement - version ++

# data[].attributes.subject
AE - Trajectoire d'un système en mouvement - version ++

# data[].attributes.attachment_link.readable_text
# -*- coding: utf-8 -*-
"""
Created on Tue Nov  6 16:54:49 2018

@author: Patricia
"""
import imageio
import numpy as np
import matplotlib.pyplot as plt
import os


image=imageio.imread('chute-chrono.png')    #lire l'image et la stocker dans la variable 'image'
plt.figure(1)
plt.imshow(image)
plt.xlabel('x')
plt.ylabel('y')
plt.title('chute libre')
plt.show()

if os.path.exists('positions.npy') :       #il va chercher si le fichier avec les coordonn��es existe (pointage d��j�� fait)
    print('je relis les coordonn��es dans le fichier position.npy')
    pos=np.load('positions.npy')
else :               # si pointage non r��lais��, le faire
    print('pointer les positions de la balle sur la chronophotographie' )
    pos=np.array(plt.ginput(15,120))    # 15 pointages en 120 s
    np.save('positions.npy',pos)   # valeurs sauver dans la variable 'pos'

ypos=pos[:,1]     #: lis toutes les lignes et 1 de la deuxi��me colonne

#choix de l'origine des axes et leur sens 
O=pos[0,:]   #coordonn��es de l'origine choisie (1��re position)
ypos0=O[1]   # ordonn��e de l'origine
y=ypos-ypos0  #orignie plac��e en 0
y=-y         #inversion des axes, axe Oy vers le haut

              
if os.path.exists('echelle.npy') :
    print('je relis les coordonn��es dans le fichier echelle.npy')
    ech=np.load('echelle.npy')
else :
    print('Pointer les extr��mit��s du rep��re' )
    ech=np.array(plt.ginput(2,60))
    np.save('echelle.npy',ech) 
    
yech=ech[:,1]  #ordonn��es des deux extremit��s du rep��re
k=1.85/(yech[1]-yech[0])   # facteur pour tenir compte de l'��chelle 
yreelle=y*k                # convertir en m

t=np.linspace(0,0.56,15)
#print('t:',t)

plt.figure(2)
plt.plot(t,yreelle,'b^',label='y=f(t)')
plt.grid()
plt.xlabel("t")
plt.ylabel("y")
plt.legend()
plt.title("Chute libre")
plt.show()

# data[].attributes.attachment_link.readable_text
import numpy as np # on importe numpy
import matplotlib.pyplot as plt # on importe matplotlib.pyplot
import os
import imageio

image=imageio.imread('chrono_chuteparabolique.png')    #lire l'image et la stocker dans la variable 'image'
plt.figure(1)
plt.imshow(image)
plt.xlabel('x')
plt.ylabel('y')
plt.title('chute parabolique')
plt.show()

if os.path.exists('positions.npy') :       #il va chercher si le fichier avec les coordonn��es existe (pointage d��j�� fait)
    print('je relis les coordonn��es dans le fichier position.npy')
    pos=np.load('positions.npy')
else :               # si pointage non r��lais��, le faire
    print('pointer les positions de la balle sur la chronophotographie' )
    pos=np.array(plt.ginput(22,120))    # 15 pointages en 120 s
    np.save('positions.npy',pos)   # valeurs sauver dans la variable 'pos'

ypos=pos[:,1]     #: lis toutes les lignes et 1 de la deuxi��me colonne
xpos=pos[:,0]

#choix de l'origine des axes et leur sens 
O=pos[0,:]   #coordonn��es de l'origine choisie (1��re position)
yposO=O[1]   # ordonn��e de l'origine
xposO=[0]
y=ypos-yposO  #orignie plac��e en 0
x=xpos-xposO
y=-y         #inversion des axes, axe Oy vers le haut

#echelle
if os.path.exists('echelle.npy') :
    print('je relis les coordonn��es dans le fichier echelle.npy')
    ech=np.load('echelle.npy')
else :
    print('Pointer les extr��mit��s du rep��re' )
    ech=np.array(plt.ginput(2,60))
    np.save('echelle.npy',ech) 
    
yech=ech[:,1]  #ordonn��es des deux extremit��s du rep��re
k=1.85/(yech[1]-yech[0])   # facteur pour tenir compte de l'��chelle 
yreelle=y*k                # convertir en m
xreelle=x*k

#temps
t=0.040*np.arange(22) # Ici le nombre de mesures est N=22

#figure
plt.figure(2)
plt.plot(xreelle,yreelle,'ro',label="y=f(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.grid()
plt.legend()
plt.title("Trajectoire de la balle")
plt.show()


n=np.arange(len(t)-1)  #on d��finit un tableau de valeurs d'entiers prenant N-1 valeurs avec N la longueur du tableau de temps d��finit pr��c��demment 
print('n:',n) # on fait afficher ce tableau, pour v��rifier

plt.figure(3)
plt.plot(xreelle,yreelle,'r.',label="y=f(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.grid()
plt.legend()
plt.title("Trajectoire de la balle")
for i in n : # on ouvre une boucle for avec un indice qui va jusqu'�� N-1 pour ne pas d��passer la longueur de la liste des mesures
    plt.arrow(0,0,xreelle[i],yreelle[i],fc="b",ec="r",head_width=0.01,head_length=0.02)

#on fait tracer une s��rie de vecteurs
#d'abscisse 0, de position initiale yreelle[i], de coordonn��es 0 et la longueur yreelle[i+1]-yreelle[i]
#fc et ec correspondent aux couleurs de fl��ches (bords et int��rieur), head_width est la largeur de la t��te, 
#head_length est la longueur de la fl��che (toutes ces options ne sont pas n��cessaires pour faire tracer des fl��ches)


plt.ylim(-1.0,1.0) #on d��finit les limites selon Oy du trac�� pour pouvoir mieux visualiser les fl��ches.
plt.xlim(0.0,2.5) # idem selon Ox
plt.grid()
plt.title("Vecteurs position")
plt.show()


plt.figure(4)
for i in n :
    plt.arrow(xreelle[i],yreelle[i],xreelle[i+1]-xreelle[i],yreelle[i+1]-yreelle[i],head_width=0.01) #on fait tracer une s��rie de vecteurs
# de position initiale x[i],y[i], de coordonn��es x[i+1]-x[i] et y[i+1]-y[i]
# head_width est la largeur de la t��te
plt.xlim(0.0,2.5)
plt.ylim(-1.0,1.0)
plt.grid()
plt.title("Vecteurs d��placement")
plt.show()

m=np.arange(len(t)-2) # comme on travaille dans la suite sur des intervalles i �� i+2, il faut couper la boucle �� N-2

plt.figure(5)
plt.plot(xreelle,yreelle,'r.',label="y=f(x)")
plt.xlabel("x")
plt.ylabel("y")
plt.legend()
for i in m :
    plt.arrow(xreelle[i+1],yreelle[i+1],0.05*(xreelle[i+2]-xreelle[i])/(t[i+2]-t[i]),0.05*(yreelle[i+2]-yreelle[i])/(t[i+2]-t[i]),head_width=0.01)
# tracer une s��rie de vecteurs de position initiale x[i+1],y[i+1], de coordonn��es 0.1(x[i+2]-x[i])/(t[i+2]-t[i]) 
# et idem selon uy. 
# Ces longueurs correspondent au d��placement de i �� i+2 rapport�� �� l'intervalle de temps correspondant.
# on multiplie par 0.1 pour que la figure soit lisible.
plt.xlim(0.0,2.5)
plt.ylim(-1.0,1.0)
plt.grid()
plt.title("vecteurs vitesse")
plt.show()

# data[].attributes.attachment_link.readable_text
���#Activit�� : Suivi cin��tique
# importation de NUMPY (pour gestion tableaux et calculs) sous l'alias "np"
import numpy as np
# importation de PYPLOT (du module MATPLOTLIB, pour le trac�� de courbes) sous l'alias "plt"
import matplotlib.pyplot as plt
# modules permettant d'importer des donn��es tabul��es
# le fichier "import_donnees_cinetique.py" est indispensable


# Initialisation des tableaux numpy contenant A et t
""" Entrer vos valeurs de A et de t dans les tableaux suivants """
A=np.array([""" """])
t=np.array([""" """])


Nbre_mesures=len(t)

""" TRAVAIL 1
Taper ci-dessous, le code python permettant:
    - d'assigner les valeurs aux variables
    - de calculer C_I2
"""
# Grandeurs de l'��nonc��:
Vtot= """ """        # Volume total en L
n_0=1e-4    # quantit�� de mati��re de S2O8 2- initiale en mol
k= """ """             # constante Beer-Lambert en L/mol
# formules:
C_I2=""" """                   # calcul de [I2](t)
x=C_I2*Vtot                 # calcul de l'avancement x(t)
C_peroxodisulfate=(n_0-x)/Vtot  # calcul de [S2O8 2-](t)

# 1��re valeur donn��e �� la vitesse pour que les tableaux numpy aient tous la m��me dimension
# choix fait: calcul de V avec la m��thode de la d��riv��e num��rique �� droite (pour V[0] uniquement)
Vd=np.array([-(C_peroxodisulfate[1]-C_peroxodisulfate[0])/(t[1]-t[0])])
Va=np.array([(C_I2[1]-C_I2[0])/(t[1]-t[0])])

""" TRAVAIL 2:
Taper, DANS LA BOUCLE ci-dessous, le code python permettant
de calculer Van (vitesse volumique d'apparition de I2 au point num��ro "n")
"""
for n in range(1,Nbre_mesures-1):
    Van=""" """
    Va=np.append(Va,Van)
# ajout d'une derni��re valeur au tableau vitesse pour que les tableaux numpy aient tous la m��me dimension
Va=np.append(Va,(C_I2[-1]-C_I2[-2])/(t[-1]-t[-2]))

""" TRAVAIL 3:
Taper, DANS LA BOUCLE ci-dessous, le code python permettant
de calculer Vdn (vitesse volumique de disparition au point num��ro "n")
"""
for n in range(1,Nbre_mesures-1):
    Vdn=""" """
    Vd=np.append(Vd,Vdn)
# ajout d'une derni��re valeur au tableau vitesse pour que les tableaux numpy aient tous la m��me dimension
Vd=np.append(Vd,-(C_peroxodisulfate[-1]-C_peroxodisulfate[-2])/(t[-1]-t[-2]))

# #####################################
# Trac��s de [I2]=f(t)
# #####################################
plt.subplot(221)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��1)
plt.grid()
plt.plot(t,C_I2,"r+")
plt.title("COURBE 1: [I2] en fonction de t")          # titre du graphique
plt.xlabel("t en s")                             # nom de la grandeur sur l'axe X
plt.ylabel("[I2] en mol/L")                          # nom de la grandeur sur l'axe Y

# #####################################
# Trac��s de [S2O8 2-]=f(t)
# #####################################
plt.subplot(222)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��2)
plt.grid()
plt.plot(t,C_peroxodisulfate,"b+")
plt.title("COURBE 2: [S2O8 2-] en fonction de t")          # titre du graphique
plt.xlabel("t en s")                               # nom de la grandeur sur l'axe X
plt.ylabel("[S2O8 2-] en mol/L")                          # nom de la grandeur sur l'axe Y

# #####################################
# Trac��s de Vd=f(t) et Va=f(t)
# #####################################
plt.subplot(223)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��3)
plt.grid()
plt.plot(t,Vd,"k+",label="V disparition peroxodisulfate")
plt.plot(t,Va,"m+",label="V apparition I2")
plt.title("COURBE 3: Vitesses volumiques\n en fonction de t")          # titre du graphique
plt.xlabel("t en s")         # nom de la grandeur sur l'axe X
plt.ylabel("V en mol."+r"$L^{-1}.s^{-1}$")         # exposant -1 en langage LateX: inutile pour les ��l��ves
plt.legend()

# #####################################
# Trac��s de V=f([S2O8 2-])
# #####################################
plt.subplot(224)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��4)
plt.grid()
""" TRAVAIL 4:
Taper ci-dessous le code Python permettant de tracer V en fonction de [S2O8 2-]  """
plt.plot(C_peroxodisulfate,Vd,"g+")
""" fin du travail """
plt.title("COURBE 4: Vitesse volumique de disparition\nde en fonction de [S2O8 2-]")          # titre du graphique
plt.xlabel("[S2O8 2-] en mol/L")                       # nom de la grandeur sur l'axe X
plt.ylabel("V en mol."+r"$L^{-1}.s^{-1}$")          # exposant -1 en langage LateX

plt.tight_layout() # permet une bonne gestion des marges par matplotlib
# on affiche la fen��tre
#plt.get_current_fig_manager().window.state('zoomed')   # <-- Affiche la fen��tre maximis��e sous windows uniquement
plt.show()

# data[].attributes.attachment_link.readable_text
���#Activit�� 7
# importation de NUMPY (pour gestion tableaux et calculs) sous l'alias "np"
import numpy as np
# importation de PYPLOT (du module MATPLOTLIB, pour le trac�� de courbes) sous l'alias "plt"
import matplotlib.pyplot as plt
# modules permettant d'importer des donn��es tabul��es
# le fichier "import_donnees_cinetique.py" est indispensable


# Initialisation des tableaux numpy contenant A et t
""" Entrer vos valeurs de A et de t dans les tableaux suivants """
A=np.array([0.65,0.73,0.78,0.84,0.89,0.95,1.01])
t=np.array([2,4,6,8,10,12,14])


Nbre_mesures=len(t)

""" TRAVAIL 1
Taper ci-dessous, le code python permettant:
    - d'assigner les valeurs aux variables
    - de calculer C_I2
"""
# Grandeurs de l'��nonc��:
Vtot= 0.02        # Volume total en L
n_0=1e-4    # quantit�� de mati��re de S2O8 2- initiale en mol
k= 1.5             # constante Beer-Lambert en L/mol
# formules:
C_I2=A/k                   # calcul de [I2](t)
x=C_I2*Vtot                 # calcul de l'avancement x(t)
C_peroxodisulfate=(n_0-x)/Vtot  # calcul de [S2O8 2-](t)

# 1��re valeur donn��e �� la vitesse pour que les tableaux numpy aient tous la m��me dimension
# choix fait: calcul de V avec la m��thode de la d��riv��e num��rique �� droite (pour V[0] uniquement)
Vd=np.array([-(C_peroxodisulfate[1]-C_peroxodisulfate[0])/(t[1]-t[0])])
Va=np.array([(C_I2[1]-C_I2[0])/(t[1]-t[0])])

""" TRAVAIL 2:
Taper, DANS LA BOUCLE ci-dessous, le code python permettant
de calculer Van (vitesse volumique d'apparition de I2 au point num��ro "n")
"""
for n in range(1,Nbre_mesures-1):
    Van=(C_I2[n+1]-C_I2[n-1])/(t[n+1]-t[n-1])
    Va=np.append(Va,Van)
# ajout d'une derni��re valeur au tableau vitesse pour que les tableaux numpy aient tous la m��me dimension
Va=np.append(Va,(C_I2[-1]-C_I2[-2])/(t[-1]-t[-2]))

""" TRAVAIL 3:
Taper, DANS LA BOUCLE ci-dessous, le code python permettant
de calculer Vdn (vitesse volumique de disparition au point num��ro "n")
"""
for n in range(1,Nbre_mesures-1):
    Vdn=[-(C_peroxodisulfate[n+1]-C_peroxodisulfate[n-1])/(t[n+1]-t[n-1])]
    Vd=np.append(Vd,Vdn)
# ajout d'une derni��re valeur au tableau vitesse pour que les tableaux numpy aient tous la m��me dimension
Vd=np.append(Vd,-(C_peroxodisulfate[-1]-C_peroxodisulfate[-2])/(t[-1]-t[-2]))

# #####################################
# Trac��s de [I2]=f(t)
# #####################################
plt.subplot(221)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��1)
plt.grid()
plt.plot(t,C_I2,"r+")
plt.title("COURBE 1: [I2] en fonction de t")          # titre du graphique
plt.xlabel("t en s")                             # nom de la grandeur sur l'axe X
plt.ylabel("[I2] en mol/L")                          # nom de la grandeur sur l'axe Y

# #####################################
# Trac��s de [S2O8 2-]=f(t)
# #####################################
plt.subplot(222)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��2)
plt.grid()
plt.plot(t,C_peroxodisulfate,"b+")
plt.title("COURBE 2: [S2O8 2-] en fonction de t")          # titre du graphique
plt.xlabel("t en s")                               # nom de la grandeur sur l'axe X
plt.ylabel("[S2O8 2-] en mol/L")                          # nom de la grandeur sur l'axe Y

# #####################################
# Trac��s de Vd=f(t) et Va=f(t)
# #####################################
plt.subplot(223)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��3)
plt.grid()
plt.plot(t,Vd,"k+",label="V disparition peroxodisulfate")
plt.plot(t,Va,"m+",label="V apparition I2")
plt.title("COURBE 3: Vitesses volumiques\n en fonction de t")          # titre du graphique
plt.xlabel("t en s")         # nom de la grandeur sur l'axe X
plt.ylabel("V en mol."+r"$L^{-1}.s^{-1}$")         # exposant -1 en langage LateX: inutile pour les ��l��ves
plt.legend()

# #####################################
# Trac��s de V=f([S2O8 2-])
# #####################################
plt.subplot(224)            # 4 sous-figures (2 ligne,2colonnes, on se place sur la n��4)
plt.grid()
""" TRAVAIL 4:
Taper ci-dessous le code Python permettant de tracer V en fonction de [S2O8 2-]  """
plt.plot(C_peroxodisulfate,Vd,"g+")
""" fin du travail """
plt.title("COURBE 4: Vitesse volumique de disparition\nde en fonction de [S2O8 2-]")          # titre du graphique
plt.xlabel("[S2O8 2-] en mol/L")                       # nom de la grandeur sur l'axe X
plt.ylabel("V en mol."+r"$L^{-1}.s^{-1}$")          # exposant -1 en langage LateX: inutile pour les ��l��ves

plt.tight_layout() # permet une bonne gestion des marges par matplotlib
# on affiche la fen��tre
#plt.get_current_fig_manager().window.state('zoomed')   # <-- Affiche la fen��tre maximis��e sous windows uniquement
plt.show()

# data[].attributes.attachment_link.readable_text
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 21 09:52:09 2020

@author: jenot
"""


import numpy as np
import matplotlib.pyplot as plt

# Conditions experimentales
c_A =       # �� compl��ter
c_B =     # �� compl��ter
V_A =     # �� compl��ter

# Coefficients stoechiometriques
a =        # �� compl��ter
b =        # �� compl��ter
c =        # �� compl��ter
d =        # �� compl��ter

V_B = np.arange(0, 25, 0.5)
x = c_B*V_B/b
n_A = c_A*V_A - a*x
n_B = np.zeros(len(V_B))
n_C = c*x
n_D = d*x

for i in range(len(V_B)) :
    if c_B*V_B[i]/b > c_A*V_A/a :
        print(c_B*V_B[i]/b, c_A*V_A/a, i)
        x[i] = c_A*V_A/a
        n_A[i] = 0
        print(x[i])
        n_B[i] =    # �� compl��ter
        n_C[i] = c*x[i]
        n_D[i] = d*x[i]

plt.xlabel('Volume verse de solution titrante (mL)')
plt.ylabel('Quantites de matiere (mmol)')
plt.title('Evolution des quantites de matiere \n en fonction du volume de solution titrante versee')
plt.grid()
plt.plot(V_B, n_A,color = 'red', label='Quantite n_A')
plt.plot(V_B, n_B,color = 'blue', label='Quantite n_B')
plt.plot(V_B, n_C,color = 'yellow', label='Quantite n_C')
plt.plot(V_B, n_D,"--", color = 'orange', label='Quantite n_D')
plt.legend()
plt.show()

# data[].attributes.headline
Pour accéder au padlet avec les ressources

# data[].attributes.subject
Pour accéder au padlet avec les ressources

# data[].attributes.headline
AE-introduction au microcontrôleur + buzzer

# data[].attributes.subject
AE-introduction au microcontrôleur + buzzer

# data[].attributes.attachment_link.readable_text
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 21 09:52:09 2020

@author: jenot
"""


import numpy as np
import matplotlib.pyplot as plt

# Conditions experimentales
c_A =       # �� compl��ter
c_B =       # �� compl��ter
V_A =       # �� compl��ter

# Coefficients stoechiometriques
a =        # �� compl��ter
b =        # �� compl��ter
c =        # �� compl��ter
d =        # �� compl��ter

V_B = np.arange(0, 25, 0.5)
x = c_B*V_B/b
n_A = c_A*V_A - a*x
n_B = np.zeros(len(V_B))
n_C = c*x
n_D = d*x

for i in range(len(V_B)) :
    if c_B*V_B[i]/b > c_A*V_A/a :
        print(c_B*V_B[i]/b, c_A*V_A/a, i)
        x[i] = c_A*V_A/a
        n_A[i] = 0
        print(x[i])
        n_B[i] =    # �� compl��ter
        n_C[i] = c*x[i]
        n_D[i] = d*x[i]

plt.xlabel('Volume verse de solution titrante (mL)')
plt.ylabel('Quantites de matiere (mol)')
plt.title('Evolution des quantites de matiere \n en fonction du volume de solution titrante versee')
plt.grid()
plt.plot(V_B, n_A,color = 'red', label='Quantite n_A')
plt.plot(V_B, n_B,color = 'blue', label='Quantite n_B')
plt.plot(V_B, n_C,color = 'yellow', label='Quantite n_C')
plt.plot(V_B, n_D,"--", color = 'orange', label='Quantite n_D')
plt.legend()
plt.show()

# data[].attributes.attachment_link.readable_text
# -*- coding: utf-8 -*-
"""
Created on Tue Jul 21 09:52:09 2020

@author: jenot
"""


import numpy as np
import matplotlib.pyplot as plt

# Conditions experimentales
c_A = 1
c_B = 1
V_A = 10

# Coefficients stoechiometriques
a = 1
b = 1
c = 1
d = 1

V_B = np.arange(0, 25, 0.5)
x = c_B*V_B/b
n_A = c_A*V_A - a*x
n_B = np.zeros(len(V_B))
n_C = c*x
n_D = d*x

for i in range(len(V_B)) :
    if c_B*V_B[i]/b > c_A*V_A/a :
        print(c_B*V_B[i]/b, c_A*V_A/a, i)
        x[i] = c_A*V_A/a
        n_A[i] = 0
        print(x[i])
        n_B[i] = c_B*V_B[i] - b*x[i]
        n_C[i] = c*x[i]
        n_D[i] = d*x[i]

plt.xlabel('Volume verse de solution titrante (mL)')
plt.ylabel('Quantites de matiere (mol)')
plt.title('Evolution des quantites de matiere \n en fonction du volume de solution titrante versee')
plt.grid()
plt.plot(V_B, n_A,color = 'red', label='Quantite n_A')
plt.plot(V_B, n_B,color = 'blue', label='Quantite n_B')
plt.plot(V_B, n_C,color = 'yellow', label='Quantite n_C')
plt.plot(V_B, n_D,"--", color = 'orange', label='Quantite n_D')
plt.legend()
plt.show()

# data[].attributes.headline
Placer ces fichiers dans un même dossier pour que le programme fonctionne.

# data[].attributes.subject
Placer ces fichiers dans un même dossier pour que le programme fonctionne.