import numpy as np import matplotlib.pyplot as plt ## Tracé de uc(t) connue R=1000 C=10**(-4) E=10 x = np.linspace(0,2,101) y = E*(1-np.exp(-x/R/C)) plt.figure('charge du condensateur : courbe exacte') plt.title('charge du condensateur : courbe exacte ') plt.plot(x,y) plt.xlabel("temps en secondes") plt.ylabel("tension aux bornes de C (V)") plt.grid() plt.show() ## Tracé de la solution uc(t) par la méthode d’Euler pendant la charge du condensateur """l'intervalle [0;2] est découpé en n intervalles de temps, le pas est donc h=2/n ; n=101 sera la taille du tableau contenant les valeurs approchées de y(t). y(k+1)=y(k)+h.(E-y(k))/tau car y'(k)=(E-y(k))/tau """ def euler_charge(n): y=np.zeros(n+1) y[0]=0 # Condensateur déchargé au départ for i in range (n): y[i+1]=y[i]+2/n*(E-y[i])/(R*C) # n nombre d'étapes de la méthode d'Euler ; h=2/n return y print(euler_charge(30)) # affiche les valeurs successives de uc(t) n=30 plt.figure('charge du condensateur par Euler') t=np.linspace(0,2,n+1) y=euler_charge(n) plt.plot(t,y,label='nbre valeurs n='+str(n)) plt.title('charge du condensateur : méthode Euler') plt.xlabel("temps en secondes") plt.ylabel("tension aux bornes de C (V)") plt.legend() plt.grid() plt.show()