Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import *
- import matplotlib.pyplot as plt
- #paramètres
- deb=0
- fin=1
- N=10000 #nombre de points sur l'intervale
- R=10**4 #résistance
- C=10**-7 #capacité du condensateur
- U=0 #charge initiale du condensateur
- #définition des fonctions
- def e(t): #générateur en créneau variant toutes les 0,1s
- if 0>=t: #générateur éteint avant 0s
- return 0
- r=floor(10*t) #chiffre des dixièmes
- if r/2==floor(r/2): #si r est pair
- return 1
- else: #sinon
- return 0
- def f(t,u): #dérivée de u
- return (e(t)-u)/(R*C)
- def euler(deb,fin,N,U): #approximation de u par la méthode d'euler
- dt=(fin-deb)/N #découpe de l'intervale
- t=[deb+k*dt for k in range(N+1)]
- u=[U]
- for k in range(N): #boucle sur les points successifs
- u.append(u[k]+dt*f(t[k],u[k]))
- return t,u
- #affichage de la fonction créneau
- x=[((fin-deb)/N)*h for h in range(N)]
- y=[e(t) for t in x]
- plt.plot(x, y, "c", label="générateur en créneau")
- #affichage de la tension aux bornes du condensateur
- X,Y=euler(deb,fin,N,U)
- plt.plot(X, Y, "r", label="condensateur")
- #courbe avec des paramètres différents de R et C
- R=10**5
- C=(1/6)*10**-6
- #ici, RC=1/60
- X,Y=euler(deb,fin,N,U)
- plt.plot(X, Y, "g", label="condensateur avec paramètres modifiés")
- plt.title("tension au cours du temps")
- plt.xlabel("temps en secondes")
- plt.ylabel("tension en volts")
- plt.legend()
- plt.show()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement