#!/usr/bin/env python # coding: utf-8 # # charging of capacitor # \begin{equation} # \frac{Q}{C}+R\frac{dQ}{dt}=V # \end{equation} # \begin{equation} # \frac{dQ}{dt}=\frac{V}{R}-\frac{Q}{CR} # \end{equation} # In[1]: import numpy as np from scipy.integrate import odeint import matplotlib.pyplot as plt # In[2]: # function that returns dy/dt def model(y,t,C,R,V): dydt = V/R-y/(C*R) return dydt # In[3]: V=10 #V C=1e-6 #F R1=100 #ohm R2 = 200 R3=400 # In[4]: # time points t = np.arange(0,0.002,0.0001) # # In[5]: # 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() # In[6]: #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() # In[ ]: