import numpy as np
from scipy.integrate import odeint
import matplotlib.pyplot as plt
# function that returns dy/dt
def model(y,t,C,R,V):
dydt = V/R-y/(C*R)
return dydt
V=10 #V
C=1e-6 #F
R1=100 #ohm
R2 = 200
R3=400
# time points
t = np.arange(0,0.002,0.0001) #
# Charging
# initial condition
y0 = 0
y1 = odeint(model,y0,t,args=(C,R1,V))
y2 = odeint(model,y0,t,args=(C,R2,V))
y3 = odeint(model,y0,t,args=(C,R3,V,))
# plot results
plt.plot(t,y1,'r-',linewidth=2,label='R1=100$\Omega$')
plt.plot(t,y2,'b--',linewidth=2,label='R2=200$\Omega$')
plt.plot(t,y3,'g:',linewidth=2,label='R3=300$\Omega$')
plt.xlabel('time(sec)')
plt.xticks(rotation=45)
plt.ylabel('Q(C)')
plt.legend()
plt.show()
#discharging
y0 = V*C
y11 = odeint(model,y0,t,args=(C,R1,0))
y12 = odeint(model,y0,t,args=(C,R2,0))
y13 = odeint(model,y0,t,args=(C,R3,0,))
# plot results
plt.plot(t,y11,'r-',linewidth=2,label='R1=100$\Omega$')
plt.plot(t,y12,'b--',linewidth=2,label='R2=200$\Omega$')
plt.plot(t,y13,'g:',linewidth=2,label='R3=300$\Omega$')
plt.xlabel('time(sec)')
plt.xticks(rotation=45)
plt.ylabel('Q(C)')
plt.legend()
plt.show()