Matematik, Modellering och
Simulering
Markus Dahl, Carl Jönsson
Wolfram MathCore
2
LiU Math Presentation.nb
Översikt
◼ Vilka är vi som presenterar?
◼ Wolfram Research med produkter
◼ Modellering och simulering i arbetslivet (Markus)
◼ Algoritmutveckling och matematiken bakom den (Carl)
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
3
4
LiU Math Presentation.nb
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
LiU Math Presentation.nb
Mathematica
◼ Matematikprogram med symbolhantering
In[1]:=
1

ⅆx
1 - x3 
ArcTan 1+2 x 
3
Out[1]=
-
3
In[2]:=
1
3
Log[1 - x] +
1
6
Log1 + x + x2 
DSolve2 + Cos[x] y '[x] - Sin[x] y[x] ⩵ 4 * Exp[2 x], y[0] ⩵ 4, y[x], x[[1, 1, 2]]
2 5 + ⅇ2 x 
Out[2]=
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
5
6
LiU Math Presentation.nb
y (0 )
y ′ (0 )
3
2
1
1
-1
-2
-3
◼ Wolfram Alpha
◼ (Se video)
2
3
4
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
7
8
LiU Math Presentation.nb
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
LiU Math Presentation.nb
Optimera solfångare
◼ Cleanergy - Använder solen för att driva stirlingmotorer
9
10
LiU Math Presentation.nb
◼ 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
LiU Math Presentation.nb
◼ Termodynamik igen, plus interaktion med reglersystem
◼ Reglersystemet
◼ Reglerteori
◼ Generator
◼ Enklaste fallet: skriv in en uppmätt verkningsgrad
11
12
LiU Math Presentation.nb
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..
LiU Math Presentation.nb
◼
◼
13
14
LiU Math Presentation.nb
LiU Math Presentation.nb
15
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?
16
LiU Math Presentation.nb
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:
◼
dx
dt
= αx + βy
◼
dy
dt
= δxy - γy
◼ Algebraiska ekvationer (ekvationer utan derivator i), exempelvis:
◼ x 2 + y 2 = L2
◼ ϵ = tan(ϕ) - ϕ
◼ Event-ekvationer, ekvationer som triggar på en speciell händelse, exempelvis:
◼ when x > 0 then
y = z^2;
end when;
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.
17
18
LiU Math Presentation.nb
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.
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
19
20
LiU Math Presentation.nb
eg1 = bipartiteGraph[{{1, x}, {1, y}, {1, z}, {2, x}, {2, y}, {3, x}, {3, y}}]
1
x
2
y
3
z
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 ekvationen e för variabeln v.
HighlightGraph[eg1, FindEdgeCover[eg1]]
1
x
2
y
3
z
LiU Math Presentation.nb
Graf och matchning för en V6-motor
Nedanstå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]
21
22
LiU Math Presentation.nb
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
2
y
◼ 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.
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.
23
24
LiU Math Presentation.nb
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-2
och försöker hitta x, y så att f(x, y) = 0.
x-y-t
◼ Vi analyserar systemet genom att beräkna jacobianen.
◼
∂f1
∂x
∂f1
∂y
∂f2
∂x
∂f2
∂y
=
1 1

1 -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 1
x
2
   =  , endast högerledet kan ändras med tiden.
1 -1 y
t
◼ 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 - 1

2x+y - 2
◼ Jacobian: 
◼ 
z 1

2 1
z 1 x
1
   =  , vänsterledet kan ändras med tiden.
2 1 y
2
◼ 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: 
2x 1

2 2y