Simulering I Don t panic! * Morten Dam Jørgensen * Large friendly letters
Oversigt Hvad I skal tage med fra denne forelæsning Hvad er simulering Fra model til simulering Numerisk løsning af differentialligninger Frit fald Luftmodstand Sammenligning med den analytiske løsning En advarsel om præcision Et ikke-mekanisk system Conway s Life Simulation is the imitation of some real thing, state of affairs, or process. The act of simulating something generally entails representing certain key characteristics or behaviours of a selected physical or abstract system. wikipedia.org
Hvad er det I skal lære? Fra mig: En måde at tænke på Praktisk træning: Lab øvelsen i denne uge Resten af Mek1 og Mek2: Bliv gode til at omsætte fysiske problemstillinger til simuleringer (tænk struktureret). Statistik: Test af simulering i forhold til eksperiment (indirekte hypotesetest).
Fysik = Ændringer Fysikkens store kvalitet er at den bygger på et kvantitativt grundlag. Det er (typisk) ændringerne af en given størrelse vi opfatter som fysisk. Differentialligninger er grundlaget for den teoretiske beskrivelse af stort set alle fysiske fænomener.
Ingredienser Model (Et sæt differentialligninger) Begyndelsesbetingelser (Positionen af objekterne i vores system) Randbetingelser (Definition af fysikken omkring systemets grænser)
Ingredienser Model (Et sæt differentialligninger) Begyndelsesbetingelser (Positionen af objekterne i vores system) Randbetingelser (Definition af fysikken omkring systemets grænser) Model Ændringen i acceleration skal være proportional med kraftpåvirkningen Den elektromotoriske kraft genereret er proportional med ændringen i den magnetiske fluks i systemet Begyndelsesbetingelser Raketten befinder sig på et sfærisk objekt med en masse på 10 22 kg, med en ækvatoriale hastighed på 465 m/s Gletsjerens hastighed er 28 m/ døgn, den er 2 km tyk med et areal på 110.000 km 2 Randbetingelser Partiklerne er spærret inde i en tæt og restitutionsløs boks med dimensionerne: 20x20x20 cm Bilens maksimumshastighed er begrænset til 210 km/t Vejen skifter fra asfalt til grus efter 400 m
Luftens bevægelse omkring en flyvinge Randbetingelser Randbetingelser fluid hastighed = 0 ved vingerne Navier-Stokes Model for fluid bevægelse Begyndelsesbetingelser Flyets hastighed, position af vingerne, luftens viskositet, volumen, densitet...
Frit fald Et objekt i frit fald (uden luftmodstand) HHGTTG Vi antager at tyngdeaccelerationen er konstant: F g = mg Vi kan benytte Newtons 2. lov til at finde positionen y(t) ved at sætte F = Fg m d2 y dt 2 = F d 2 y dt 2 = g Vi ønsker at løse denne 2. ordens-differentialligning...
Frit fald 2-ordens ligning For at lette den numeriske løsning omskriver vi, d 2 y dt 2 = g Til et system af to 1. ordens differentialligninger, dy dt = v dv dt = g (Analytisk løsning) y(t) = y(0) + v(0)t v(t) = v(0) + v(0) 1 2 gt2 gt Husk Enhver normal differentialligning (ODE) af n-orden kan omskrives til et system af n første-ordens differentialligninger.
Frit fald Vi kan approksimere de afledede, hvis vi husker grundantagelsen bag differentiering, og i stedet laver endelige skridtstørrelser t... y(t + t) y(t) t v(t + t) v(t) t = v(t) = g lim t!0! dy dt = v dv dt = g
Frit fald Differensligningen kan nu omskrives sådan at vi får den næste værdi af funktionen y(t) givet den forrige og ændringsforholdet. y(t + t) y(t) t v(t + t) v(t) t = v(t) = g t & 0 For små men endelige t værdier, kan vi omskrive udtrykket for y(t+ t) y(t + t) =y(t)+v(t) t v(t + t) =v(t) g t
Frit fald y(t + t) =y(t)+v(t) t v(t + t) =v(t) g t Vi kan nu løse differens - ligningerne med summering, som numerisk analogi til integration ved analytisk løsning. g = -9.8; y0 = 100; v0 = 0; % start y = y0; v = v0; % sæt start t = 0; dt = 0.1; % tid % Euler metoden while y > 0 % stop ved y=0 t = t + dt; y = y + v.* dt; v = v + g.* dt; plot(t,y,'b+') end % Analytisk løsning t = 0:0.1:t; y = y0 + v0 + (0.5.* g.* t.^2); plot(t,y,'r')
Frit fald y(t + t) =y(t)+v(t) t v(t + t) =v(t) g t g = -9.8; y0 = 100; v0 = 0; % start y = y0; v = v0; % sæt start t = 0; dt = 0.1; % tid % Euler metoden while y > 0 % stop ved y=0 t = t + dt; y = y + v.* dt; v = v + g.* dt; plot(t,y,'b+') end % Analytisk løsning t = 0:0.1:t; y = y0 + v0 + (0.5.* g.* t.^2); plot(t,y,'r')
Frit fald Spørgsmål: Hvis vi ville indføre luftmodstand (drag), hvordan skulle vi bære os ad? ~F drag = 1 2 ~v2 C d A g = -9.8; y0 = 100; v0 = 0; % start y = y0; v = v0; % sæt start t = 0; dt = 0.1; % tid % Euler metoden while y > 0 % stop ved y=0 t = t + dt; y = y + v.* dt; v = v + g.* dt; plot(t,y,'b+') end ~v Densitet af mediet (luft) Hastigheden af legemet relativt til mediet C d A Drag koefficient (dimensionsløs) Tværsnittet af objektet i bevægelsesretningen http://en.wikipedia.org/wiki/drag_(physics)
Frit fald ~v C d A ~F drag = 1 2 ~v2 C d A Densitet af mediet (luft) Hastigheden af legemet relativt til mediet Drag koefficient (dimensionsløs) Tværsnittet af objektet i bevægelsesretningen http://en.wikipedia.org/wiki/drag_(physics) F drag (v n )=ma drag (v n ) a drag (v n )=F drag (v n )/m v drag = v tyngde = tf(v)/m tg v n+1 = v n + v drag + v tyngde g = -9.8; y0 = 100; v0 = 0; % start y = y0; v = v0; % sæt start m = 1; % masse af objekt rho = 0.1; C_d = 1.2; A = 1; t = 0; dt = 0.1; % tid while y > 0 % stop ved y=0 t = t + dt; y = y + v.* dt; end dv_g = g.* dt; dv_d = dt./m.*... (0.5*rho* v^2*c_d*a); v = v + dv_g + dv_d plot(t,y,'b+')
Frit fald Hvis vi hopper ud fra en Airbus A380 i 10 kilometers højde, har har ændringen i atmosfærens densitet så betydning? Let s find out! ~F drag = 1 2 (y)~v 2 C d A En adiabatisk atmosfære (don t ask): rho0 = 1.2; % kg/m^4-1 gamma = 1.4; y0 = 29400; % m rho = @(y) rho0 *(1 - (gamma-1)./gamma* y/y0).^(1/ (gamma-1)); while y > 0 % stop ved y=0 t = t + dt; y = y + v.* dt; dv_g = g.* dt; dv_d = dt./m.* (0.5*rho(y)* v^2*c_d*a); (y) = 0 1 1 y y 0 1/( 1) end v = v + dv_g + dv_d plot(t,y,'b+')
Resultatet
Modellens præcision
Valg af skridtstørrelse Euler metoden er ikke den bedste i verden, og størrelsen af tidsskridtet har stor betydning for resultatet Lokale fejl Akkumulerende fejl En god regl, sæt dt til den højeste værdi du kan, som ikke ændrer resultatet i forhold til en lavere værdi. t={0,0001, 0.001,0.01,0.1,1,...,42} Vi vil se på mere præcise metoder i Mek2. Jo længere man kører en simulering des større betydning får præcisionen, da små fejl i hvert tidsskridt akkumulerer indtil simuleringen løber løbsk Demo: jumper.m
Conway s Game of Life Et zero-player spil i.e. en simulering "Universet" er et uendeligt gitter (som en uendelig skakplade), hver celle i gitteret har en af to tilstande: levende eller død. Hver celler har i alt otte naboceller.
Conway s Game of Life I hvert tidskridt sker følgende, Alle levende celler med mindre end 2 levende naboer dør pga. underbefolkning. Alle levende celler med to eller tre levende naboer lever videre til den næste generation. Alle levende celler med mere end tre levende naboer dør af overbefolkning. Alle døde celler med præcis tre levende naboer bliver levende ved reproduktion. Det er begyndelsesbetingelserne som er afgørende for dynamikken
Conway s Game of Life < 2 levende naboer 2 3 levende naboer 3 > levende naboer Døde med 3 levende naboer
Conway s Game of Life < 2 levende naboer 2 3 levende naboer 3 > levende naboer Døde med 3 levende naboer Grafik fra: http://www.leda-tutorial.org/en/official/ch02s02s02.html
n = 100; % grid size (n x n) X = randi(2,n,n)-1; % MAGIC GOES HERE!!!! Y = X; colormap bone for t=1:1000000 % number of steps image(y) % Tegn gitter for x=1:size(x,1) for y=1:size(x,2) if x == 1 if y == 1 s = sum(sum(x(x:x+1, y:y+1))) - X(x,y); B elseif y == size(x,2) s = sum(sum(x(x:x+1, y-1:y))) - X(x,y); else E s = sum(sum(x(x:x+1, y-1:y+1))) - X(x,y); end elseif x == size(x,1) K if y == 1 s = sum(sum(x(x-1:x, y:y+1))) - X(x,y); elseif y == size(x,2) L s = sum(sum(x(x-1:x, y-1:y))) - X(x,y); else s = sum(sum(x(x-1:x, y-1:y+1))) - X(x,y); A end else if y == 1 s = sum(sum(x(x-1:x+1, y:y+1))) - X(x,y); G elseif y == size(x,2) s = sum(sum(x(x-1:x+1, y-1:y))) - X(x,y); else E s = sum(sum(x(x-1:x+1, y-1:y+1))) - X(x,y); end end R if X(x,y) == 1 && s < 2 % Too few neighbours, underpopulation Y(x,y) = 0; elseif X(x,y) == 1 && (s == 2 s == 3) % balance Y(x,y) = X(x,y); elseif X(x,y) == 1 && s > 3 % over-population Y(x,y) = 0; elseif X(x,y) == 0 && s == 3 % Spawn new cell Y(x,y) = 1; end end end pause(0.01) X = Y; end
Opsummering Modeller ~= løsninger, løsninger er næsten umulige af finde eksakt Simulering og numerisk løsning i stedet Numerisk løsning af ODEer er nemt, men præcisionen er en vigtig detalje Hvor realistisk skal vores simulering være? Der findes andre typer simulering end bare løsning af differentialligninger, nogle benytter slet ikke matematiske strukturer Morten kan også skrive grimt kode..
Aflevering 2 Programmering Betingelser Løkker Variable Datastrukturer Funktioner Forvent at i skal kode lidt selv Åben så MATLAB! (P.s. I var rigtig gode i aflevering 1 - awesome!)
Næste uge Statistik (med Troels Petersen) Det I kender: middelværdi, spredning osv.. Det I ikke kender: Fitting, hypotesetest og andre lækkerier