The idea is that two capacitors are joined. Initially C_1 has a p.d. of 10 V and C_2 has zero. All constants can be changed.
In :C1 = 1e-6 # 1 micro-farad V1 = 1000 Q1 = C1 * V1 E1 = 0.5*Q1*V1 E2 = 0.5*Q2*V2 E_start = 0.5*Q1*C1 + 0.5*Q2*C2 E_loss = 0 I = 0 # amps R = 1000 # ohms dt = 1e-6 # seconds
In :while(True): I = (V1-V2)/R ## Now, allow a small amount of charge to flow around the circuit dQ = I*dt Q1 -= dQ Q2 += dQ E_loss += I**2 * R * dt # energy loss in resistor E1 -= V1 * dQ E2 += V2 * dQ ## Now, calculate new voltages V1 = Q1 / C1 V2 = Q2 / C2 print(I) if I < 1e-5: break E_final = 0.5*Q1*C1 + 0.5*Q2*C2
In :I = (V1-V2)/R
In [ ]: