expanded2.mws

> restart; with(inttrans);

DVV2 Opgaven

[addtable, fourier, fouriercos, fouriersin, hankel,...

>

University's site about DVV: http://www.phys.tue.nl/nf/general/student.html

Serie 1 - Laplace

Opgave 1 - Convolutie

Bereken (x*v)(t) voor -infinity < t < infinity voor het geval dat

> x:= t-> Heaviside(t-1) + Heaviside(t-2) - 2*Heaviside(t-3):
v:= t-> 2*Heaviside(t) - Heaviside(t-1) - Heaviside(t-2):

Bedenk dat een verschuiving naar negatieve tijden bij de Laplace-transformatie niet geoorloofd is.

=> Ik heb alles dus een naar rechts geschoven.

Met laplace

> Y:= s->laplace(x(t),t,s) * laplace(v(t),t,s): 'Y(s)'=Y(s);

Y(s) = (exp(-s)/s+exp(-2*s)/s-2*exp(-3*s)/s)*(2*1/s...

> y:= t->invlaplace(Y(s),s,t): 'y(t)'=y(t);

y(t) = 2*Heaviside(t-1)*t-2*Heaviside(t-1)+Heavisid...
y(t) = 2*Heaviside(t-1)*t-2*Heaviside(t-1)+Heavisid...

> plot([subs(t=a+1,y(t)),x(a+1),v(a+1)],a=-1..5,legend=["y","x","v"]);

[Maple Plot]

Opgave 2 - Stapresponsie en uitgangssignaal uit impulsresponsie

Een lineair, tijdinvariant systeem heeft de impulsresponsie

> assume(t>=0): h:= t->exp(-t)+sin (t):

a) Bereken op twee verschillende manieren de stapresponsie g(t) voor alle t>=0

b) Bereken op twee verschillende manieren het uitgangssignaal y(t) voor alle t>=0 wanneer het ingangssignaal

> input:= t->Heaviside(t)-Heaviside(t-2):

en het systeem geen initiele energie bevat op t=0.

>

a) Bereken de stapresponsie.

Integreren

De stapresponsie kan gevonden worn door de convolutie met de eenheidsstapfunctie Heaviside te nemen. Echter,

de functie is alleen gedefinieerd voor t>=0, dus integreren vanaf t=0! (hier gaan de meesten de fout in)

> sr1(a):= int(h(t),t=0..a);

sr1(a) := -exp(-a)-cos(a)+2

Anderzijds is de stapresponsie de integraal van de impulsresponsie en die hebben we.

> sr2(a):= int(h(t),t=0..a);

sr2(a) := -exp(-a)-cos(a)+2

Laplace

Of met de laplace-transformatie:

laplacetransformeren, delen door s (=integreren in tijddomein) en dan terugtransformeren.

> H(s):= laplace(h(t),t,s);

H(s) := 1/(s+1)+1/(s^2+1)

> SR3(s):=H(s)/s;

SR3(s) := (1/(s+1)+1/(s^2+1))/s

> sr3(t):=invlaplace(SR3(s),s,t);

sr3(t) := -exp(-t)+2-cos(t)

En dit geeft (gelukkig) hetzelfde als de andere berekeningen.

b) Bereken het uitgangssignaal

Het uitgangssignaal is de convolutie van de impulsresponsie met het ingangssignaal.

Convolutieproduct integreren

> output(t):=simplify(int(h(t-lambda)*input(lambda),lambda=-infinity..infinity));

output(t) := (-1+exp(2)-cos(t)*exp(t)+sin(t)*exp(t)...

Eens kijken hoe het eruit ziet.

> plot([output(t),input(t),h(t)],t=-1..30,legend=["output","input","h"]);

[Maple Plot]

Convolutie met laplace

Convolutie is het product van de laplace-getransformeerden

> OUTPUT(s):=laplace(h(t),t,s) * laplace(input(t),t,s);

OUTPUT(s) := (1/(s+1)+1/(s^2+1))*(1/s-exp(-2*s)/s)

En nu weer naar t-domein

> output(t):=invlaplace(OUTPUT(s),s,t);

output(t) := -exp(-t)-cos(t)+Heaviside(t-2)*exp(-t+...
output(t) := -exp(-t)-cos(t)+Heaviside(t-2)*exp(-t+...

> plot([output(t),input(t),h(t)],t=-1..30,legend=["output","input","h"]);

[Maple Plot]

Opgave 3 - Uitgangssignaal uit impulsresponsie

Een lineair, tijdsinvariant systeem heeft de impulsresponsie

> h:= t->sin(t)*Heaviside(t-2):

Bereken het uitgangssignaal y(t) voor alle t>=0 wanneer het ingangssignaal gelijk is aan

> x:= t->Heaviside(t)-Heaviside(t-1): assume(t>=0):

en het systeem geen initiele energie bevat.

Convolutie door integratie

> y(t):= simplify(int( h(t-lambda)*x(lambda),lambda=-infinity..infinity));

y(t) := sin(t)^2*Heaviside(t-2)*cos(2)+cos(t)^2*Hea...
y(t) := sin(t)^2*Heaviside(t-2)*cos(2)+cos(t)^2*Hea...
y(t) := sin(t)^2*Heaviside(t-2)*cos(2)+cos(t)^2*Hea...

Eventjes een plaatje maken

> plot([y(t),h(t),x(t)],t=-0..15,legend=["y","h","x"]);

[Maple Plot]

Convolutie met Laplace

Convolutie in het t-domein is vermenigvuldiging in het s-domein. Dus transformeren naar s-domein en vermenigvuldigen:

> Y(s):= simplify(laplace(x(t),t,s) * laplace(h(t),t,s));

Y(s) := -(-1+exp(-s))*exp(-2*s)*(cos(2)+sin(2)*s)/(...

En dan weer terug naar het t-domein:

> y2(t):= invlaplace(Y(s),s,t);

y2(t) := cos(2)*Heaviside(t-2)-cos(2)*Heaviside(t-2...
y2(t) := cos(2)*Heaviside(t-2)-cos(2)*Heaviside(t-2...

Nog even grafisch checken

> plot([y2(t),h(t),x(t)],t=-0..15,legend=["y","h","x"]);

[Maple Plot]

Opgave 4 - Laplace-transformaties

Een tijdcontinue signaal x(t) heeft de laplace-getransformeerde:

> X:= s->(s+1)/(s^2+5*s+7);

Bepaal de laplace-getransformeerde V(s) van de volgende signalen.

X := proc (s) options operator, arrow; (s+1)/(s^2+5...

Goed, lekker simpel: eerst de functie x bepalen en die verder gebruiken.

> x:=t-> invlaplace(X(s),s,t): 'x(t)'=x(t);

x(t) = -exp(-5/2*t)*sqrt(3)*sin(1/2*sqrt(3)*t)+exp(...

a)

> unassign('v(t)','V(t)');

> v:=t->x(3*t-4)*Heaviside(3*t-4):

> V(s):=simplify(laplace(v(t),t,s));

V(s) := exp(-4/3*s)*(3+s)/(s^2+15*s+63)

b)

> unassign('v(t)','V(t)'):

> v(t):=t*x(t):

> V(s):=simplify(laplace(v(t),t,s));

V(s) := (2*s-2+s^2)/((s^2+5*s+7)^2)

c)

> unassign('v(t)','V(t)'):

> v(t):=diff(x(t),t$2):

> V(s):=simplify(laplace(v(t),t,s));

V(s) := (28+13*s)/(s^2+5*s+7)

d)

> unassign('v(t)','V(t)'):
v(t):=int(x(t),t):

> V(s):=simplify(laplace(v(t),t,s));

V(s) := -1/7*(s-2)/(s^2+5*s+7)

e)

> unassign('v(t)','V(t)'):
v(t):=x(t)*sin(2*t);

v(t) := (-exp(-5/2*t)*sqrt(3)*sin(1/2*sqrt(3)*t)+ex...

> V(s):=laplace(v(t),t,s);

V(s) := -sqrt(3)*(1/2*laplace(exp(-5/2*t)*cos(2*t-1...
V(s) := -sqrt(3)*(1/2*laplace(exp(-5/2*t)*cos(2*t-1...

>

f)

> unassign('v(t)','V(t)'):
v(t):=e^(-3*t)*x(t);

v(t) := e^(-3*t)*(-exp(-5/2*t)*sqrt(3)*sin(1/2*sqrt...

> V(s):=simplify(laplace(v(t),t,s));

V(s) := (1+s+3*ln(e))/(s^2+5*s+6*s*ln(e)+7+15*ln(e)...

g)

Dit weten we uit ons hoofd, de convolutie van x en y is het product van de laplace-getransformeerden.

> unassign('v(t)','V(t)'):

> V(s):=X(s)*X(s);

V(s) := (s+1)^2/((s^2+5*s+7)^2)

Opgave 5 - Invlaplace-transformaties

Bepaal de laplace-getransformeerde van de volgende functies

> unassign('x(t)','X(s)'):

a)

> X(s):=(s+2)/(s^2+7*s+12):
x(t)=invlaplace(X(s),s,t);

x(t) = 2*exp(-4*t)-exp(-3*t)

b)

> X(s):=(s+1)/(s^3+5*s^3+7*s):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/7+1/42*sqrt(42)*sin(1/6*sqrt(42)*t)-1/7*co...

c)

> X(s):=(2*s^2-9*s-35)/(s^2+4*s+2):
x(t)=invlaplace(X(s),s,t);

x(t) = 2*Dirac(t)-17*exp(-2*t)*cosh(sqrt(2)*t)-5/2*...

d)

> X(s):=(3*s^2+2*s+1)/(s^3+5*s^2+8*s+4):
x(t)=invlaplace(X(s),s,t);

x(t) = 2*exp(-t)-9*t*exp(-2*t)+exp(-2*t)

e)

> X(s):=(s^2+1)/(s^5+18*s^3+81*s):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/81-1/81*cos(3*t)+4/27*t*sin(3*t)

f)

> X(s):=(s+exp(-s))/(s^2+s+1):
x(t)=invlaplace(X(s),s,t);

x(t) = -1/3*exp(-1/2*t)*sqrt(3)*sin(1/2*sqrt(3)*t)+...

g)

> X(s):=s/(s+1)+(s*exp(-s)+exp(-2*s))/(s^2+2*s+1):
x(t)=invlaplace(X(s),s,t);

x(t) = Dirac(t)-exp(-t)-Heaviside(t-1)*exp(-t+1)*t+...
x(t) = Dirac(t)-exp(-t)-Heaviside(t-1)*exp(-t+1)*t+...

Opgave 6 - Invlaplace

a)

> X(s):=(s^2-2*s+1)/(s*(s^2+4)):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/4+3/4*cos(2*t)-sin(2*t)

b)

> X(s):=(s^2-2*s+1)/(s*(s^2+4)^2):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/16-1/16*cos(2*t)+1/4*t*cos(2*t)+3/16*t*sin...

c)

> X(s):=(s^2-2*s+1)/(s^2*(s^2+4)):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/4*t-1/2+1/2*cos(2*t)+3/8*sin(2*t)

d)

> X(s):=(s^2-2*s+1)/(s^2*(s^2+4)^2):
x(t)=invlaplace(X(s),s,t);

1/16*t-1/8+1/8*cos(2*t)+1/64*sin(2*t)-3/32*t*cos(2*...

e)

> X(s):=(s^2-2*s+1)/((s+2)^2+4):
x(t)=invlaplace(X(s),s,t);

x(t) = Dirac(t)-6*exp(-2*t)*cos(2*t)+5/2*exp(-2*t)*...

f)

> X(s):=(s^2-2*s+1)/(s*((s+2)^2+4)):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/8+7/8*exp(-2*t)*cos(2*t)-17/8*exp(-2*t)*si...

g)

> X(s):=(s^2-2*s+1)/((s+2)^2+4)^2:
x(t)=invlaplace(X(s),s,t);

x(t) = -5/8*exp(-2*t)*t*cos(2*t)-3/2*exp(-2*t)*t*si...

h)

> X(s):=(s^2-2*s+1)/(s*((s+2)^2+4)^2):
x(t)=invlaplace(X(s),s,t);

x(t) = 1/64-1/64*exp(-2*t)*cos(2*t)-9/32*exp(-2*t)*...

Opgave 7 - Convolutie

Bereken, gebruik makend van de Laplace-transformatie, de convolutie (x*v)(t) voor het geval dat

> conv := proc(x::uneval,y::uneval)

> invlaplace( laplace(x(t),t,s)*laplace(y(t),t,s),s,t);

> end proc:

a)

> x:=t-> exp(-t)*Heaviside(t):
v:=t-> sin(t)*Heaviside(t):

> conv(x,v);

1/2*exp(-t)-1/2*cos(t)+1/2*sin(t)

b)

> x:=t-> cos(t)*Heaviside(t):
v:=t-> sin(t)*Heaviside(t):

> conv(x,v);

1/2*t*sin(t)

Opgave 8 - ODE met randvoorwaarden

Een tijdcontinu systeem wordt beschreven door de ingangs/uitgangs-differentiaalvergelijking:

> unassign('x(t)','y(t)'):

> de_io:= diff(y(t),t$2)+4*diff(y(t),t)+3*y(t) =
2*diff(x(t),t$2)-4*diff(x(t),t)-x(t);
assume(t>=0);

de_io := diff(y(t),`$`(t,2))+4*diff(y(t),t)+3*y(t) ...

Bereken het uitgangssignaal y (t) van dit systeem voor t>=0 voor de volgende gevallen

a)

De voorwaarden

> ic1:= y(0)=-2: # y(0-)=-2

> ic2:= D(y)(0)=1: # y'(0-)=1

> x:= t-> 0: # x(t)=0

Eerst maar eens handmatig met behulp van de laplace-transformatie.

Naar het laplace-domein

> algb_eq:=laplace(de_io,t,s);

algb_eq := s*(s*laplace(y(t),t,s)-y(0))-D(y)(0)+4*s...

Initial Conditions invullen

> algb_ic:=eval(algb_eq,{ic1,ic2});

algb_ic := s*(s*laplace(y(t),t,s)+2)+7+4*s*laplace(...

Oplossen in laplace domein

> algb_sol:=solve(algb_ic,laplace(y(t),t,s));

algb_sol := -(2*s+7)/(s^2+4*s+3)

En weer terug naar het t-domein.

> y_out:=invlaplace(algb_sol,s,t);

y_out := 1/2*exp(-3*t)-5/2*exp(-t)

En dan nu in een keer door maple

dsolve({de_io,ic1,ic2},y(t), method=laplace);

y(t) = 1/2*exp(-3*t)-5/2*exp(-t)

b)

De beginvoorwaarden (initial conditions)

> ic1:= y(0)=0:

> ic2:= D(y)(0)=0:

> x:= t->Dirac(t):

En oplossen die hap

> dsolve({de_io,ic1,ic2},y(t),method=laplace);

y(t) = 2*Dirac(t)-29/2*exp(-3*t)+5/2*exp(-t)

c)

> ic1:= y(0)=0:

> ic2:= D(y)(0) =0:

> x:= t->Heaviside(t):

> dsolve({de_io,ic1,ic2},y(t),method=laplace);

y(t) = -1/3+29/6*exp(-3*t)-5/2*exp(-t)

d)

> ic1:= y(0)=-2:

> ic2:= D(y)(0)=1:

> x:= t->Heaviside(t):

> dsolve({de_io,ic1,ic2},y(t),method=laplace);

y(t) = -1/3+16/3*exp(-3*t)-5*exp(-t)

>

Serie 2 - Fourier

> restart: with(inttrans):

Opgave 9

Bereken de convolutie van x met zichzelf voor -infinity < t <infinity voor het geval dat

> assume(t,real):x(t):=sin(t)/t;

x(t) := sin(t)/t

Convolutie in het t-domein is gelijk aan de vermenigvuldiging in het omega-domein.

> Y(omega):= simplify(fourier(x(t),t,omega)^2);

Y(omega) := -Pi^2*Heaviside(omega-1)+Pi^2*Heaviside...

> y(t):= simplify(invfourier(Y(omega),omega,t));

y(t) := Pi*sin(t)/t

Opgave 10 en 11

Schrijf elk van de volgende signalen als een reeks van complexe exponenten (Maak hierbij gebruik van trigonometrische identiteiten).

Bereken de (complexe) Fourier-getransformeerde van elk van de signalen. Vergelijk de uitkomsten met de reeksen.

a)

> x:=t-> cos(5*t+Theta);

x := proc (t) options operator, arrow; cos(5*t+Thet...

Complexe reeks; lang leve maple :)

> 'x(t)'=convert(convert(convert(x(t),exp),`+`),exp);

x(t) = 1/2*exp(I*(5*t+Theta))+1/2/exp(I*(5*t+Theta)...

En de Fourier-getransformeerde

> 'X(omega)'=fourier(x(t),t,omega);

X(omega) = exp(I*Theta)*Pi*Dirac(omega-5)+exp(-I*Th...

b)

> x:=t-> sin(t)+cos(t);
'x(t)'=convert(convert(x(t),exp),`+`);
'X(omega)'=fourier(x(t),t,omega);

x := proc (t) options operator, arrow; sin(t)+cos(t...

x(t) = -1/2*I*(exp(I*t)-1/exp(I*t))+1/2*exp(I*t)+1/...

X(omega) = -I*Pi*Dirac(omega-1)+I*Pi*Dirac(omega+1)...

c)

> x:=t-> (sin(4*t))^2;
'x(t)'=convert(expand(convert(x(t),exp),exp),`+`);
'X(omega)'=fourier(x(t),t,omega);

x := proc (t) options operator, arrow; sin(4*t)^2 e...

x(t) = -1/4*exp(4*I*t)^2+1/2-1/4*1/(exp(4*I*t)^2)

X(omega) = -1/2*Pi*Dirac(omega-8)+Pi*Dirac(omega)-1...

d)

> x:=t-> cos(2*t)*sin(3*t);
'x(t)'=convert(combine(convert(x(t),exp),exp),`+`);
'X(omega)'=fourier(x(t),t,omega);

x := proc (t) options operator, arrow; cos(2*t)*sin...

x(t) = -1/2*I+1/2*exp(2*I*t)+1/2*exp(-2*I*t)+exp(3*...

X(omega) = -1/2*I*Pi*Dirac(omega-5)+1/2*I*Pi*Dirac(...

e)

> x:=t-> (cos(5*t))^2;
'x(t)'=convert(combine(convert(x(t),exp),exp),`+`);
'X(omega)'=fourier(x(t),t,omega);

x := proc (t) options operator, arrow; cos(5*t)^2 e...

x(t) = 1/2*exp(5*I*t)+1/2*exp(-5*I*t)+2

X(omega) = 1/2*Pi*Dirac(omega-10)+Pi*Dirac(omega)+1...

f)

> x:=t-> cos(3*t)+cos(5*t);
'x(t)'=convert(combine(convert(x(t),exp),exp),`+`);
'X(omega)'=fourier(x(t),t,omega);

x := proc (t) options operator, arrow; cos(3*t)+cos...

x(t) = 1/2*exp(3*I*t)+1/2*exp(-3*I*t)+1/2*exp(5*I*t...

X(omega) = Pi*Dirac(omega-3)+Pi*Dirac(omega+3)+Pi*D...

Opgave 12

Een tijdcontinu signaal x(t) heeft de Fourier-getransformeerde

> x(t):='x(t)':t:='t':X(omega):= 1/(I*omega+3);

X(omega) := 1/(I*omega+3)

Bereken de Fourier-getransformeerde V(omega) van de volgende signalen:

Eerst maar eens x(t) zelf berekenen.

> x:=t->invfourier(X(omega),omega,t): 'x(t)'=x(t);

x(t) = exp(-3*t)*Heaviside(t)

a)

De functie die we moeten Fourier-transformeren

> v(t):=x(5*t-4);

v(t) := exp(-15*t+12)*Heaviside(5*t-4)

En de Fourier-getransformeerde

> V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = exp(-4/5*I*omega)/(15+I*omega)

b)

> v(t):=t^2*x(t);
V(omega)=simplify(fourier(v(t),t,omega));

v(t) := t^2*exp(-3*t)*Heaviside(t)

V(omega) = 2*1/((I*omega+3)^3)

c)

> v(t):=x(t)*exp(2*I*t):
V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = 1/(3-2*I+I*omega)

d)

> v(t):=x(t)*cos(4*t):
V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = (I*omega+3)/((3-4*I+I*omega)*(3+4*I+I*om...

e)

> v(t):=diff(x(t),t$2):
V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = -omega^2/(I*omega+3)

f)

Hier wordt de convolutie met zichzelf gevraagd en dat is gewoon het product met zichzelf in het frequentie-domein.

> V(omega)=simplify(X(omega)^2);

V(omega) = 1/((I*omega+3)^2)

g)

> v(t):=(x(t))^2:
V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = 1/(6+I*omega)

h)

> v(t):=1/(I*t-3):
V(omega)=simplify(fourier(v(t),t,omega));

V(omega) = -2*exp(-3*omega)*Pi*Heaviside(omega)

Opgave 13

Bereken de Fourier-getransformeerde van de volgende signalen:

a)

> x(t):=exp(-t)*cos(4*t)*Heaviside(t):
'X(omega)'=simplify(fourier(x(t),t,omega));

X(omega) = (1+I*omega)/((1-4*I+I*omega)*(1+4*I+I*om...

b)

> x(t):=t*exp(-t)*Heaviside(t):
'X(omega)'=simplify(fourier(x(t),t,omega));

X(omega) = 1/((1+I*omega)^2)

c)

> x(t):=cos(4*t)*Heaviside(t):
'X(omega)'=collect(simplify(fourier(x(t),t,omega)),Dirac);

X(omega) = 1/2*(Pi*omega^2-16*Pi)*Dirac(omega+4)/((...

d)

> x(t):=exp(-abs(t)):
'X(omega)'=fourier(x(t),t,omega);

X(omega) = 2*1/(1+omega^2)

e)

> x(t):=exp(-t^2):
'X(omega)'=fourier(x(t),t,omega);

X(omega) = sqrt(Pi)*exp(-1/4*omega^2)

Opgave 14

Een ideaal bandfilter heeft de overdrachtsfunctie

> H(omega):= piecewise( abs(omega)>2 and abs(omega)<4, 10*exp(-4*I*omega));

H(omega) := PIECEWISE([10*exp(-4*I*omega), -abs(ome...

Bereken het uitgangssignaal y(t) van het filter voor het volgende ingangssignaal

> assume(t,real):x(t):=sin(2*t)/(2*t) *cos(t);

x(t) := 1/2*sin(2*t)*cos(t)/t

Het uitgangssignaal is de convolutie van het ingangssignaal met de overdrachtsfunctie en in het Fourier-domein is dat gewoon vermenigvuldiging.

> X(omega):=simplify(fourier(x(t),t,omega));

X(omega) := -1/4*Pi*Heaviside(omega-3)-1/4*Pi*Heavi...

We moeten de overdrachtsfunctie naar een Heaviside-vorm converteren, omdat invfourier er anders niet mee om kan gaan.

> Y(omega):= simplify(X(omega) * convert(H(omega),Heaviside));

Y(omega) := -5/2*Pi*(Heaviside(omega-3)-Heaviside(-...

En nu weer terug naar het t-domein

> y(t):=simplify(invfourier(Y(omega),omega,t));

y(t) := 5/2*(-sin(2*t-8)+sin(3*t-12))/(t-4)

> plot([y(t),x(t)],t=-10..10,legend=["y(t)","x(t)"]);

[Maple Plot]

Opgave 15

Een ideaal laagdoorlaat-filter heeft de overdrachtsfunctie

> H(omega):= piecewise(-2<omega and omega<2,exp(-I*omega));

H(omega) := PIECEWISE([exp(-I*omega), -omega < 2 an...

Bereken het uitgangssignaal y(t) van het filter voor de volgende ingangssignalen x(t) :

a)

> assume(t,real):x(t):= 5*sin(t/2)/(t/2) *cos(2*t);

x(t) := 10*sin(1/2*t)*cos(2*t)/t

Dit is weer convolutie van de twee en dat is vermenigvuldiging in het frequentie-domein.

> Y(omega):= simplify(convert(H(omega),Heaviside) * fourier(x(t),t,omega));

Y(omega) := 5*Pi*(Heaviside(omega+2)-Heaviside(omeg...

> y(t):= simplify(invfourier(Y(omega),omega,t));

y(t) := 5*(-sin(3/2*t-3/2)+sin(2*t-2))/(t-1)

> plot([y(t),x(t)],t=-10..10,legend=["y(t)","x(t)"]);

[Maple Plot]

b)

> assume(t,real): x(t):=Sum(cos(n*Pi*t/2+Pi/6)/n,n=1..infinity);

x(t) := Sum(cos(1/2*n*Pi*t+1/6*Pi)/n,n = 1 .. infin...

SORRY, DEZE UITWERKING IS NIET CORRECT NOCH COMPLEET !

> X(omega):=fourier(x(t),t,omega);

X(omega) := Sum(1/2*sqrt(3)*Pi*Dirac(omega-1/2*n*Pi...
X(omega) := Sum(1/2*sqrt(3)*Pi*Dirac(omega-1/2*n*Pi...

Als je hiermee met maple verder gaat, kom je niet op iets bruikbaars. Maar we weten dat het een laagdoorlaatfilter betreft waarbij de frequentie tussen -2 en 2 zit. Aangezien overal die Dirac-functie in zit, blijft na vermenigvuldiging met de overdrachtsfunctie slechts n=1 over. Dit doen we eventjes handmatig:

> Y(omega):= fourier(cos(n*Pi*t/2+Pi/6),t,omega) * exp(-I*omega);

Y(omega) := (1/2*sqrt(3)*Pi*Dirac(omega-1/2*n*Pi)+1...
Y(omega) := (1/2*sqrt(3)*Pi*Dirac(omega-1/2*n*Pi)+1...

En dan weer terug naar het t-domein:

>

>

>

Serie 3 - Z-transformaties

> restart; with(inttrans): readlib(ztrans):
assume(n,integer); # We hebben hier te maken met discrete signalen

Ter beschikking staan met ztrans:

* ztrans(xn, n, z)

* invztrans(Xz,z,n)

# Hiervoor moet je (complex vaak) soms breuksplitsen met convert(Xz,parfrac,z)=breuksplitsen

* charfcn[i](n) = Delta(n-i)

Simplify ideeen:

- convert(xn,radical)

>

Opgave 16 - Z-transformeren

Een tijddiscreet signaal x(kT) heeft de z -getransformeerde

> X:= z-> z/(8*z^2-2*z-1);

Bereken de z -getransformeerde V(z) van de volgende signalen.

X := proc (z) options operator, arrow; z/(8*z^2-2*z...

Goed, eerst maar eens x(kT) uitrekenen.

> x:= a-> subs(q=a,invztrans(X(z),z,q)): 'x(a)'=x(a);

x(a) = -1/6*(-1/4)^a+1/6*(1/2)^a

a)

in v(kT) worden discrete stapjes kT genomen. kT+2*T = T*(k+2) en T constant

Het is een beetje lastig met die kT als argument, maar we nemen gewoon n in de plaats daarvan. Ik snap het ook niet helemaal precies, maar dat is mij verteld...

> v(n):=x(n+2)*Heaviside(n+2);

v(n) := (-1/6*(-1/4)^(n+2)+1/6*(1/2)^(n+2))*Heavisi...

En dan de functie Z-transformeren

> V(z)=simplify(ztrans(v(n),n,z));

V(z) = 1/8*z*(2*z+1)/((4*z+1)*(2*z-1))

b)

> v(n):=exp(3*n)*x(n);
V(z)=simplify(ztrans(v(n),n,z));

v(n) := exp(3*n)*(-1/6*(-1/4)^n+1/6*(1/2)^n)

V(z) = -z*exp(3)/((4*z+exp(3))*(-2*z+exp(3)))

c)

> v(n):=cos(2*n)*x(n):
V(z)=simplify(ztrans(v(n),n,z));

V(z) = -z*(8*z^2*cos(2)-2*z-cos(2))/((16*z^2+8*z*co...

d)

> v(n):=n^2*x(n);
V(z)=simplify(ztrans(v(n),n,z));

v(n) := n^2*(-1/6*(-1/4)^n+1/6*(1/2)^n)

V(z) = z*(48*z^2+16*z^3+1+64*z^4-2*z)/((4*z+1)^3*(2...

Opgave 17 - Z-terugtransformeren

Bereken de inverse z-getransformeerde x[k] van de volgende signalen voor alle integers 0 <= k .

a)

> X:= z-> z/(z^2+1);

X := proc (z) options operator, arrow; z/(z^2+1) en...

Alle verschillende inverse z-transformatie uitkomsten berekenen

> pre_x:= allvalues(invztrans(X(z),z,n));

pre_x := 1/2*I/(I^n), -1/2*I/((-I)^n)

Goed, en dan nu de uiteindelijke complex uitgewerkte functie is de som van de uitkomsten:

> x(n):= simplify(evalc(pre_x[1]+pre_x[2]));

x(n) := sin(1/2*n*Pi)

b)

> X:=z-> z^2/(z^2+1);

X := proc (z) options operator, arrow; z^2/(z^2+1) ...

> pre_x:= allvalues(invztrans(X(z),z,n));
x(n):= simplify(evalc(pre_x[1]+pre_x[2]));

pre_x := 1/2*1/(I^n), 1/2*1/((-I)^n)

x(n) := cos(1/2*n*Pi)

c)

> X:=z-> 1/(z^2+1) + 1/(z^2-1);
pre_x:= invztrans(X(z),z,n);

X := proc (z) options operator, arrow; 1/(z^2+1)+1/...

pre_x := -1/2*sum(1/(_alpha^n),_alpha = RootOf(_Z^2...

Hier moeten we even opletten. Zoals je ziet is pre_x opgebouwd uit een sommatie-deel met een RootOf-term (die voor twee uitkomsten zorgt), en een ander deel. Als we hierop allvalues gaan toepassen en de termen bij elkaar optellen, wordt het constante deel er twee keer bij opgeteld. Dus we moeten dat constante deel even afsplitsen, allvalues toepassen en het er aan het einde weer bij optellen.

> pre_x_ro:= select(has,pre_x,RootOf); # het deel met RootOf
pre_x_c:= remove(has,pre_x,RootOf); # het constante deel

pre_x_ro := -1/2*sum(1/(_alpha^n),_alpha = RootOf(_...

pre_x_c := 1/2+1/2*(-1)^n

Goed, nu allvalues toepassen op pre_x_ro

> pre_x_ro_allv:= allvalues(pre_x_ro);

pre_x_ro_allv := -1/2*1/(I^n), -1/2*1/((-I)^n)

En nu alles bij elkaar optellen

> x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2]) + pre_x_c);

x(n) := -cos(1/2*n*Pi)+1/2+1/2*(-1)^n

d)

> X:=z-> (z^2-1)/(z^2+1);
pre_x:= invztrans(X(z),z,n):
pre_x_ro_allv:= allvalues(select(has,pre_x,RootOf));
pre_x_c:= remove(has,pre_x,RootOf);
x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2]) + pre_x_c);

X := proc (z) options operator, arrow; (z^2-1)/(z^2...

pre_x_ro_allv := I^(-n), (-I)^(-n)

pre_x_c := -charfcn[0](n)

x(n) := 2*cos(1/2*n*Pi)-charfcn[0](n)

Even een opmerking over charfcn . charcfn[k](n) is eigenlijk de discrete equivalent van Dirac(n-k) . Dus deze functie is 1 als n=k en anders 0.

e)

> X:=z-> (z+2)/( (z-1)*(z^2+1) );
pre_x:= invztrans(X(z),z,n):
pre_x_ro_allv:= allvalues( select(has,pre_x,RootOf) );
pre_x_c:= remove(has,pre_x,RootOf);
x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2])+pre_x_c);

X := proc (z) options operator, arrow; (z+2)/((z-1)...

pre_x_ro_allv := (1/4-3/4*I)/(I^n), (1/4+3/4*I)/((-...

pre_x_c := -2*charfcn[0](n)+3/2

x(n) := 1/2*cos(1/2*n*Pi)-3/2*sin(1/2*n*Pi)-2*charf...

f)

> X:=z-> ln( (2*z-1) / (2*z) );
pre_x:= invztrans(X(z),z,n);

X := proc (z) options operator, arrow; ln(1/2*(2*z-...

pre_x := invztrans(ln(1/2*(2*z-1)/z),z,n)

Hee, dit werkt niet :( Dan moeten we nog iets anders proberen wat maple niet weet, en dat is het volgende:

n*x[n] <=> -z*Diff(X(z),z)

Dus we kunnen X differentieren en met -z vermenigvuldigen en misschien kan maple er dan wel mee overweg. Aan het einde hoeven we dan alleen het antwoord door n te delen.

> X2:= simplify(-z*diff(X(z),z));

X2 := -1/(2*z-1)

Dit ziet er leuk uit :)

> x2:= invztrans(X2,z,n);

x2 := charfcn[0](n)-(1/2)^n

Nu nog corrigeren voor wat we in het begin gedaan hebben:

> x:= simplify( x2/n );

x := (charfcn[0](n)-2^(-n))/n

Ehm, dit komt niet overeen met het antwoord op het antwoordblad; ik moet iets over het hoofd gezien hebben...

Opgave 18 - Z-terugtransformeren

Bereken de inverse z-getransformeerde x[n] van

de volgende signalen voor alle integers op de reele as.

a)

> X(z):= (z+0.3) / (z^2+0.75*z+0.125);
'x(n)' = invztrans(X(z),z,n);

X(z) := (z+.3)/(z^2+.75*z+.125)

x(n) := 2.400000000*charfcn[0](n)-.8000000000*(-.25...

b)

> X(z):= (5*z+1) / (4*z^2+4*z+1);
'x(n)' = invztrans(X(z),z,n);

X(z) := (5*z+1)/(4*z^2+4*z+1)

x(n) = charfcn[0](n)-(-1/2)^n-3/2*(-1/2)^n*n

c)

Probeer de volgende regel maar eens als je zin hebt; maar het gaat erg lang duren; 'too many levels of recursion'.

> X(z):= (4*z+1) / (z^2 - z + 0.5);
invztrans(X(z),z,n);

X(z) := (4*z+1)/(z^2-z+.5)

Warning, computation interrupted

Dus we gaan het maar eens symbolisch proberen ipv numeriek (wat maple doet als 'ie een float, kommagetal tegenkomt).

> X(z):= (4*z+1) / (z^2-z+1/2);
pre_x:= invztrans(X(z),z,n);
pre_x_ro_allv:= allvalues(select(has,pre_x,RootOf));
pre_x_c:= remove(has,pre_x,RootOf);
x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2]) + pre_x_c);

X(z) := (4*z+1)/(z^2-z+1/2)

pre_x := 2*charfcn[0](n)+2*sum((2*_alpha-5)/(_alpha...

pre_x_ro_allv := (-1+5*I)/((1+I)^n), (-1-5*I)/((1-I...

pre_x_c := 2*charfcn[0](n)

x(n) := -2^(1-1/2*n)*cos(1/4*n*Pi)+10*2^(-1/2*n)*si...

d)

> X(z):= z/(16*z^2+1);
pre_x:= allvalues(invztrans(X(z),z,n));
x(n):= simplify(evalc(pre_x[1]+pre_x[2]));

X(z) := z/(16*z^2+1)

pre_x := 1/8*I/((4*I)^n), -1/8*I/((-4*I)^n)

x(n) := 4^(-1-n)*sin(1/2*n*Pi)

e)

> X(z):= (2*z+1) / (z*(10*z^2-z-2));
x(n):= invztrans(X(z),z,n);

X(z) := (2*z+1)/(z*(10*z^2-z-2))

x(n) := -1/2*charfcn[1](n)-3/4*charfcn[0](n)-5/36*(...

f)

Zo te zien geeft deze ook problemen met de numerieke methode.

> X(z):= (z+1) / ( (z-0.5)*(z^2-0.5*z+0.25) );
invztrans(X(z),z,n);

X(z) := (z+1)/((z-.5)*(z^2-.5*z+.25))

Warning, computation interrupted

Dus naar symbolische methode met breuken.

> X(z):= (z+1) / ( (z-1/2)*(z^2-z/2+1/4) );
pre_x:= invztrans(X(z),z,n);
pre_x_ro_allv:= allvalues(select(has,pre_x,RootOf));
pre_x_c:= remove(has,pre_x,RootOf);
x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2]) + pre_x_c);

X(z) := (z+1)/((z-1/2)*(z^2-1/2*z+1/4))

pre_x := -8*charfcn[0](n)+12*(1/2)^n-8/3*sum((-5+2*...

pre_x_ro_allv := -8/3*(-3+2*I*sqrt(3))/((1+I*sqrt(3...

pre_x_c := -8*charfcn[0](n)+12*(1/2)^n

x(n) := -4*2^(-n)*cos(1/3*n*Pi)-20/3*2^(-n)*sqrt(3)...

g)

Als je het probeert, zie je dat ook deze numeriek niet echt wil.

> X(z):= (z+1)/( z^2*(z^2-z/2+1/4) );
invztrans(X(z),z,n);

X(z) := (z+1)/(z^2*(z^2-1/2*z+1/4))

4*charfcn[2](n)+12*charfcn[1](n)+8*charfcn[0](n)-16...

En je ziet dat je rekening moet houden met 'constante' factoren dus moeten we even splitsen enzo.

> pre_x_ro_allv:= allvalues(select(has,pre_x,RootOf));
pre_x_c:= remove(has,pre_x,RootOf);
x(n):=simplify(evalc(pre_x_ro_allv[1]+pre_x_ro_allv[2]) + pre_x_c);

pre_x_ro_allv := -8/3*(-3+2*I*sqrt(3))/((1+I*sqrt(3...

pre_x_c := -8*charfcn[0](n)+12*(1/2)^n

x(n) := -4*2^(-n)*cos(1/3*n*Pi)-20/3*2^(-n)*sqrt(3)...

Opgave 19 - Bereken impulsresponsie met de overdrachtsfunctie

Bereken de impulsresponsie h(kT) van het lineaire tijdinvariante tijddiscrete systeem met de overdrachtsfunctie

> H(z):= z / ( (z-0.5)^2*(z^2+0.25) );

H(z) := z/((z-.5)^2*(z^2+.25))

Eerst gewoon maar proberen

> invztrans(H(z),z,kT);

Warning, computation interrupted

Nou, dit duurt ook weer te lang (of too many levels of recursion). Dan maar mbv breuken.

> H(z):= z/ ( (z-1/2)^2 * (z^2+1/4) );
pre_h:=invztrans(H(z),z,n);

H(z) := z/((z-1/2)^2*(z^2+1/4))

pre_h := -4*(1/2)^n+4*(1/2)^n*n+2*sum(1/(_alpha^n),...

Goed, even rekening houden met 'constante' factoren en het antwoord komt eruit:

> pre_h_ro_allv:= allvalues(select(has,pre_h,RootOf));
pre_h_c:= remove(has,pre_h,RootOf);
h(n):=simplify(evalc(pre_h_ro_allv[1]+pre_h_ro_allv[2]) + pre_h_c);

pre_h_ro_allv := 2*1/((2*I)^n), 2*1/((-2*I)^n)

pre_h_c := -4*(1/2)^n+4*(1/2)^n*n

h(n) := 4*2^(-n)*cos(1/2*n*Pi)-4*2^(-n)+4*2^(-n)*n

This file was created by Willem van Engen.

Homepage: http://willem.engen.nl/