Skip to content

Commit 03e20f5

Browse files
committed
2 parents 432a8b7 + aa401c4 commit 03e20f5

File tree

7 files changed

+88
-50
lines changed

7 files changed

+88
-50
lines changed

Book/build.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,8 +129,8 @@ def build_index(sources):
129129
("Single particle mechanics", "Physics/src/NewtonianMechanics/SingleParticle.lhs")
130130
]),
131131
("Examples", [
132-
("Box on an incline", "Physics/src/Examples/Box_incline.lhs"),
133132
("Teeter", "Physics/src/Examples/Teeter.lhs"),
133+
("Box on an incline", "Physics/src/Examples/Box_incline.lhs"),
134134
])
135135
]
136136

Physics/src/Examples/Teeter.lhs

Lines changed: 42 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,50 +6,72 @@ Exam excercise 3, 2017-01-13
66
> import Dimensions.Quantity
77
> import Prelude hiding (length)
88

9-
> balk_M = 1.0 # mass
9+
10+
Two boxes, m1 and m2, rests on a beam in balance.
11+
12+
Known values:
13+
14+
> beam_M = 1.0 # mass
1015
> m1 = 2.0 # mass
1116
> m2 = 5.0 # mass
1217
> d = 0.75 # length
13-
> balk_L = 5.0 # length
18+
> beam_L = 5.0 # length
1419
> two = 2.0 # one
1520

1621
![Teeter](teeter.png){.float-img-left}
1722

1823
Direct implication:
1924

20-
$$ f(x) = \frac{a}{b}$$
25+
> beam_left_L = (beam_L /# two) +# d
26+
> beam_right_L = beam_L -# beam_left_L
2127

22-
> balk_left_L = (balk_L /# two) +# d
23-
> balk_right_L = balk_L -# balk_left_L
28+
We want to be able to represenet the torques.
2429

25-
We want to be able to represenet the angular momentums.
26-
Here are some propositions.
30+
A torque (sv. vridmoment) is defined as:
2731

28-
> m1_vrid = m1 *# balk_left_L
32+
$$ \tau = distance\ from\ turning\ point \cdot force $$
2933

30-
> balk_L_vrid = ((balk_left_L /# balk_L) *# balk_M) *# (balk_left_L /# two)
34+
Since all force values will be composited of a mass and the gravitation, we can ignore the gravitation.
3135

36+
$$ \tau = distance\ from\ turning\ point \cdot mass $$
3237

33-
> balk_H_vrid = ((balk_right_L /# balk_L) *# balk_M) *# (balk_right_L /# two)
3438

39+
> m1_torq = m1 *# beam_left_L
3540

36-
m2_vrid = m2 * x
41+
To get the beams torque on one side, we need to divide by 2 because the beam's torque is spread out linearly (the density of the beam is equal everywhere), which means the left parts mass centrum is \emph{half the distance} of the left parts total length.
3742

38-
VL = HL
43+
$$ beamL_{\tau} = beamL_{M} \cdot \frac{distance}{2} $$
3944

40-
m1_vrid + balk_L_vrid = m2_vrid + balk_H_vrid
45+
$$ beamL_{\tau} = \frac{beam\ left\ length}{beam\ length} \cdot beam_M \cdot \frac{beam\ left\ length}{2} $$
4146

42-
m1_vrid + balk_L_vrid - balk_H_vrid = m2_vrid
47+
> beamL_torq = ((beam_left_L /# beam_L) *# beam_M) *# (beam_left_L /# two)
4348

44-
(m1_vrid + balk_L_vrid - balk_H_vrid) / m2 = x
49+
> beamR_torq = ((beam_right_L /# beam_L) *# beam_M) *# (beam_right_L /# two)
4550

46-
> x = (m1_vrid +# balk_L_vrid -# balk_H_vrid) /# m2
51+
We make an expression for $m2_{\tau}$, which involves our unknown distance x.
4752

48-
Security check:
53+
$$ m2_{\tau} = m2 \cdot x $$
54+
55+
For the teeter to be in balance, both sides torques should be equal.
56+
57+
$$ Left\ side\ torque = Right\ side\ angular\ torque $$
58+
59+
We try to break out $m2_{\tau}$ and then x.
4960

50-
> m2_vrid = m2 *# x
61+
$$ m1_{\tau} + beamL_{\tau} = m2_{\tau} + beamR_{\tau} $$
62+
63+
$$ m1_{\tau} + beamL_{\tau} - beamR_{\tau} = m2_{\tau} $$
64+
65+
$$ \frac{m1_{\tau} + beamL_{\tau} - beamR_{\tau}}{m2} = x $$
66+
67+
Our solution:
68+
69+
> x = (m1_torq +# beamL_torq -# beamR_torq) /# m2
70+
71+
Security check:
5172

52-
> vL = m1_vrid +# balk_L_vrid
53-
> hL = m2_vrid +# balk_H_vrid
73+
> m2_torq = m2 *# x
5474

75+
> left_side_torque = m1_torq +# beamL_torq
76+
> right_side_torque = m2_torq +# beamR_torq
5577

Rapport/include/Introduktion.tex

Lines changed: 21 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,13 @@ \chapter{Introduktion}
55

66
\section{Bakgrund}
77

8-
På civilingenjörsprogrammet Datateknik på Chalmers tekniska högskola ingår den obligatoriska
9-
fysikkursen \textit{Fysik för ingenjörer}. Tentastatistiken för denna kurs är
10-
betydligt sämre~\cite{tentastatistik} än för andra kurser på Datateknik\footnote{Andel underkända
11-
ordinarie tentamen från läsår 2014 till 2017: 34\%, 76\%, 18\%, 57\%.
12-
}. Projektgruppen tror att många studenter på Datateknik finner denna
13-
kurs svår eller ointressant, och att detta leder till att en betydande andel får
14-
underkänt.
8+
På civilingenjörsprogrammet Datateknik på Chalmers tekniska högskola ingår den
9+
obligatoriska fysikkursen \textit{Fysik för ingenjörer}. Tentastatistiken för
10+
denna kurs är betydligt sämre~\cite{tentastatistik} än för andra kurser på
11+
Datateknik\footnote{Andel underkända på ordinarie tentamen från läsår 2014 till
12+
2017: 34\%, 76\%, 18\%, 57\%.}. Projektgruppen tror att många studenter på
13+
Datateknik tycker att denna kurs är svår eller ointressant och att detta leder
14+
till att en betydande andel får underkänt.
1515

1616
Detta tror projektgruppen kan lösas med avstamp från kursen \textit{Domain
1717
Specific Languages of Mathematics} (``DSLsofMath''), med den svenska titeln
@@ -82,20 +82,26 @@ \section{Bakgrund}
8282
tillhörande programmeringskod, uppgifter och lösningar, som komplement till
8383
existerande kurser i signallära.
8484

85+
Till sist finns det ett arbete som liknar detta arbete i både syfte och
86+
programmeringsspråk, vilket utfördes av Scott N. Walck vid Lebanon Valley
87+
College~\cite{lebanon-physics}. Syftet med det projektet var att fördjupa
88+
studenters förståelse av fysik, med fokus på elektromagnetisk teori, genom att
89+
uttrycka fysiken med hjälp av funktionell programmering.
90+
8591
\section{Projektets mål}
8692

8793
Målet med detta kandidatarbete är att angripa fysik från ett
88-
programmeringsperspektiv. Förhoppningen är då att fysik ska bli både
94+
programmeringsperspektiv, förhoppningen är då att fysik ska bli både
8995
roligare och intressantare för datastudenter, och därmed också
9096
enklare. Detta liknar premissen bakom kursen DSLsofMath och kandidatarbetet
9197
från 2016, som istället för fysik behandlade matematik respektive signallära.
9298

9399
Mer konkret ska ovanstående genomföras genom att skapa ett läromaterial.
94100
Läromaterialet ska bestå av
95-
domänspecifika språk, skrivna
101+
domänspecifika språk som modellerar fysik, skrivna
96102
%programkod skriven
97-
i Haskell, som
98-
modellerar fysik sammanvävt med en förklarande lärotext. Läromaterialet ska vara
103+
i Haskell,
104+
sammanvävt med en förklarande lärotext. Läromaterialet ska vara
99105
enkelt för läsaren att ta till sig, vilket ska åstadkommas genom ett lättsamt
100106
språk, publicering på en hemsida samt fri tillgång till källkoden.
101107

@@ -107,8 +113,8 @@ \section{Avgränsningar}\label{sec:avgransningar}
107113

108114
Läromaterialet ska begränsa sig till att enbart beskriva de fysikaliska områden
109115
som ingår i kursen Fysik för ingenjörer. Denna avgränsning valdes dels eftersom
110-
att det är den fysik gruppmedlemmarnas kunskaper är begränsad till, dels för att
111-
det är till Fysik för ingenjörer detta projekt kan bli mest relevant för,
116+
att det är den fysik gruppmedlemmarnas kunskaper är begränsad till, och dels för att
117+
det är denna kurs som projektet kan bli mest relevant för, eftersom
112118
kursen ingår i datastudenternas obligatoriska kursplan.
113119

114120
Vidare kommer en prioritering av innehållet i Fysik för ingenjörer att göras.
@@ -125,7 +131,7 @@ \section{Avgränsningar}\label{sec:avgransningar}
125131

126132
Projektet kommer fokusera mer på att skapa innehållet än att göra
127133
efterforskningar på, och tillämpa, pedagogiska teorier och riktlinjer. Denna
128-
avgränsning valdes eftersom det är hur innehållet kan se ut som är det
129-
intressanta och nya, inte hur ett pedagogiskt läromaterial kan skrivas på bästa sätt. Den
134+
avgränsning valdes eftersom det är hur innehållet kan se ut som är
135+
intressant och nytt, inte hur ett pedagogiskt läromaterial kan skrivas på bästa sätt. Den
130136
pedagogiska aspekten kommer inte ignoreras helt, fokuset på den kommer bara att
131137
vara mindre.

Rapport/include/Teori.tex

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,20 @@ \section{Domänspecifika språk}
1212
textformatering eller matlagning. Specifikt syftar det på att det är \textit{just
1313
detta} område som fokus läggs på. Med språk menas ett sätt att uttrycka
1414
saker inom domänen. Svenska och Java är två exempel på språk.
15-
16-
Domänspecifika språk är vanligt förekommande i programmeringssammanhang. HTML är
15+
Domänspecifika språk är vanligt förekommande i programmeringssammanhang, HTML är
1716
ett domänspecifikt språk för textformatering, SQL för databashantering och
18-
CSV för tabeller. Precis som domänspecifika språk i vardagen passar
19-
domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
20-
att hantera en databas men inte för att skapa ett spel.
17+
CSV för tabeller.
2118

2219
Domänspecifika språk används inte bara i programmering utan förekommer även i
2320
andra mer vardagliga sammanhang. Inom domänen matlagning är steka, grilla och
24-
fritera användbara ord. Likaså inom domänen ridning är grimma, box och galopp
21+
fritera användbara ord, likaså inom domänen ridning är grimma, box och galopp
2522
användbara ord. Är personen bekant med domänen vet den vad som menas med grimma
2623
och det är ett kort och väldefinierat sätt att uttrycka sig. Men detta språk (här
2724
i form av ord och begrepp) blir svårtolkat utanför domänen. Ett recept kan inte
2825
förklaras i termer av grimmor, boxar och galopper.
26+
Precis som domänspecifika språk i vardagen passar
27+
domänspecifika språk inom programmering bäst för sin egen domän. SQL är bra för
28+
att hantera en databas men inte för att skapa ett spel.
2929

3030
Motsatsen till ett domänspecifikt språk är ett generellt språk. I
3131
vardagen är naturliga språk som svenska och engelska generella medan
@@ -37,7 +37,7 @@ \section{Domänspecifika språk}
3737
minnestillgång~\cite{turing_ne}~\cite{turing_book}. Nackdelen med
3838
dessa generella språk är just att de är så generella. Eftersom
3939
domänspecifika språk inte behöver vara användbara utanför den
40-
specifika domänen kan de inkludera speciell syntax och ha inbyggd
40+
specifika domänen kan de inkludera specifik syntax och ha en inbyggd
4141
funktionalitet som inte hade passat i ett generellt språk.
4242

4343
Ett domänspecifikt språk kan antingen implementeras som ett fristående språk
@@ -46,17 +46,17 @@ \section{Domänspecifika språk}
4646
\textit{Haskell}. Haskell är ett lämpligt val eftersom det är enkelt att skapa
4747
datatyper som bygger upp det domänspecifika språket. Att Haskell är ett
4848
högnivåspråk är också en fördel då programmeraren slipper programmeringstekniska detaljer som
49-
minneshantering, och kan istället fokusera på programmets innehåll
49+
minneshantering och kan istället fokusera på programmets innehåll
5050
och betydelse. Slutligen möjliggör mönstermatchning att de datatyper som utgör
5151
det domänspecifika språket enkelt kan brytas isär och manipuleras.
5252

53-
För vidare läsning om domänspecifika språk rekommenderas \textit{DSL for the Uninitiated} \cite{DSLU}.
53+
För vidare läsning om domänspecifika språk rekommenderas \textit{DSL for the Uninitiated}~\cite{DSLU}.
5454

5555
\section{Syntax, syntaxträd och semantik}\label{sec:syntax}
5656

5757
I samband med domänspecifika språk dyker begreppen \textit{syntax} och
58-
\textit{semantik} upp. Syntax är reglerna för hur enheter i språket, till exempel ord och skiljetecken, sammamslås till komplexa strukturer, som meningar och
59-
satser. Semantik är betydelsen av sådana komplexa strukturer i ett språk.
58+
\textit{semantik} upp. Syntax är reglerna för hur enheter i språket, till exempel ord och skiljetecken, sammamslås till komplexa strukturer som meningar och
59+
satser. Semantiken är betydelsen av sådana komplexa strukturer i ett språk.
6060
Inom aritmetik\footnote{Aritmetik är
6161
den gren inom matematiken som behandlar räkning av tal.} är tal och
6262
operationer syntax medan värdet av uttrycket är semantiken. Till

Rapport/include/backmatter/referenser.bib

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,3 +77,10 @@ @misc{QC
7777
@misc{MD,
7878
note = "E. H. Müller, J. Grant och W. R. Saunders, ``A Domain Specific Language for Performance Portable Molecular Dynamics Algorithms,'' 2017. [Online]. Tillgänglig: \url{https://arxiv.org/abs/1704.03329}, hämtad: 2018-04-20."
7979
}
80+
@misc{lebanon-physics,
81+
note = "S. N. Walck, ``Learn Physics by Programming in Haskell,'' 2017. [Online]. Tillgänglig: \href{https://arxiv.org/abs/1412.4880v1}{https://arxiv.org/abs/1412.4880v1}, hämtad: 2018-05-14."
82+
}
83+
84+
85+
86+

Rapport/include/frontmatter/Sammanfattning.tex

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,10 @@ \section*{Sammanfattning}
3232
består av Haskell-kod tillsammans med beskrivande
3333
text. Vissa kapitel bygger upp domänspecifika språk från grunden medan
3434
andra kombinerar och tillämpar tidigare domänspecifika språk på
35-
fysikaliska problem. Läromaterialet är publicerat på en hemsida\footnote{\url{https://dslsofmath.github.io/BScProj2018/}}
36-
och dess källkod finns
37-
fritt tillgänglig\footnote{\url{https://github.com/DSLsofMath/BScProj2018}}.
35+
fysikaliska problem. Läromaterialet är publicerat på en
36+
hemsida\footnote{\url{https://dslsofmath.github.io/BScProj2018/}} och dess
37+
källkod finns fritt
38+
tillgänglig\footnote{\url{https://github.com/DSLsofMath/BScProj2018}}.
3839

3940
Rapporten beskriver
4041
även de möten och diskussioner som genomförts med utomstående. Syftet var att

Redovisningar/Slutredovisning/Innehåll.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
[Länk till Drive-presentation](https://docs.google.com/presentation/d/1GKvIVS8E4a8Xm1CrACb8xWJitlgOIeo9winxd3gK4d4/edit#slide=id.p)
2+
13
## Krav
24

35
15-20 min presentation.

0 commit comments

Comments
 (0)