Dovendo simulare con un calcolo ricorrente la carica e la scarica di un condensatore in un circuito R C ho scritto:
V2=V1+dV
dove V1 è la ddp del condensatore che si incrementa di un valore dV per diventare V2 in un tempo dt.
V2=V1+dQ/C=V1+(i dt)/C=V1+(fem-V1)* dt/(RC)
Dove dQ è la carica acquisita, i la corrente elettrica, fem la forza
elettromotrice di carica. In altre parole, la ddp di un condensatore in
un circuito RC si carica sottoposto alla forza elettromotrice fem
nel seguente modo:
V=V+(fem-V)* dt/(RC)
assegnazione del nuovo valore della variabile V a partire dal vecchio valore di V.
Oppure si può scrivere:
dV=(fem-V) dt/(R C)
e quindi:
dV/dt=(fem-V)/(R C)
cioè la derivata rispetto al tempo della ddp è uguale all'espressione a destra.
Questo si verifica facilmente eseguendo la derivata di:
V=fem (1-e(-t/(RC)) )
rispetto al tempo t.
In effetti all'inizio del processo, si verifica che la velocità di carica è grande (dato che V è piccola). Successivamente questa velocità o derivata tende a zero dato che V tende a fem.
In maniera analoga si procede per la scarica:
V2=V1-dV/C=V1-dQ=V1-(V1 dt)/(R C)
dV=-V dt/(R C)
dV/dt=-V/(R C)
Questa ultima si verifica con:
V=fem e(-t/(RC))
Nella scarica la derivata è negativa e la velocità di scarica è grande in valore assoluto all'inizio e poi tende a zero.
Procedura in Python per simulare la carica e la scarica di un condensatore
Nella scheda Script del Python di GeoGebra (vedi python_geogebra.html) inserire (copia incolla) il seguente codice:
R=5E5 #ohm
C=1E-5 #Farad
fem=5 #Volts
$A=(0,0) #definisce un punto A per GeoGebra di coordinate (0,0)
$A.trace=True
def carica_scarica(tempo):
V=0
t=0
dt=0.04
while t<tempo/2.0:
V=V+(fem-V)*dt/(C*R)
t=t+dt
$A.coords=(t,V) #assegna nuove coordinate ad A
while t<tempo:
V=V-V*dt/(C*R)
t=t+dt
$A.coords=(t,V)
per eseguire la simulazione basta scrivere carica_scarica(<num. secondi>) nella riga di comando della scheda Interactive.
E' possibile inserire il grafico della funzione teorica per
confrontarlo con quello ottenuto con il calcolo ricorrente, ricorrendo
questa volta a GeoGebra. Il grafico si ottiene scrivendo nella riga di
comando di Geogebra la funzione che descrive la carica come
funzione di x (che per noi è il tempo).
f(x)=fem (1-e(-x/(RC)) )
Al posto di fem, R, C bisognerà scrivere i valori corrispondenti. Discorso analogo per la scarica:
g(x)=fem e(-x/(RC))
solo che in questo caso bisignerà tener conto della traslazioe lungo
l'asse x e quindi scrivere (x-16) se si è scelto il tempo 32 come nella
figura seguente dove si è scelto dt=0.4 piuttosto grande.