Étude en boucle ouverte
Question
Écrire une fonction \(\tt{liste\_temps(pas,tmax)}\) renvoyant une liste des abscisses en temps à partir du \(\tt pas\) (intervalle entre deux abscisses) et de \(\tt tmax\) (borne supérieure des temps). On pourra aussi simplement utiliser un vecteur avec la fonction de numpy arange.
On prendra \(pas=0,1s\) et \(t_{max}=10s\)
Solution
def liste_temps(tmax,pas):
temps =np.arange(0,tmax,pas)
return (temps)
Question
Écrire une fonction \(\tt ordre1\_euler(u,temps)\) renvoyant une liste d'ordonnées correspondant à la résolution par la méthode d’Euler explicite de l'équation différentielle soumise à une entrée constante \(\tt u\) et pour une liste d'abscisses \(\tt temps\) fournie.
Solution
def ordre1_euler(u,temps):
s=0
sortie=[0]
for i in range(1,len(temps)):
f=(K_c*u-s)/tau
s=s+f*(temps[i]-temps[i-1])
sortie=sortie + [s]
return sortie
La solution analytique de l'équation différentielle soumise à une entrée constante s'écrit : \(v(t) = K_c U_{mot}\left(1 - exp\left(-t/\tau_c\right)\right)\)
Question
Tracer sur un même graphe la solution analytique ainsi que la solution approchée par la méthode d'Euler pour des pas de [0.1,0.3,0.5,0.7,1].
Indice
On écrira une fonction \(\tt ordre1\_th(u,temps)\)
Puis on utilisera les listes :
marqueurs = ['^', '+', '.', 'x', '*'] #Les marqueurs
couleurs = ['b', 'g', 'r', 'c', 'm'] #Les couleurs
liste-pas=[0.1,0.3,0.5,0.7,1]
dans une boucle pour tracer les différentes solutions en fonction du temps.
Solution
#Tracé reponse theorique
x=liste_temps(tmax,0.1)
z=ordre1_th(U_mot,x)
plt.plot(x,z)
#Tracé superposé pour différents pas de temps
marqueurs = ['^', '+', '.', 'x', '*'] #Les marqueurs
couleurs = ['b', 'g', 'r', 'c', 'm'] #Les couleurs
style = ['-', '--', '-.', ':','*']
liste_pas=[0.1,0.3,0.5,0.7,1]
k=0
for i in liste_pas:
x=liste_temps(tmax,i)
y=ordre1_euler(U_mot,x)
plt.plot(x,y,'--',color=couleurs[k],marker=marqueurs[k])
k=k+1
#Affichage superpose des courbes
plt.show()