Modellering i Tidsplanet
Modellering i Tidsplanet
Modellering i Tidsplanet
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