här - KTH

SF1518-1519, numpbd-15 Namn,
pers.nr.....................................................................................
LABORATION 1 (i grupper om två)
Unix- och MATLAB-introduktion,interaktivt program,
linjära ekvationssystem, kurvanpassning och interpolation
Moment -1 avser alla. Moment 0 är speciellt avsett för dem som inte tidigare använt
MATLAB och är nyttig repetition för övriga. Dessa moment redovisas inte men rådfråga gärna handledare vid behov.
Vid redovisningen av moment 1-5 ska båda i laborationsgruppen kunna redogöra för
teori, algoritmer och resultat! Var väl förberedda så att varje delredovisning går snabbt
och smidigt (kurvor plottade, numeriska resultat noterade). Alla frågor i deluppgifterna
ska kunna besvaras! Redovisningstillfällen: 16/9 och 18/9. Sista dag för bonuspoäng:
18/9 2015.
-1. Logga in och aktivera dig på kursen i Rapp
Starta datorn. Den svarar normalt på tilltal från tangetbordet eller musen, tryck
annars på strömbrytaren frampå själva datorn. Logga in med ditt KTH-id och
lösenord. Aktivera dig på kursen genom att starta webläsaren och gå till
https://rapp.csc.kth.se/
som kräver ny inloggning. Klicka på aktivera!
Kursbeteckningar: CMATD (SF1518) läser kursomgång numpbd1-15 och CENMI (SF1519) läser kursomgång numpbd2-15.
När du är klar så logga ut genom att trycka på kugghjulet uppe till höger på
skärmen och välja Logout. Glöm inte det när du slutar i fortsättningen.
Låt din kompis göra samma sak.
Börja sedan med nästa moment.
0. Komma igång med MATLAB (nyttig repetition för dem som gjort
det tidigare)
Klicka på knappen Dash Home upptill till vänster. Ett fönster öppnas med MATLAB bland ikonerna i rutan Applications. Dubbelklicka på MATLAB-ikonen.
Nu är du/ni igång och får efter viss väntan (tills Intializing... försvunnit)
upp MATLAB med de fyra fönstren Current Folder, Editor, Workspace och
Command Window.
Pröva att skriva några enkla MATLAB-uttryck i kommandofönstret och se vad
som händer (utan och med semikolon) Skriv in några rader MATLAB i editorn och spara detta med ett namn du väljer. I mappfönstret kommer det in som
namn.m. Nu kan du i kommandofönstret skriva namn och få dina MATLAB-rader
utförda.
Kör gärna någon demonstration (kommandot demo).
Innan du och din labkompis ger er på uppgift 1-5 kan ni pröva på några av
de MATLAB-övningsuppgifter (MÖ) med facit, som länkas till på kurswebben
under Lab.1. Särskilt rekommenderas MÖ 3, 4, 5, 11 och 12, som kan vara till
hjälp i uppgifterna nedan, särskilt 4 och 5.
Datormiljön är Ubuntu Linux (ett Unix-liknande operativsystem). Du behöver inte fördjupa dig mycket i hur Unix fungerar eftersom MATLAB-systemet
har en inbyggd textredigerare för program, fönster för filhantering och kommandofönster för att köra kommandon och program.
Vill/behöver du veta mer om Unix rekommeras den korta introduktion och den
längre lathund som länkas till under kurslitteratur på kurswebben.
Tips till dig som också kör MATLAB på din persondator/hemdator:
Datorerna i salarna har på skärmen uttag för USB-minne, som därmed som kan
användas för att flytta filer mellan datorerna.
1. Informerad gissning av ett slumpat heltal
Skriv ett program i MATLAB som slumpar fram ett heltal mellan ett och hundra och låter den som kör programmet gissa vilket tal det är. Som hjälp ska ditt
program skriva ut meddelanden efter varje gissning, t ex så här:
Vad heter du? Anna
Hej Anna, vilket heltal från 1 till 100 tror du att det är? 50
För mycket. Gissa igen: 20
För litet. Gissa igen: 25
För litet. Gissa igen: 42
För mycket. Gissa igen: 36
Rätt gissat!
Ledning: Använd help i MATLAB för att ta reda på hur randi och input och
disp fungerar. Strängar är i MATLAB vektorer av tecken.
Provkört av handledare (sign): ....................................................
2. Linjärt ekvationssystem
a) Lös med MATLAB det linjära ekvationssystemet Ax = b i MATLAB:
0
1

1
1

x1
4 5 7
6




2 3 0   x2   5 

=
1 −1 0   x3   1 
1 1 1
2
x4


 
Beräkna residualvektorn r = b − Ax.
Notera svaret nedan. Varför blir inte residualvektorn exakt lika med noll?
Lösning samt svar:
b) Ändra det linjära ekvationssystemet Ax = b till:
0
1

1
1

4 5
6
 
x1


2 3   5
x2 =  
1 −1 
1
x3
1 1
2

 
Har systemet en lösning? Upprepa stegen ovan. Vad händer?
Notera svaret nedan. Jämför storleken på residualvektorn med den föregående.
Lösning samt svar:
c) Ändra det linjära ekvationssystemet Ax = b till:
0 4 5
1 2 3
x1
 x2  = 6
5
x3


Har systemet en lösning? Upprepa stegen ovan. Vad händer? Är lösningen korrekt? Finns det fler?
Notera svaret nedan. Vad blir residualvektorn?
Lösning samt svar:
3. Dagens längd i Stockholm
Tabellen nedan anger dagens längd i Stockholm den första dagen i varje månad
under sommarhalvåret (tiden är angiven decimalt, inte timmar och minuter):
Månad:
Dagnr :
Solen uppe:
1 april
91
13.2
1 maj
121
15.8
1 juni
152
18.0
1 juli
182
18.4
1 aug
213
16.6
1 sep
244
14.1
a) Plotta de sex punkterna. Det gäller att anpassa ett andragradspolynom till
dem med minstakvadratmetoden. Hur lyder normalekvationerna och hur många
rader och kolumner har matrisen i normalekvationerna i detta fall?
Beräkna polynomets koefficienter och rita polynomkurvan med tät indelning,
dagligen från vårdagjämningen dag 80 till höstdagjämningen dag 265.
Hur länge är solen uppe på midsommardagen (den 20 juni 2015) enligt denna
modell? Är det rimligt?
b) Tabellen kompletteras med vinterhalvårets värden:
Månad:
Dagnr :
Solen uppe:
1 jan
1
6.1
1 feb
32
8.0
1 mars
60
10.4
1 okt
274
11.4
1 nov
305
8.7
1 dec
335
6.6
Markera de tolv punkterna i en figur. Ett trigonometriskt uttryck med perioden
T = 365 bör kunna ge god anpassning:
F (t) = c1 + c2 cos ωt + c3 sin ωt + c4 cos 3ωt + c5 sin 3ωt
Undersök detta och rita kurvresultatet (dagligen från nyårsdagen till dag 365)
tillsammans med givna data. Rita också residualvektorns tolv komponenter mot
de tolv givna dagnumren. Beräkna felkvadratsumman samt midsommardagens
soltid enligt denna modell.
4. Hitta bästa cirkel till givna punkter
a) Sex punkter är givna: (0, −1), (0, 1), (2, −2), (5, −1), (4, 2), (1, 3). och vi
vill finna den bäst anpassande cirkeln.
Utgå från cirkelns ekvation (x − a)2 + (y − b)2 = R2 och härled (med papper och
penna) det alternativa uttrycket c1 + c2 x + c3 y = x2 + y 2 ; (redovisas!) Notera
uttrycken för mittpunktskoordinaterna, (a, b), och radien, R.
Lös med minstakvadratmetoden det överbestämda ekvationssystem för c1 , c2 , c3
som fås av de givna punkterna. Rita upp punkterna och cirkeln.
Pröva även att anpassa en cirkel till endast de 3 första av de givna punkterna.
Den cirkeln ska gå exakt genom punkterna. Vad kallas denna typ av kurvanpassning?
b) Utnyttja grafisk inmatning (ginput) och klicka tio punkter ungefärligen runt
en cirkel. Beräkna och rita bästa cirkel tillsammans med de tio punkterna. Om
programmet i a) skrivits på ett bra sätt är detta en enkel modifikation av det
programmet.
5. Interpolation
Givet följande tabell över jordens medeltemperatur vart tionde år 1934-2014,
från NASA GISS (Goddard Institute for Space Studies) 2015.
year
1934
1944
1954
1964
1974
1984
1994
2004
2014
medeltemperatur
13, 91
13, 98
13, 95
14, 01
14, 06
14, 23
14, 36
14, 45
14, 65
I denna deluppgift ska följandsalternativ interpolation prövas för att anpassa en
kurva till dessa nio mätdata:
a) Styckvis linjär interpolation
b) Interpolation med ett polynom av gradtal åtta
c) Splineinterpolation
d) Styckvis kubisk Hermiteinterpolation
I uppgift a) behöver endast plot användas. För de övriga deluppgifterna används
funktioner som finns i MATLAB-biblioteket: polyfit, polyval, spline och
pchip. För att se hur de anropas, använd help.
Plotta mätvärdena (de nio avlästa) och resultatet av interpolationen i fyra delfönster med hjälp av subplot. Alla fyra graferna ska ha lämplig rubrik samt
variabelbeteckningar på axlarna.
Fyll i resultaten vid extrapolation till 2030 och 2050 med de olika metoderna:
metod
linear
polynom
Hermite
spline
temperatur2030
Laboration 1 redovisad och helt klar!
temperatur2050
Datum: ....................................
Godkänd av .........................................................