Advertisement
PhysiqueMPSI4

RLC

Jan 3rd, 2022
413
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. from math import *
  2. import matplotlib.pyplot as plt
  3.  
  4. #paramètres
  5. deb=0
  6. fin=1
  7. N=10000 #nombre de points sur l'intervale
  8. R=10**4 #résistance
  9. C=10**-7 #capacité du condensateur
  10. U=0 #charge initiale du condensateur
  11.  
  12. #définition des fonctions
  13.  
  14. def e(t): #générateur en créneau variant toutes les 0,1s
  15. if 0>=t: #générateur éteint avant 0s
  16. return 0
  17. r=floor(10*t) #chiffre des dixièmes
  18. if r/2==floor(r/2): #si r est pair
  19. return 1
  20. else: #sinon
  21. return 0
  22.  
  23. def f(t,u): #dérivée de u
  24. return (e(t)-u)/(R*C)
  25.  
  26. def euler(deb,fin,N,U): #approximation de u par la méthode d'euler
  27. dt=(fin-deb)/N #découpe de l'intervale
  28. t=[deb+k*dt for k in range(N+1)]
  29. u=[U]
  30. for k in range(N): #boucle sur les points successifs
  31. u.append(u[k]+dt*f(t[k],u[k]))
  32. return t,u
  33.  
  34. #affichage de la fonction créneau
  35. x=[((fin-deb)/N)*h for h in range(N)]
  36. y=[e(t) for t in x]
  37. plt.plot(x, y, "c", label="générateur en créneau")
  38. #affichage de la tension aux bornes du condensateur
  39. X,Y=euler(deb,fin,N,U)
  40. plt.plot(X, Y, "r", label="condensateur")
  41.  
  42. #courbe avec des paramètres différents de R et C
  43. R=10**5
  44. C=(1/6)*10**-6
  45. #ici, RC=1/60
  46. X,Y=euler(deb,fin,N,U)
  47. plt.plot(X, Y, "g", label="condensateur avec paramètres modifiés")
  48.  
  49.  
  50. plt.title("tension au cours du temps")
  51. plt.xlabel("temps en secondes")
  52. plt.ylabel("tension en volts")
  53. plt.legend()
  54. plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement