matematik, modellering och simulering · stirlingmotorn 10 liu math presentation.nb ... liu math...
TRANSCRIPT
Matematik, Modellering och
SimuleringMarkus Dahl, Carl Jönsson
Wolfram MathCore
Översikt◼ Vilka är vi som presenterar?
◼ Wolfram Research med produkter
◼ Modellering och simulering i arbetslivet (Markus)
◼ Algoritmutveckling och matematiken bakom den (Carl)
2 LiU Math Presentation.nb
Vilka är vi?◼ Markus Dahl - Applications Engineer på Wolfram MathCore
◼ Började Yi (tyska) 2010 - Examen 2015
◼ Masterprofil inom Teori, Modellering och Visualisering
◼ Exjobb på MathCore -> Anställning
◼ Carl Jönsson - Software Engineer på Wolfram MathCore
◼ Började Yi (japanska) 2007 - Examen 2012
◼ Masterprofil i Teknisk Matematik
◼ Utvecklar kärnan i Wolfram SystemModeler
LiU Math Presentation.nb 3
Wolfram Research
◼ Huvudkontor i IL, USA.
◼ ~700 anställda världen över
◼ ~20 anställda på Sverigekontoret i Linköping (Wolfram MathCore)
Produkter
◼ Mathematica
◼ Wolfram Alpha
◼ SystemModeler
4 LiU Math Presentation.nb
Mathematica◼ Matematikprogram med symbolhantering
In[1]:=
1
1 - x3ⅆx
Out[1]=
ArcTan 1+2 x
3
3-1
3Log[1 - x] +
1
6Log1 + x + x2
In[2]:= DSolve2 + Cos[x] y'[x] - Sin[x] y[x] ⩵ 4 * Exp[2 x], y[0] ⩵ 4, y[x], x[[1, 1, 2]]
Out[2]=
2 5 + ⅇ2 x
2 + Cos[x]
In[3]:= RevolutionPlot3D[Sqrt[1 + x], {x, 0, 1}, RevolutionAxis → {2, 0, 0}]
Out[3]=
y′′(x) x y(x)
y(0) a, y′(0) b
LiU Math Presentation.nb 5
y(0)
y′(0)
1 2 3 4
-3
-2
-1
1
2
3
◼ Wolfram Alpha
◼ (Se video)
6 LiU Math Presentation.nb
SystemModeler◼ Modellering- och Simuleringsprogram, utvecklas i Mjärdevi av Wolfram MathCore
◼ Drag-and-drop modellering
◼ Multi-domänt
◼ Baserat på programmeringsspråket Modelica
LiU Math Presentation.nb 7
Modellering och Simulering◼ Vad betyder modellering i detta sammanhang?
◼ Beskrivning av verkligheten
◼ Ett sätt att kommunicera med en dator
◼ Fjäder:
◼ F =k*x
◼ F = kraft, k = styvhet, x = förskjutning
◼ Hur sätter vi ihop den här fjädermodellen med andra modeller?
◼ “Räknar man verkligen matte efter universitetet?”
SystemModeler - Exempel◼ Elektronikmodell
◼ Mekanikmodell
8 LiU Math Presentation.nb
Optimera solfångare◼ Cleanergy - Använder solen för att driva stirlingmotorer
LiU Math Presentation.nb 9
◼ Video
◼ Vilka delar behöver modelleras?
◼ Solen
◼ Ta väderdata från mätningar
◼ Hur faller solens strålar in mot parabolen?
◼ Parabolen
◼ Enkel optik där en liten del absorberas av parabolen, resten reflekteras
◼ Solfångaren
◼ Termodynamik! Värmeöverföring genom konvektion, ledning och strålning.
◼ Behöver även kunna beskriva geometrin för kaviteten
◼ Stirlingmotorn
10 LiU Math Presentation.nb
◼ Termodynamik igen, plus interaktion med reglersystem
◼ Reglersystemet
◼ Reglerteori
◼ Generator
◼ Enklaste fallet: skriv in en uppmätt verkningsgrad
LiU Math Presentation.nb 11
Helikoptermodellering
◼ Vad behöver vi modellera för att få en realistisk helikopterrotor?
◼ Flexibla helikopterblad - Mekanik
◼ Helikopterkropp - Mekanik
◼ Reglersystem för kontroll av motor och vinkel av blad
◼ Hur gör man ett reglersystem till en helikopter på så kort tid som möjligt?
◼ Helikopterbladens interaktion med luft (Stor utmaning!) - Aerodynamik
◼ Detta blev den stora nöten att knäcka..
12 LiU Math Presentation.nb
◼
◼
LiU Math Presentation.nb 13
14 LiU Math Presentation.nb
Matematik och SystemModeler◼ Jag arbetar på SystemModeler-kärnan, typiskt innefattar detta:
◼ Förbättra robusthet och kapabilitet.
◼ Utveckla och vidareutveckla algoritmer som behövs för matematisk behandling av modeller.
◼ Hålla mig uppdaterad med relevant forskning.
◼ SystemModeler-kärnan tar en användardefinierad modell och producerar ett separat simuleringsprogram för modellen.
◼ Först omvandlas modellen till en lista av ekvationer och variabler.
◼ Sen optimeras och sorteras ekvationerna.
◼ Till sist genereras programkod (C++) som kompileras av en vanlig kompilator.
◼ Vilken matematik hanterar SystemModeler? Vad kan användaren skriva in?
◼ Vilken matematik använder SystemModeler internt? Vilken matematik behövs för att omvandla ett stort ekvationssystem till ett datorprogram?
LiU Math Presentation.nb 15
Vilken matematik hanterar SystemModeler?Modeller i SystemModeler är matematiskt sett hybrida differential-algebraiska ekvationssystem
(Hybrid DAE). Detta innebär att man kan ha ekvationer som är:
◼ Differentialekvationer, där derivatan tas med avseende på tiden, exempelvis:
◼dxdt
= αx + βy
◼dydt
= δxy - γy
◼ Algebraiska ekvationer (ekvationer utan derivator i), exempelvis:
◼ x2 + y2 = L2
◼ ϵ = tan(ϕ) - ϕ
◼ Event-ekvationer, ekvationer som triggar på en speciell händelse, exempelvis:
◼ when x > 0 then
y = z^2;
end when;
16 LiU Math Presentation.nb
Hur löser SystemModeler hybrida DAE:er?◼ Differentialekvationer löses oftast med numeriska ODE-lösare. Man beräknar den högsta
derivatan av en variabel och integrerar sedan numeriskt.
◼ ODE-lösaren “håller takten” vid simulering.
◼ Algebriska ekvationer löses antingen symboliskt, med linjära lösare eller med olinjära lösare.
◼ Event-ekvationer löses symboliskt, men här måste man se till att stanna sin ODE-lösare vid rätt tidpunkt.
LiU Math Presentation.nb 17
Hur hanterar SystemModeler stora system?◼ En modell i SystemModeler har ofta väldigt många ekvationer, modeller med över 10 000
ekvationer är vanligt.
◼ Nästan alla intressanta modeller innehåller någon icke-linjär ekvation.
◼ Enkel lösning: Ge alla algebraiska ekvationer till en icke-linjär lösare.
◼ Kan bli väldigt ineffektivt.
◼ Hur kan man behandla modeller mer effektivt?
◼ Vi använder grafteori för att bryta ner systemet i mindre system.
18 LiU Math Presentation.nb
Hur använder SystemModeler grafteori?En graf är en samling av noder,sammanbundna av bågar.
GraphPlot3D[GraphData["Foster056A", "EdgeRules"], Boxed → False]
Vi analyserar en modells ekvationer genom att skapa en nod för varje ekvation och variabel. Vi
skapar en båge mellan en ekvation e och en variabel v om v förekommer i e.
x⨯y + z = 1
x + y = 2
x - y = 2
LiU Math Presentation.nb 19
eg1 = bipartiteGraph[{{1, x}, {1, y}, {1, z}, {2, x}, {2, y}, {3, x}, {3, y}}]
1 x
y
z
2
3
Vi försöker sedan matcha upp ekvationerna med variablerna så att varje ekvation är matchad med
exakt en variabel. Om ekvation e är matchad med variabel v tolkar vi det som att vi ska lösa ekvatio-
nen e för variabeln v.
HighlightGraph[eg1, FindEdgeCover[eg1]]
1 x
y
z
2
3
20 LiU Math Presentation.nb
Graf och matchning för en V6-motorNedanstående graf har ungefär 6800 noder (3400 variabelnoder och 3400 ekvationsnoder). En röd
båge mellan noder betyder att noderna är ett matchat variabel-ekvationspar.
HighlightGraph[bipartiteGraphNoLabels[ev6g], ev6matching]
LiU Math Presentation.nb 21
Ekvationssortering◼ När vi har matchat alla variabler med en ekvation sorterar vi ekvationerna i ordningen de ska
lösas.
◼ Idealt sett vill vi ordna ekvationerna så att man löser en ekvation åt gången och lösa den matchade variabeln symboliskt ur ekvationen.
◼ Detta är inte alltid möjligt, betrakta exempelvis följande system:
x + y = 2
x - y = t
◼ Grafen med en matchning ser ut såhär:
exg = {{1, x}, {1, y}, {2, x}, {2, y}};
g = bipartiteGraph[exg];
HighlightGraph[g, FindEdgeCover[g]]
1 x
y2
◼ Här löser vi ekvation 1 för y, men ekvation 1 kräver att vi vet x, vilken löses ur ekvation 2, som kräver att vi vet x.
◼ Alltså måste ekvationerna 1 och 2 lösas samtidigt.
◼ Vi identifierar dessa system av ekvationer och använder speciella lösare för dem.
22 LiU Math Presentation.nb
Fördelar◼ Om man bryter ner systemet i mindre system blir det mycket enklare att lösa. Istället för att lösa
ett icke-linjärt system med 10 000 ekvationer, löser man massor av små system.
◼ För de flesta modeller får man massor av system med endast en ekvation och ett fåtal system som är större (oftast under 20 ekvationer) som använder speciella lösare.
◼ För V6-motorn får man:
◼ 17 linjära system: 11 med storlek 2, 6 med storlek 8.
◼ 6 olinjära system, samtliga av storlek 9 (ett system för varje cylinder).
◼ Resten av ekvationerna (över 3200) löses en åt gången, symboliskt.
LiU Math Presentation.nb 23
Hur vet SystemModeler vilken lösare den ska använda?◼ När SystemModeler träffar på ett system av flera ekvationer ser den ekvationerna som en
funktion av variablerna den försöker lösa.
◼ Från exemplet tidigare identifierade vi ett system med två ekvationer där vi löser för x och y.
◼ x + y = 2
◼ x - y = t
◼ Vi omvandlar detta till en funktion f (x, y) =x + y - 2x - y - t
och försöker hitta x, y så att f(x, y) = 0.
◼ Vi analyserar systemet genom att beräkna jacobianen.
◼
∂f1
∂x
∂f1
∂y
∂f2
∂x
∂f2
∂y
= 1 11 -1
◼ Vi kan sedan på jacobianen om systemet är tidskonstant linjärt, tidsvariabelt linjärt eller olinjärt.
◼ För tidskonstanta linjära system kan man exempelvis förberäkna en LU-faktorisering för att snabbt lösa systemet när det behövs.
◼ Vårt exempel är tidskonstant linjärt 1 11 -1
x
y =
2t, endast högerledet kan ändras med tiden.
◼ Ett tidsvariabelt linjärt system innehåller variabler som inte är lösningsvariabler för systemet i sin jacobian. För dessa system behöver man lösa systemet med en linjär lösare varje gång.
◼ Exempelvis z ⨯x + y = 1, 2 x + y = 2.
◼ f(x, y) = z ⨯x + y - 12 x + y - 2
◼ Jacobian: z 12 1
◼ z 12 1
x
y =
12, vänsterledet kan ändras med tiden.
◼ Ett olinjärt system innehåller lösningsvariabler i jacobianen. För dessa system använder man speciella lösare som kan ta betydligt mer tid än linjära lösare.
◼ Exempelvis x2 + y = z, 2 x + y2 = 2.
◼ f(x, y) =x2 + y - z
2 x + y2 - 2
◼ Jacobian: 2 x 12 2 y
24 LiU Math Presentation.nb