04 April 2012 15:05

# # # # #

Mihajlo Bozovic 3174/2011 Zadatak: Simulirati prosto kolo redne RLC mreze primenom diferencnih jednacina metodama forward Euler, backward Euler i trapezoidalno pravilo, za proizvoljne vrednosti dt odnosno 10dt

# Oslobadjanje celobrojnog deljenja from __future__ import division from pylab import * # C L R parametri kola = 1e-6 = 10e-3 = 40

# pocetni uslovi vc0 = 1 il0 = 0 vr0 = 0 # parametri simulacije Tstop = 3e-3; for option in range(2): # podesavanje parametra dt na inicijalnu odnosno 10 puta vecu vrednost if option == 0: dt = 0.7e-5; else: dt = 10 * dt; # proracu parametra kola w0 = 1 / ((L * C) ** 0.5); alpha = R / (2 * L) # A matrica na osnovu topologije kola A = [[0, 1/C, 0], [-1/L, 0, -1/L], [-R/L, 0, -R/L]]; # Kreiranje T matrice za svaku od metoda I = diag(ones(3)) Tfe = I + dot(dt, A); Tbe = inv(I - dot(dt, A)); Ttr = dot(inv(I - dot(dt/2, A)), (I + dot(dt/2, A))); nstep = ceil(Tstop/dt) + 1; semp_vect = arange(nstep); # Formiranje odziva vc radi poredjenja sa rezultatima A1 = 1 phi = dot(w0, semp_vect * dt); alphat = dot(alpha, semp_vect * dt) vc = (cos(phi) + 0.2 * sin(phi)) * exp(-alphat) vc = dot(A1, vc); # Formiranje odziva il radi poredjenja sa rezultatima
-1-

:].i]).01 wd = (w0 ** 2 . # xfe[2.:]. 1. xfe = zeros(shape=(3. -10. # xtr[2. 0.:]. -0.:] * 1e3. il * 1e3. xfe[0. 1. tplot.5 phi = dot(wd. 'r') -2- .0] = il0. exact(red)') axis([0. nstep)). semp_vect * dt) il = dot(B3. 1]) plot(tplot.0] = vr0. nstep)). # Inicijalizacija xfe[0. semp_vect * dt) alphat = dot(alpha.'g') plot(tplot. xtr[:.i+1]= dot(Tbe. # xfe[1. 'k') plot(tplot. tplot. # xbe[2.04 April 2012 15:05 B3 = -0.i]). # xtr[1. # Iscrtavanje rezultata figure(option + 1) subplot(3. vc.0] = vc0. xfe[:. xbe[1.0] = vr0.:].0] = vc0. 'k') plot(tplot. vr.:] * 1e3.:] * 1e3. xbe = zeros(shape=(3.0] = vr0. exp(-alphat)) il = il * sin(phi) # Formiranje odziva vr radi poredjenja sa rezultatima vr = R * il # Formiranje x podele za prikaz grafika u ms tplot = semp_vect * dt * 1e3. 'r') ylabel('i_L [mA]') subplot(3. tplot. xtr[1. xtr[0.'g') plot(tplot. # xbe[1. xbe[:. xtr = zeros(shape=(3. xbe[0.0] = il0. -1.max(). xfe[2.i+1]= dot(Tfe. nstep)). 'r') ylabel('v_C [V]') subplot(3.'b') plot(tplot.'b') plot(tplot. xtr[:. xbe[2.:]. 1) title('forward Euler(blue). # pocetnih stanja vc(0) il(0) vr(0) vc(0) il(0) vr(0) vc(0) il(0) vr(0) # Proracun for i in arange(nstep-1): xfe[:.0] = vc0.5. # xtr[0.\n trapezoidal(black).'g') plot(tplot. xbe[:. 1.i]).max(). # xbe[0. 3) axis([0.alpha ** 2) ** 0.:]. xfe[1.i+1]= dot(Ttr. 10]) plot(tplot.0] = il0. 2) axis([0. xtr[2.5]) plot(tplot. backward Euler(green).max().'k') plot(tplot.'b') plot(tplot.

04 April 2012 15:05 xlabel('t [ms]') ylabel('v_R [V]') show() -3- .

Sign up to vote on this title
UsefulNot useful