Legatura dintre raspunsul de regim liber al circuitelor liniare si pozitia polilor functiei de transfer
Universitatea Tehnica "Gh. Asachi", Iasi, Facultatea de Electronica si Telecomunicatii
Laboratorul de Semnale, Circuite si Sisteme
Breviar teoretic
Scopul lucrarii:
Determinarea legaturii intre pozitia polilor si forma functiei pondere (raspuns la impuls) pentru sisteme simple cu: pol real, pol real dublu sau doi poli complex conjugati.
Rezumat teoretic:
Consideram un liniar descris de functia de transfer , avand originalul (functia pondere). Vom nota cu excitatia aplicata circuitului si cu raspunsului sistemului considerat la aceasta excitatie. De asemenea, vom nota cu transformata Laplace a excitatiei si cu transformata Laplace a raspunsului .
Pentru determinarea functiei pondere se calculeaza transformata Laplace inversa a functiei de transfer si se reprezinta grafic. Se urmareste plasarea polului respectiv a polilor complex conjugati in: semiplanul sting (domeniu de stabilitate), semiplanul drept (domeniu de instabilitate) sau la limita de stabilitate.
Mod de lucru
> restart:
> libname:="../SCSlib",libname:
> with(plottools):
> L:=table([dir=inttrans[laplace],inv=inttrans[invlaplace]]):
> assume(_k,posint):assume(_alpha,positive):assume(_omega,positive):
Exemple
Pol simplu pe axa reala
Functia de transfer este forma
> H := 1/(s-alpha);
Functia pondere este:
> h := simplify(convert(subs([_k=k,_alpha=alpha,_omega=omega],L[inv](subs([k=_k,alpha=_alpha,omega=_omega],H),s,t)),exp))*Heaviside(t);
Pozitia polilor analizati este:
> PZ[grafic](1/s/(s-1)/(s+1)/(s-2)/(s+2),s);PZ[numeric](1/s/(s-1)/(s+1)/(s-2)/(s+2),s);
Cazul I.
Polul este in semiplanul stang (are valoare negativa). Sistemul este stabil. In acest caz functia pondere este marginita. Graficul functiei pondere sunt reprezentate mai jos pentru cazul particular si = .
> plot(eval(h,alpha=-1),t=-0.1..2,view=[-0.1..2,0..1.2],labels=["t","h(t)"],title="Functia pondere pentru un pol simplu in -1", axes =box);
> plot(eval(h,alpha=-2),t=-0.1..2,view=[-0.1..2,0..1.2],labels=["t","h(t)"],title="Functia pondere pentru un pol simplu in -2", axes =box);
Cazul II.
Polul este in origine (are valoare nula). Sistemul este stabil. In acest caz functia pondere este marginita. Functiai pondere pentru cazul particular este:
> plot(eval(h,alpha=0),t=-0.1..2,view=[-0.1..2,0..1.2],labels=["t","h(t)"],title="Functia pondere pentru un pol simplu in origine", axes =box);
Cazul III.
Polul este in semiplanul drept (are valoare pozitiva). In acest caz sistemul este instabil. Functia pondere in acest caz este nemarginita. Graficul functiei pondere sunt reprezentate mai jos pentru cazul particular si = .
> plot(eval(h,alpha=1),t=-0.1..2,view=[-0.1..2,0..10],labels=["t","h(t)"],title="Functia pondere pentru un pol simplu in 1", axes =box);
> plot(eval(h,alpha=2),t=-0.1..2,view=[-0.1..2,0..10],labels=["t","h(t)"],title="Functia pondere pentru un pol simplu in 2", axes =box);
Reprezentare dinamica:
Se considera variatia polului real simplu aflat pe axa reala in intervalul in N puncte succesiv. Se urmareste modul de variatie al functiei pondere.
> N:=20:alphad:=[seq(2*i/N-2*(1-i/N),i=0..N)]:
> INTERFACE_PLOT(ANIMATE(seq([seq(op(PZ[grafic](eval(H,alpha=alphad[i]),s))[j],j=1..2)],i=1..nops(alphad))),AXESSTYLE(BOX));
> INTERFACE_PLOT(ANIMATE(seq([op(plot(eval(h,alpha=alphad[i]),t=-0.1..0.5))[1]],i=1..nops(alphad))),AXESSTYLE(BOX));
Pol multiplu pe axa reala
Functia de transfer este de forma
> H:=1/(s-alpha)^k;
Functia pondere este:
> h := convert(subs([_k=k,_alpha=alpha,_omega=omega],L[inv](subs([k=_k,alpha=_alpha,omega=_omega],H),s,t)),exp)*Heaviside(t);
Pozitia polilor este asemanatoare.
Cazul I.
Polii sunt in semiplanul stang. Sistemul este stabil. In acest functia pondere este marginita, viteza de scadere spre zero fiind data de ordinul de multiplicitate al polului. Functia pondere este reprezentata mai jos pentru cazul particular si cu .
> plot(eval(h,[alpha=-1,k=2]),t=-0.1..5,view=[-0.1..5,0..0.5],labels=["t","h(t)"],title="Functia pondere pentru un pol dublu in -1", axes =box);
> plot(eval(h,[alpha=-2,k=2]),t=-0.1..5,view=[-0.1..5,0..0.5],labels=["t","h(t)"],title="Functia pondere pentru un pol dublu in -2", axes =box);
Cazul II.
Polii sunt in originine. Sistemul este stabil. In acest functia pondere este marginita, viteza de scadere spre zero fiind data de ordinul de multiplicitate al polului. Functia pondere este reprezentate mai jos pentru cazul particular si .
> plot(eval(h,[alpha=0,k=2]),t=-0.1..5,view=[-0.1..5,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru un pol dublu in origine", axes =box);
Cazul III.
Polii sunt in semiplanul drept. Sistemul este instabil. Functia pondere este nemarginita, viteza de crestere spre infinit fiind data de ordinul de multiplicitate al polului. Functia pondere in acest caz sunt reprezentate mai jos pentru cazul particular si cu
> plot(eval(h,[alpha=1,k=2]),t=-0.1..5,view=[-0.1..5,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru un pol dublu in 1", axes =box);
> plot(eval(h,[alpha=2,k=2]),t=-0.1..5,view=[-0.1..5,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru un pol dublu in 2", axes =box);
Poli simpli complex conjugati
Functia de transfer este de forma:
> H:=omega/((s-alpha+I*omega)*(s-alpha-I*omega));
Functia pondere este de forma:
> h := simplify(convert(subs([_k=k,_alpha=alpha,_omega=omega],L[inv](subs([k=_k,alpha=_alpha,omega=_omega],H),s,t)),sincos))*Heaviside(t);
Pozitia polilor analizati este:
> PZ[grafic](1/(s^2+10000)/(s^2+40000)/(s^2-2*s+10000)/(s^2+2*s+10000)/(s^2-2*s+40000)/(s^2+2*s+40000)/(s^2-4*s+10000)/(s^2+4*s+10000)/(s^2-4*s+40000)/(s^2+4*s+40000),s);
Cazul I.
Polii sunt in semiplanul stang (au parte reala negativa). Sistemul este stabil. In acest caz functia pondere este marginita, viteza de scadere spre zero fiind data de valoarea partii reale a polilor. Functia pondere este reprezentata mai jos pentru cazul particular si = iar si = .
> plot([eval(h,[alpha=-1,omega = 100]),eval(h,[alpha=-1,omega = 200])],t=-0.1..2,view=[-0.1..1,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala -1", axes =box);
> plot([eval(h,[alpha=-2,omega = 100]),eval(h,[alpha=-2,omega = 200])],t=-0.1..2,view=[-0.1..1,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala -2", axes =box);
Cazul II.
Polii sunt pe axa imaginara. Sistemul este instabil. Functia pondere este de forma unui semnal armonic cu amplitudine constanta.Functia pondere este reprezentata mai jos pentru cazul particular iar si = .
> plot([eval(h,[alpha=0,omega = 100]),eval(h,[alpha=0,omega = 200])],t=-0.1..2,view=[-0.1..1,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala nula", axes =box);
Cazul III.
Polii sunt in semiplanul drept. Sistemul este instabil. Functia pondere este de forma unui semnal armonic cu amplitudine crescatoare spre infinit, viteza de crestere fiind data de valoarea partii reale a polilor. Functia pondere este reprezentata mai jos pentru cazul particular si = iar si = .
> plot([eval(h,[alpha=1,omega = 100]),eval(h,[alpha=1,omega = 200])],t=-0.1..1,view=[-0.1..1,-5..5],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala 1", axes =box);
> plot([eval(h,[alpha=2,omega = 100]),eval(h,[alpha=2,omega = 200])],t=-0.1..2,numpoints = 500,view=[-0.1..1,-10..10],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala 2", axes =box);
Reprezentare dinamica:
Se considera variatia perechii de poli complex conjugati variind partea reala in intervalul in N puncte succesiv, pastrind partea imaginara constanta si egala cu 100. Se urmareste modul de variatie al functiei pondere.
> N:=20:alphad:=[seq(4*i/N-2,i=0..N)]:
> INTERFACE_PLOT(ANIMATE(seq([seq(op(PZ[grafic](eval(H,[alpha=alphad[i],omega = 100]),s))[j],j=1..4)],i=1..nops(alphad))),AXESSTYLE(BOX),VIEW(-5..5,DEFAULT));
> INTERFACE_PLOT(ANIMATE(seq([op(plot(eval(h,[alpha=alphad[i],omega = 100]),t=-0.1..1.0))[1]],i=1..nops(alphad))),AXESSTYLE(BOX));
Se considera variatia perechii de poli complex conjugati variind partea imaginara in intervalul in N puncte succesiv, pastrind partea reala constanta si egala cu -2. Se urmareste modul de variatie al functiei pondere.
> N:=20:omegad:=[seq(100*i/N+100,i=0..N)]:
> INTERFACE_PLOT(ANIMATE(seq([seq(op(PZ[grafic](eval(H,[alpha=-2,omega = omegad[i]]),s))[j],j=1..4)],i=1..nops(omegad))),AXESSTYLE(BOX),VIEW(-5..5,DEFAULT));
> INTERFACE_PLOT(ANIMATE(seq([op(plot(eval(h,[alpha=-2,omega = omegad[i]]),t=-0.1..1.0))[1]],i=1..nops(alphad))),AXESSTYLE(BOX));
Poli multipli complex conjugati
Functia de transfer este de forma:
> H:=omega^2/((s-alpha+I*omega)*(s-alpha-I*omega))^2;
Functia pondere este de forma:
> h := convert(subs([_k=k,_alpha=alpha,_omega=omega],simplify(L[inv](subs([k=_k,alpha=_alpha,omega=_omega],H),s,t))),sincos)*Heaviside(t);
Cazul II
Polii sunt in pe axa imaginara (au parte reala negativa). Sistemul este stabil. In acest caz functia pondere este marginita,viteza de scadere spre zero fiind data de ordinul de multiplicitate al polilor. Pozitia polilor functiei de transfer in planul complex si variatia functiei pondere sunt reprezentate mai jos pentru cazul particular , si .
> plot([eval(h,[alpha=0,omega = 100]),eval(h,[alpha=0,omega = 200])],t=-0.1..2,view=[-0.1..1,DEFAULT],labels=["t","h(t)"],title="Functia pondere pentru poli complex conjugati cu parte reala nula", axes =box);
Intrebari
1. Care este legatura intre viteza de variatie a functiei pondere si pozitia polului real?
2. Care este legatura intre viteza de variatie a infasuratorii functiei pondere si pozitia polilori complex conjugati?
3. Pentru care din configuratiile poli-zerouri, functia pondere este marginita?