11.01.2014 Views

Modellering i Tidsplanet

Modellering i Tidsplanet

Modellering i Tidsplanet

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Faltning Differensekvationer Differentialekvationer<br />

<strong>Modellering</strong> i <strong>Tidsplanet</strong><br />

En introduktion till signaler och system


Faltning Differensekvationer Differentialekvationer<br />

Innehåll<br />

Faltning<br />

Differensekvationer<br />

Differentialekvationer


Faltning Differensekvationer Differentialekvationer<br />

Innehåll<br />

Faltning<br />

Differensekvationer<br />

Differentialekvationer


Faltning Differensekvationer Differentialekvationer<br />

Filtrering med viktade medelvärden<br />

N-punkts MA-filter<br />

y[n] = 1 N−1<br />

N (x[n] + x[n − 1] + . . . + x[n − N + 1]) = ∑ 1<br />

x[n − i]<br />

N<br />

i=0<br />

EWMA-filter (Exponentially Weighted Moving Average)<br />

y[n] = ∑ N−1<br />

i=0 a · bi x[n − i]<br />

{ 0 < b < 1<br />

a = 1−b<br />

1−b N<br />

y[n] = ∑ N−1<br />

i=0 w ix[n − i] w i = ab i<br />

successivt minskande vikt till äldre indata


Faltning Differensekvationer Differentialekvationer<br />

B MA=ones(1,11)/11;<br />

y MA=filter(B MA,1,d);<br />

y MA(1:10)=[];<br />

n=11:length(d);<br />

Jämförelse MA-EWMA<br />

b=0.7;<br />

a=(1-b)/(1-bˆ11);<br />

B EWMA=a*b.ˆ(0:10);<br />

y EWMA = filter(B EWMA,1,d);<br />

y EWMA(1:10) = [];<br />

plot(d);<br />

plot(n, y MA, ’b’);<br />

plot(n, y EWMA, ’r’);<br />

37<br />

36<br />

35<br />

34<br />

0 10 20 30 40 50


Faltning Differensekvationer Differentialekvationer<br />

Allmänt<br />

Allmänt system då x[n] = 0, n < 0<br />

y[n] =<br />

n∑<br />

w i x[n − i], n ≥ 0<br />

i=0<br />

Puls och pulssvar<br />

{ 1 n = 0<br />

n∑<br />

δ[n] =<br />

0 n ≠ 0 → h[n] = w i δ[n − i] = w n<br />

Faltningsrepresentation<br />

i=0<br />

y[n] = h[n] ∗ x[n] =<br />

n∑<br />

h[i]x[n − i]<br />

i=0


Faltning Differensekvationer Differentialekvationer<br />

Faltning med conv i Sysquake eller Matlab<br />

n = 0:40;<br />

x = sin(0.2*n);<br />

h = sin(0.5*n);<br />

y = conv(x, h);<br />

subplot 311<br />

stem(n, h(1:length(n)))<br />

title(’h[n]’)<br />

subplot 312<br />

stem(n, x(1:length(n)))<br />

title(’x[n]’)<br />

subplot 313<br />

stem(n, y(1:length(n)))<br />

title(’y[n]’)<br />

h[n]<br />

1<br />

0<br />

-1<br />

0 10 20 30 40<br />

x[n]<br />

1<br />

0<br />

-1<br />

0 10 20 30 40<br />

y[n]<br />

0<br />

0 10 20 30 40


Faltning Differensekvationer Differentialekvationer<br />

Innehåll<br />

Faltning<br />

Differensekvationer<br />

Differentialekvationer


Faltning Differensekvationer Differentialekvationer<br />

Exempel: avbetalning på banklån<br />

y[0] = banklån från början<br />

y[n] = kvar av lånet månad n<br />

r = årsräntan, r/12 månatsräntan<br />

x[n] = avbetalning månad n<br />

Lånets storlek månad n<br />

y[n] = (1 + r/12)y[n − 1] − x[n]<br />

Rekursion<br />

y[1] = (1 + r/12)y[0] − x[1]<br />

y[2] = (1 + r/12)y[1] − x[2]<br />

y[3] = (1 + r/12)y[2] − x[3]<br />

.


Faltning Differensekvationer Differentialekvationer<br />

Första ordningens differensekvation<br />

Inför parametrar a = −(1 + r/12), b = −1<br />

y[n] + ay[n − 1] = bx[n], n = 1, 2, . . .<br />

Lösning<br />

y[1]<br />

y[2]<br />

y[3]<br />

y[n]<br />

= −ay[0] + bx[1]<br />

= −ay[1] + bx[2] = −a(−ay[0] + bx[1]) + bx[2]<br />

= a 2 y[0] − abx[1] + bx[2]<br />

= −ay[2] + bx[3] = −a(a 2 y[0] − abx[1] + bx[2]) + bx[3]<br />

= −a 3 y[0] + a 2 bx[1] − abx[2] + bx[3]<br />

.<br />

= (−a) n y[0] + ∑ n<br />

i=1 (−a)n−i bx[i]


Faltning Differensekvationer Differentialekvationer<br />

Differensekvationer<br />

N:te ordningens differensekvation<br />

N∑<br />

y[n] + a i y[n − i] =<br />

i=1<br />

M∑<br />

b i x[n − i]<br />

i=0<br />

Rekursiv form<br />

⎡<br />

⎤<br />

y[n − N]<br />

y[n − N + 1]<br />

y[n] = −[ a N a N−1 . . . a 1 ] ⎢<br />

⎥<br />

⎣ .<br />

⎦<br />

⎡<br />

y[n − 1]<br />

⎤<br />

x[n − M]<br />

x[n − M + 1]<br />

+[ b M b M−1 . . . b 0 ] ⎢<br />

⎥<br />

⎣ .<br />

⎦<br />

x[n]


Faltning Differensekvationer Differentialekvationer<br />

Exempel: andra-ordningens system<br />

Bestäm svar då<br />

y[n] − 1.5y[n − 1] + y[n − 2] = 2x[n − 2],<br />

⎧<br />

⎨<br />

⎩<br />

y[−2] = 2<br />

y[−1] = 1<br />

x[n] = u[n]<br />

Rekursion<br />

y[0] = 1.5y[−1] − y[−2] + 2x[−2] = 1.5(1) − (2) + 2(0) = −0.5<br />

y[1] = 1.5y[0] − y[−1] + 2x[−1] = 1.5(−0.5) − (1) + 2(0) = −1.75<br />

y[2] = 1.5y[1] − y[0] + 2x[0] = 1.5(−1.75) − (−0.5) + 2(1) = −0.125<br />

y[3] = 1.5y[2] − y[1] + 2x[1] = 1.5(−0.125) − (−1.75) + 2(1) = 3.562


Faltning Differensekvationer Differentialekvationer<br />

Implementering (Sysquake, Matlab)<br />

function y = recur(a, b, n, x, x0, y0)<br />

% y = recur(a, b, n, x, x0, y0)<br />

N = length(a);<br />

M = length(b)-1;<br />

y = [y0 zeros(1,length(n))];<br />

x = [x0 x];<br />

a1 = a(length(a):-1:1);<br />

b1 = b(length(b):-1:1);<br />

for i = N+1:N+length(n),<br />

y(i) = -a1*y(i-N:i-1)’ + b1*x(i-N:i-N+M)’;<br />

end<br />

y = y(N+1:N+length(n));


Faltning Differensekvationer Differentialekvationer<br />

Exempel i Sysquake<br />

a = [-1.5 1];<br />

b = [0 0 2];<br />

y0 = [2 1];<br />

x0 = [0 0];<br />

n = 0:20;<br />

x = ones(size(n));<br />

y = recur(a, b, n, x, x0, y0);<br />

stem(n, y)<br />

8<br />

6<br />

4<br />

2<br />

0<br />

0 5 10 15 20


Faltning Differensekvationer Differentialekvationer<br />

Innehåll<br />

Faltning<br />

Differensekvationer<br />

Differentialekvationer


Faltning Differensekvationer Differentialekvationer<br />

Elektriskt system<br />

Kirchoff’s lag (summa spänning i<br />

lopen är noll)<br />

Utnyttja i = C dy<br />

dt<br />

y + Ri − x = 0<br />

Konstitutiva samband<br />

v(t) = Ri(t)<br />

i(t) = C dv(t)<br />

dt<br />

v(t) = L di(t)<br />

dt<br />

y + RC dy<br />

dt − x = 0<br />

Första ordningens<br />

differentialekvation<br />

RC dy(t)<br />

dt<br />

+ y(t) = x(t)


Faltning Differensekvationer Differentialekvationer<br />

Mekaniskt system<br />

Newton (riktning uppåt positiv):<br />

Mÿ = −k d ẏ − k s y + x<br />

Andra ordningens<br />

differentialekvation<br />

• Newton’s lag: Mÿ = ∑ i F i<br />

• Fjäderkraft: F s = k s y<br />

• Dämpkraft: F d = k d ẏ<br />

• Extern kraft: x(t)<br />

Mÿ(t) + k d ẏ(t) + k s y(t) = x(t)


Faltning Differensekvationer Differentialekvationer<br />

Euler-approximation<br />

dy(t)<br />

dt<br />

= −ay(t) + bx(t)<br />

Euler-approximation<br />

dy(t)<br />

dt<br />

∣ ≈<br />

t=nT<br />

y(nT + T ) − y(nT )<br />

T<br />

Differentialekvation → differensekvation<br />

y(nT +T )−y(nT )<br />

T<br />

= −ay(nT ) + bx(nT )<br />

y[n+1]−y[n]<br />

T<br />

= −ay[n] + bx[n]<br />

y[n + 1] = (1 − aT )y[n] + bTx[n]<br />

y[n] = (1 − aT )y[n − 1] + bTx[n − 1]


Faltning Differensekvationer Differentialekvationer<br />

Jämför med exakt lösning<br />

Differensekvation med lösning<br />

y[n] = (1 − aT )y[n − 1]<br />

y[n] = (1 − aT ) n y[0]<br />

Differentialekvation med lösning<br />

ẏ(t) = −ay(t)<br />

y(t) = e −at y(0)<br />

y[n] = e −aTn y[0] = (e −aT ) n y[0]<br />

Jämför<br />

e −aT = 1 − aT + a2 T 2<br />

2<br />

Approximation bra om aT ≪ 1<br />

− a3 T 3<br />

6<br />

+ . . .


Faltning Differensekvationer Differentialekvationer<br />

Approximation av andra-derivator<br />

Euler-approximation of första-derivata<br />

dy(t)<br />

y(nT + T ) − y(nT )<br />

dt ∣ ≈<br />

t=nT<br />

T<br />

Euler-approximation av andra-derivata<br />

=<br />

y[n + 1] − y[n]<br />

T<br />

d 2 y(t)<br />

dt 2<br />

=<br />

∣<br />

∣∣t=nT<br />

≈ dy<br />

dt | t=nT +T − dy<br />

dt | t=nT<br />

T<br />

(y[n+2]−y[n+1])/T −(y[n+1]−y[n])/T<br />

T<br />

= y[n+2]−2y[n+1]+y[n]<br />

T 2


Faltning Differensekvationer Differentialekvationer<br />

Differentialekvation<br />

dy(t)<br />

dt<br />

Euler-approximation<br />

+ 1<br />

RC y(t) = 1<br />

RC x(t)<br />

Exempel: RC-krets<br />

Jämför exakt lösning<br />

t = 0:0.04:8;<br />

y2 = 1 -exp(-t);<br />

plot(t,y2,’r’)<br />

y[n] = (1− T<br />

RC )y[n−1]+ T<br />

RC x[n−1]<br />

R=1; C=1; T=0.2;<br />

a= -(1-T/(R*C)); b =[0 T/(R*C)];<br />

y0 = 0; x0 = 1;<br />

n=1:40;<br />

x=ones(size(n));<br />

y1 = recur(a, b, n , x, x0, y0);<br />

n = [0, n];<br />

y1 = [y0, y1];<br />

plot(n*T, y1, ’bo’);<br />

1<br />

0.8<br />

0.6<br />

0.4<br />

0.2<br />

0<br />

0 1 2 3 4 5 6 7 8


Faltning Differensekvationer Differentialekvationer<br />

Alternativ<br />

Simulering av linjärt system ( d n<br />

dt n y(t) = y (n) (t))<br />

a 0 y (n) + a 1 y (n−1) + . . . + a n y = b 0 x (m) + . . . + b m x<br />

A = [ a 0 a 1 . . . a n ], B = [ b 0 b 1 . . . b m ]<br />

y = lsim(B, A, x, t, ’r’);<br />

RC-krets-exemplet:<br />

x = ones(size(t));<br />

lsim(1, [1 1], x, t);<br />

Oskiljaktig från analytisk lösning<br />

Stegsvars-simulering<br />

step(1,[1 1])


Faltning Differensekvationer Differentialekvationer<br />

Simulering av olinjära differentialekvationer<br />

Avancerad numerisk<br />

differentialekvationslösare ode45<br />

(t,y) = ode45(fun,[t0,tend],y0)<br />

Lös Van der Pol’s ekvation<br />

ẍ = µ(1 − x 2 )ẋ − x<br />

För x(0) = 2, ẋ(0) = 0, µ = 1.<br />

Inför y 1 = x, y 2 = ẋ<br />

( ) ( )<br />

ẏ1 y2<br />

ẏ = =<br />

ẏ2 µ(1 − y1 2)y 2 − y 1<br />

function yp = VanDerPol(t,y,mu)<br />

yp =[y(2); mu*(1-y(1)ˆ2)*y(2) - y(1)];<br />

(t,y)=ode45(@VanDerPol,[0,10], [2;0],[],1);<br />

plot(t’,y’,’rb’)<br />

2<br />

1<br />

0<br />

-1<br />

-2<br />

0 2 4 6 8 10

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!