Exercises GEO1040. Øyvind Ryan



Like dokumenter
Exercises population. Øyvind Ryan

GEO1040: Grunnkurs i programmering for geofaglige problemstillinger

Kapittel august Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 2.

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 5 (del 2) Ada Gjermundsen

ITGK - H2010, Matlab. Repetisjon

TDT4105 IT Grunnkurs Høst 2014

Kanter, kanter, mange mangekanter

Kapittel og 5. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 4.

Eksamen MAT1015 Matematikk 2P Va ren 2015

4. og 5. september 2012

Kapittel Oktober Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 14.

Bygg et Hus. Steg 1: Prøv selv først. Sjekkliste. Introduksjon. Prøv selv

2P, Modellering Quiz fasit. Test, 3 Modellering

11. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Oppgaver Kapittel 5 (del 2) Ada Gjermundsen

2P eksamen våren 2016 løsningsforslag

Kanter, kanter, mange mangekanter. Introduksjon: Steg 1: Enkle firkanter. Sjekkliste. Skrevet av: Sigmund Hansen

Løsningsforslag til utvalgte oppgaver i kapittel 10

Løsningsforslag for 2P våren 2015

SAMMENDRAG OG FORMLER. Nye Mega 9A og 9B

Eksamen MAT1005 Matematikk 2P-Y Høsten 2013

Eksamen. Fag: AA6524 Matematikk 3MX. Eksamensdato: 4. juni Vidaregåande kurs II / Videregående kurs II

DEL 1 Uten hjelpemidler

MAT1120 Plenumsregningen torsdag 26/8

Løsningsforslag AA6526 Matematikk 3MX Privatister 3. mai eksamensoppgaver.org

Mattespill Nybegynner Python PDF

19. september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 8 (del 2) Ada Gjermundsen

Eksamen våren 2016 Løsninger

Løsningsforslag. og B =

En innføring i MATLAB for STK1100

Sprettball Erfaren ComputerCraft PDF

Matematikk Øvingsoppgaver i numerikk leksjon 6. Løsningsforslag

MAT-INF 2360: Obligatorisk oppgave 1

UNIVERSITETET I OSLO

2P-Y eksamen våren 2016 løsningsforslag

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

UNIVERSITETET I OSLO

Noen MATLAB-koder. 1 Plotte en vanlig funksjon. Fredrik Meyer. 23. april 2013

if-tester Funksjoner, løkker og iftester Løkker og Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

R2 kapittel 8 Eksamenstrening Løsninger til oppgavene i læreboka

Øvingsforelesning i Matlab (TDT4105)

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7.

LØSNINGSFORSLAG, KAPITTEL 2

INF Uke 10. Ukesoppgaver oktober 2012

Eksamen MAT1005 Matematikk 2P-Y Va ren 2015

Eksamen MAT1005 Matematikk 2P-Y Høsten 2014

DEL 1 Uten hjelpemidler

Fysikkonkurranse 1. runde november 2000

Etablering av nettressurs med eksempler, prosjekter og data

JS: Grunnleggende JavaScript Nybegynner

NIO 1. runde eksempeloppgaver

DEL 1 Uten hjelpemidler

Kapittel 4. Algebra. Mål for kapittel 4: Kompetansemål. Mål for opplæringen er at eleven skal kunne

Løsningsforslag til ukeoppgave 12

2P eksamen våren 2016

Eksamen MAT1015 Matematikk 2P Va ren 2015

Obligatorisk oppgave nr 4 FYS Lars Kristian Henriksen UiO

Løsningsforslag for eksamen i brukerkurs i matematikk A (MA0001)

Skilpaddefraktaler Erfaren Python PDF

Prøve i Matte 1000 BYFE DAFE 1000 Dato: 03. mars 2016 Hjelpemiddel: Kalkulator og formelark. Alle svar skal grunngis. Alle deloppgaver har lik vekt.

Løsningsforslag for Eksamen i Matematikk 3MX - Privatister - AA eksamensoppgaver.org

JS: Grunnleggende JavaScript

Løsningsforslag for eksamen i MAT1003 Matematikk 2P Privatister eksamensoppgaver.org

MAT 1110: Obligatorisk oppgave 1, V-07: Løsningsforslag

Tall Vi på vindusrekka

Løsningsforslag til eksamen FY0001 Brukerkurs i fysikk Juni 2011

I Katalog velger du: Ny eksamensordning i matematikk våren 2015

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet. Obligatorisk innlevering 3 i emnet MAT111, høsten 2016

Løsningsforslag til øving 1

Alle svar skal grunngis. Alle deloppgaver har lik vekt.

DEL 1 Uten hjelpemidler

Matematikk Øvingsoppgaver i numerikk leksjon 3. Løsningsforslag

Prosjektoppgave i FYS-MEK 1110

Skilpaddekunst. Steg 1: Møt skilpadden. Sjekkliste. Introduksjon. Turtles

Inf109 Programmering for realister Uke 5. I denne leksjonen skal vi se på hvordan vi kan lage våre egne vinduer og hvordan vi bruker disse.

4 Funksjoner og andregradsuttrykk

EKSAMENSFORSIDE Skriftlig eksamen med tilsyn

DEL 1 Uten hjelpemidler

Repetisjon Novice Videregående Python PDF

UNIVERSITETET I OSLO

Sprettende ball Introduksjon Processing PDF

Matematikk Øvingsoppgaver i numerikk leksjon 5 for-løkker

ENT3R. Oppgavehefte. Basert på tidligere eksamener for 10. klasse. Tommy Odland 2/4/2014

Oppgave 4. Med utgangspunkt i eksemplet gitt i oppgaveteksten er veien ikke lang til følgende kode i Matlab/Octave:

Eksempelsett R2, 2008

Matematikk Øvingsoppgaver i numerikk leksjon 5 Litt oppsummering undervegs Løsningsforslag

dg = ( g P0 u)ds = ( ) = 0

ST0103 Brukerkurs i statistikk Høst 2014

Løsningsforslag. Prøve i Matematikk 1000 BYFE DAFE 1000 Dato: 29. mai 2017 Hjelpemiddel: Kalkulator og formelark. Oppgave 1 Gitt matrisene.

Løsning av utvalgte øvingsoppgaver til Sigma R2 kapittel 5

Øvingsforelesning i Matlab TDT4105

Løsningsforslag B = 1 3 A + B, AB, BA, AB BA, B 2, B 3 C + D, CD, DC, AC, CB. det(a), det(b)

NTNU. TMA4105 Matematik 2 våren Maple-øving 1. Viktig informasjon. Institutt for matematiske fag. maple01 1.

SINUS R1, kapittel 5-8

Eksamen MAT1003 Matematikk 2P Elevar/Elever, Privatistar/Privatister. Nynorsk/Bokmål

TDT4105 IT Grunnkurs Høst 2016

Kap. 1 Fysiske størrelser og enheter

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Oppgaver. Innhold. Funksjoner i praksis Vg2P

UNIVERSITETET I OSLO

Transkript:

Exercises GEO1040 Øyvind Ryan 19. februar 2013

1. Bruk Matlab til å regne ut: a. 2.2 + 4.7 2.2 + 4.7 b. 5/7 5/7 c. 3 2 3^2 2 3 4 2 13 2.2 2 d. (2*3-4^2)/(13-2*2^2) e. 4.7 4 4.7^4 f. Hva er det 12. desimalet i 1/7? Hint: funksjonen floor er nyttig her. x=1/7; x11=floor(x*1e11); x12=floor(x*1e12); tall=x12-10*x11 2. Lag følge variable: x = 0.762 og y = 9.56+e 1 og regn ut: x + y, x y, x y og sin x 2 y 2

x=0.762 y=sqrt(9.56) + exp(-1) x+y x*y x/y sin(x^2*y) 3. Bytt om verdiene til variablene x og y uten at Matlab viser verdien til den temporære variabelen som du bruker. temp=x; x=y y=temp 4. Beregn antall sekunder i ett år. 365*24*60*60 5. Beregn avstanden x 2 + y 2 hvor x = 10 km and y = 50 km. x=10 y=50 dist=sqrt(x^2 + y^2) 6. Beregn volumet til Jorda og den gjennomsnittlige tettheten. Angi tettheten i kg/m 3. Jordas masse er 5.9737 10 24 kg og radiusen er 6371 km. R=6371*1000; M=5.9737e+24; vol=4/3*pi*r^3; M/vol 7. a. La Matlab regne ut cos(θ) og sin(θ) for θ = 0,π/6,π/4,π/3 og π/2. Sjekk at resultatene er rimelige: 3

Løsningsforslag: cos(0) = sin(π/2) = 1 cos(π/6) = sin(π/3) = 0.8660 cos(π/4) = sin(π/4) = 0.7071 cos(π/3) = sin(π/6) = 0.5 cos(π/2) = sin(0) = 0 b. Gjør om verdiene til θ fra radianer til grader. Hint: deg = rad 180 π. Regn ut verdiene ved å bruke funksjonene cosd(θ) og sind(θ). Får du samme svar som i a.? (Hvis ikke har du gjort noe feil.) Løsningsforslag: JA, du får samme svar! 8. La Matlab regne ut verdiene, og sjekk at resultatene er rimelige: e 1, 16, cosπ, sin π 6, tan π 4, arcsin 1 2, arctan1, cos45. exp(1) sqrt(16) cos(pi) sin(pi/6) tan(pi/4) asin(1/2) atan(1) cosd(45) 9. Anta at 1. januar er dag 1 i uke 1. I hvilken uke er dag 117? Løsningsforslag: Her vil vi at 1 til 7 skal gi uke 1, 8 til 14 uke 2, osv. Da kan vi dele med 7 og avrunde oppover. Vi sjekker først at det fungerer som vi vil ved å teste med dagene 1, 7 og 8. ceil(1/7) ceil(7/7) ceil(8/7) uke=ceil(117/7) Svaret er 17. 10. Anta at 1. januar er dag 4 i uke 1. I hvilken uke er dag 117? Løsningsforslag: Her må vi legge til 3 dager i formelen for de som mangler i den første uken: 4

uke = ceil((117+3)/7) Svaret er 18. 11. Vi antar at en bakteriepopulasjon vokser eksponentielt og har en vekst gitt ved P = P 0 e kt der t er tiden i sekunder, P 0 = 120 er antall bakterier ved t=0 og k = 0.04s 1. Finn ut hvor mange bakterier det er etter: a. 10 sekunder Løsningsforslag: 179 b. 30 sekunder Løsningsforslag: 398 c. 1 minutt Løsningsforslag: 1.3228 10 3 d. 1 time Løsningsforslag: 4.14 10 64 12 (Jordskjelv). Jordskjelvet på Haiti i 2010 målte 7.0 Mw (Moment magnitude scale) og det i Chile ca en måned senere 8.8 Mw forskjellen i energi for to jordskjelv kan beskrives ved E = 10 3 2 (m 1 m 2 ) Hvor mange ganger mer energi ble utløst i jordskjelvet i Chile enn i det på Haiti? Løsningsforslag: 501 ganger mer 13 (Aldersbestemmelse etter Karbon-14 metoden). Karbon-14 er en radioaktiv isotop med halveringstid på 5730 år. I atmosfæren er det et nokså konstant blandingsforhold mellom karbon-14 og vanlig karbon 12. Dette forholdet kaller vi I 0. Når dyr og planter dør vil de ikke lengre ta opp karbon-14 og mengden av karbon-14 de inneholder blir gradvis redusert, mens mengden av karbon-12, som ikke er radioaktivt, blir uforandret. Forholdet mellom karbon-14 og karbon- 12 i prøven av det døde dyret/planten kaller vi I. Tiden t er antall år som har gått siden dyret/planten vi ser på døde. Sammenhengen mellom I 0, I og t er gitt ved: t = ln(i /I 0) ln0.5 5730 Bruk Matlab til å regne ut alderen på følge prøver: a. En tann fra en sabeltanntiger der I er ca 10% av I 0 Løsningsforslag: 19000 år 5

b. En tann fra en mammut der I er ca 5% av I 0 Løsningsforslag: 24765 år c. En trebit der forholdet mellom I og I 0 er 50% Løsningsforslag: 5730 år d. Et maleri der I er ca 96% av I 0. Fra hvilken epoke er dette maleriet? Løsningsforslag: 337 år. Barokken (1674) 14. Når en lydbølge går fra et medium til et annet res både hastigheten til bølgen og retningen. Snells brytningslov uttrykker dette forholdet ved sammenhengen v1sin(θ 2 ) = v2sin(θ 1 ), der størrelsene er angitt på figuren under. Vi skal se på en lydbølge som går fra luft til vann. Lydhastigheten i luft er 340m/s, mens lydhastigheten i vann er 1500m/s. Løsningsforslag: Kode som løser oppgaven blir v1 = 340; v2 = 1500; theta1=10; theta2= asind(v2/v1*sind(theta1)); t= 5; 6

s= v2*t; dybde=s*cosd(theta2); x=sqrt(s^2-dybde^2); x2 = s*sind(theta2); a. Vi antar at θ 1 = 10. Finn θ 2 Løsningsforslag: θ 2 = 50 b. Vi kan uttrykke lengden bølgen tilbakelegger i vannet med formelen: s = vt, der v = 1500 m/s. Finn ut hvor langt lydbølgen beveger seg i løpet av 5 sek etter den traff vannet. Løsningsforslag: t=5 gir s=7500m c. Finn ut hvor dypt ned (langs z-aksen) bølgen har beveget seg i vannet. Løsningsforslag: 4820m d. Finn ut hvor langt bortover (langs x-aksen) bølgen har beveget seg ved hjelp av Pythagoras læresetning. Finnes det en annen metode å regne ut denne lengden på? Løsningsforslag: 5746m, Ja man kan bruke s*sind(θ 2 ). x og x2 i løsningsforslaget gir samme svar 15. Gitt følge kode: for i=1:6 num = i; a. Hvor mange steg er det i løkka? Løsningsforslag: 6 b. Hvilken verdi har num etter at løkka er ferdig? Løsningsforslag: 6 c. Hvilken verdi har num etter at løkka har gått 3 ganger? Løsningsforslag: 3 16 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. 7

tallet=10; for k=2:6 tallet = tallet+k/2; tallet Hva skrives ut? tallet = 10 tallet = 20.5 tallet = 20 tallet = 30 tallet = 0 Løsningsforslag: 20 er riktig svar. 17. Vi skal bruke Matlab til å studere partall og oddetall. Lag en løkke som skriver ut de n første oddetallene. Sett n lik et tall i begynnelsen av programmet. n=10; for k=1:n disp(2*k-1) 18. Skriv en for-løkke som finner de n første kvadrattallene. n=10; for k=1:n disp(k^2) 19. Ê Man definerer fakultet av n til n! = 1 2 3 4... n. Skriv en for-løkke som regner ut n!. Sett verdien til n helt i starten av programmet. n=10; val=1; for k=2:n val=val*k; disp(val) 8

20. Din nye PC har kostet 2000 kroner. Den devalueres med 20% hvert år. a. Hvor mye blir PC en verdt når du får bachelorgraden din om 3 år? val=2000; for k=1:3 val=val*0.8; disp(val) b. Skriv om programmet slik at PC en i stedet devalueres med 20% av den opprinnelig verdien hvert år (det vil si at vi devaluerer med et fast beløp hvert år, i motsetning til i a.). val=2000; deval=val*0.2; for k=1:3 val=val-deval; disp(val) 21. Du har 1000 kroner på bankkontoen din. Banken din tilbyr fast rente på 5% per år. a. Bruk en for-løkke til å beregne hvor mye du har på kontoen om 10 år. sumpenger1=1000; for k=1:10 sumpenger1=sumpenger1*1.05; sumpenger1 Kjører du koden vil du se at vi sitter igjen med 1629kr etter 10 år med den første banken b. En annen bank tilbyr deg en rente på 4% per år de 5 første årene og 6% per år de 5 siste årene. Hvor mye kan du tjene ved å bytte bank? 9

sumpenger2=1000; for k=1:5 sumpenger2=sumpenger2*1.04; for k=6:10 sumpenger2=sumpenger2*1.06; sumpenger2 diffpeng=sumpenger2-sumpenger1; disp(diffpenger) Vi sitter igjen med 1628kr etter 10 år med den andre banken. Det er derfor ikke lønnsomt å bruke den andre banken. 22. En vanntank inneholder 10 liter usaltet vann på dag 0. I forbindelse med et eksperiment i oseanografi, blir det tilført 1dl salt hver dag fra dag 1. Samtidig, fordampes 2dl usaltet vann hver dag. Regn ut hvordan forholdet salt/vann varierer i løpet av den første uken. vannmengde=10; saltmengde=0; for k=1:7 saltmengde=saltmengde+0.1; vannmengde=vannmengde-0.2; forhold=saltmengde/vannmengde; disp(forhold) 23 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. tallet=0; for i=1:2 for j=2:3 tallet = tallet+i+j; tallet Hva skrives ut? 10

tallet = 7 tallet = 0 tallet = 11 tallet = 16 tallet = 5 Løsningsforslag: 16 er riktig svar. 24. Vi skal se på en av de store innsjøene i Norge. Anta at vanntilførselen fra elvene i området, V 0, var 128 m 3 /s i år 2000. Pga. økt bresmelting økte tilførselen med 4% pr. år frem til 2009. a. Finn V 0 i m 3 /år i 2000. Løsningsforslag: 4 10 9 m 3 /år. b. Hvor stor var V 0 i 2009? Løsningsforslag: 5.75 10 9 m 3 /år. c. Anta videre at i tillegg er det tilsig fra grunnvannet. Det var V G = 0.8 km 3 /år i 2003 og ble redusert med 3% pr.år. Regn ut total tilførsel av vann til innsjøen i 2004 og i 2009. Løsningsforslag: i 2004: V 2 004 = V 0 1.04 4 +V G 0.97 = 4.75 10 9 m 3 /år. i 2009: V 2 009 = V 0 1.04 9 +V G 0.97 ( 2009 2003) = 5.77 10 9 m 3 /år. 25. Legg inn disse vektorene i Matlab: (1, 9,7,5, 7), (π, 14,7/3), (1,3,5,7,9,...,99), (124,120,116,112...,4,0). : a=[1,-9,7,5,-7] b=[pi,-14, 7/3] c=1:2:99 d=124:-4:0 26. Legg inn arrayet (1, 2, 4, 8, 16,... 4096) Matlab og finn summen. Hint: 4096 = 2 12. : a=0:12; a=2.^a; summen=sum(a) NB: Ikke kall summen sum siden sum også er navnet på en innebygd funksjon. 27. Definer vektorene A, B, og C slik at de har følge verdier i Matlab: 11

A=[1 2 3 4 5 6 7 8 9] B=[2 4 6 8 10 12 14 16 18] C=[0.5,1, 1.5, 2, 2.5, 3, 3.5, 4, 4.5, 5] A=1:9; B=2:2:18; C=0.5:0.5:5; D=B.^2-A.^2 a. På hvilken plass i hhv. A, B, og C finner du tallet 4? Løsningsforslag: plass 4, 2 og 8 b. Hvilken av vektorene er lengst? Løsningsforslag: C er lengst c. Opprett vektoren D=B.^2-A.^2. d. Hva blir A + B +C + D? Løsningsforslag: Vi får enfeilmelding fordi alle vektorene ikke har samme lengde 28. Definer a=[1 2 3 4 5 6 7 8 9 10]. Lag et program som beregner sum(a) ved hjelp av en løkke istedenfor funksjonen sum. a=1:10; summen=0; % initialisere for i=1:length(a) summen=summen+a(i); 29. Trykket (p) i en gitt høyde (z) i atmosfæren uttrykkes ved p(z) = p 0 e ( z H ), hvor p 0 er bakketrykket, z er høyden over bakken og H en karakteristisk konstant. Vi kan bruke følge verdier på disse: p 0 = 1004 [hpa] H = 7800 [m] a. Opprett et array Z, med høyder 0-20km med intervall på 500m 12

b. Finn trykket for alle høydene og lagre dem i et array P z : P0=1004; % trykk ved bakken i hpa H=7800; % konstant i m z=0:500:20000; % høyder i m Pz=P0*exp(-z/H) Pass på at høydene og konstanten er enten begge i meter eller begge i kilometer 30. I denne oppgaven skal vi se på hvordan vi kan skrive ut oddetall, partall, og kvadrattall. R=1:2:49; P=2:2:50; S=P-R; length(s) prod(s) sum(s) prod(p./r) sum(1./p) a. Opprett en vektor R med alle oddetallene mellom 0 og 50 og et array P med alle partallene f.o.m. 2 t.o.m. 50 b. Lag en vektor S = P - R. Hvor lang er S? Hva blir produktet av alle elementene i S? Hva blir summen av alle elementene i S? Løsningsforslag: 25, 1, 25 c. Hva blir produktet av elementene i P R? Løsningsforslag: 8.9067 d. Hva blir summen av 1 P? Løsningsforslag: 1.9080 31. Finn tettheten til 4 forskjellige steintyper på nettet, sett verdiene i en vektor og konverter fra g /cm 3 to kg /m 3. 13

% basalt, granite, sandstone, purnice from http://www.seed.slb.com/v2/faqview.cfm?id=1115 a=[3.0 2.7 2.3 0.5] a=a*1000 32. Det magnetiske feltet i Oslo i 2010 har de tre komponentene B N = 15126.1, B E = 484.7 og B Z = 48656.1 hvor verdiene er gitt i nanotesla og B N er feltintensitet mot nord, B E mot øst, og B Z vertikalt nedover. Sett de tre elementene i et array. Deretter beregn deklinasjon D og inklinasjon I av feltet som er relatert til feltkomponentene ved formlene tand = B E /B N og tan I = B Z / B 2 N + B 2 E. B=[15126.1,484.7,48656.1] % mag felt i Oslo i nt declin=atand(b(2)/b(1)) % declination in degrees inclin=atand(b(3)/sqrt(b(1)^2+b(2)^2)) % inclination in degrees 33 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. A = [1 2 3 4] B = [5 6 8] Operasjonen C = A + B gir C = [6 8 11 4] Operasjonen C = A + B gir C = [1 2 3 4 5 6 8] Operasjonen C = [A,B] gir C = [1 2 3 4 5 6 8] Operasjonen C = [A + B] gir C = [6 8 11 4] Løsningsforslag: Det tredje alternativet er riktig. 34 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. tallet=0; for i=1:2 for j=2:3 tallet = tallet+i+j; tallet Hva skrives ut? tallet = 7 tallet = 0 tallet = [0 3 7 11 16] 14

tallet = 16 tallet(i,j) = [0 3 7 11 16] Løsningsforslag: 16 er riktig. 35 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. A = [1 2 3 4] B = [6 7 8] Operasjonen C = A B gir C = [6 14 24 0 0] Operasjonen C = A B(1) gir C = [6 12 18 24] Operasjonen C = B A gir C = [5 5 5 4] Operasjonen C = [A,B] gir C = [6 7 8 1 2 3 4] Løsningsforslag: Det andre alternativet er riktig. 36 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. D = [2 2 2 2] E = [2 2 2] Operasjonen F = D. E gir F = [8 8 8 8] Operasjonen F = D E gir en matrise. Operasjonen F = D. E(1) gir F = [0 0 0 0] Operasjonen F = E. D(4) gir F = [4 4 4] Løsningsforslag: Det fjerde alternativet er riktig. 37. Gitt følge kode: for i=1:3 num = i; obs(i)= num; a. Hva slags type variabel er obs? Løsningsforslag: obs er en array b. Hvilke(n) verdi(er) har obs når løkka er ferdig? Løsningsforslag: [1 2 3] c. Hva er summen av obs? Løsningsforslag: 6 38. Gitt følge array 15

F = [24.3 25.2 30.9 39.9 50.5 58.8 62.4 59.7 52.0 42.4 32.9 26.8 42.1] F inneholder gjennomsnittstemperatur for hver måned på Blindern gitt i Fahrenheit. Formelen for å konvertere fra Fahrenheit til Celsius er gitt ved C = (F 32)/1.8. Bruk en for-løkke og lag en ny array C som inneholder tilsvare temperaturer i Celsius. F = [24.3 25.2 30.9 39.9 50.5 58.8 62.4 59.7 52.0 42.4 32.9 26.8 42.1]; for i=1:length(f) C(i)=(F(i)-32)/1.8; 39. Fibonacci-tallene er en tallfølge der hvert tall er summen av de to forrige tallene i følgen: 0 1 1 2 3 5 8 13...osv a. Lag en løkke som lager de femten første Fibonaccitallene, og legger dem i et array kalt Fibo. Fibo = zeros(1,15); Fibo(1) = 0; Fibo(2) = 1; for i = 3:15 Fibo(i) = Fibo(i-1) + Fibo(i-2); Her må vi først lage et array for tallene med femten elementer der første element inneholder tallet 0 og det andre elementet tallet 1. Så går vi i løkke der vi starter på element 3 og beregner verdien på elementet ut fra de to foregåe elementene som vi lagrer i element nr. i. b. Lag en løkke der du finner Fibonaccitall nr. n. Du velger verdien til n i begynnelsen av programmet. Du skal ikke lage en vektor som i a., bare finne tall nr n. n = 15; f1 = 0; 16

f2 = 1; for i = 3:n f3 = f2 + f1; f1 = f2; f2 = f3; disp(f3); Vi velger 15 som tallet n og legger dette i en variabel. Dette gjør det lettere å re på tallet senere. Så initaliserer vi to variable f1 og f2 til verdi 0 og 1. Så går vi i en løkke der i varierer fra 3 til n og beregner Fibonacci tallet nr. i som vi legger i variablen f3. Videre tar vi vare på det nest siste tallet i f1 og det siste som vi nå har i f3 legges i f2. Da er vi klar for neste runde i løkka. c. Vanskelig: Du får oppgitt at tallene på plass nr. 16 og 17 i Fibonaccitallrekka er henholdsvis 610 og 987. Bruk kun denne informasjonen til å regne ut rekka bakover fra tall nr 17. Legg disse tallene inn i et array.(arrayet du får burde være lik den du fikk i oppgave 1. pluss de to tallene du fikk opgitt i denne oppgaven.) Fibo = zeros(1,17); Fibo(17) = 987; Fibo(16) = 610; for i = 15:-1:1 Fibo(i) = Fibo(i+2) - Fibo(i+1); Her må vi snu på måten vi gjennomløper løkka. Vi starter med i = 15 siden vi skal bruke verdiene på plass 17 og 16 til å beregne den neste verdien nedover i arrayet. Vi initaliserer element 16 og 17 til de angitte verdiene. Da er det bare å strte beregningene for element i ut fra de to vediene på plass i + 1 og i + 2 ved en enkel subtraksjon. 40. I Oppgave 19 i Seksjon?? definerte vi fakultet av n til å være n! = 1 2 3 4... n, og programmerte en løkke som regnet ut n!. Skriv om løkken slik at alle fakultetverdiene fra 1! til n! lagres i et array som du kaller fakultet. n = 10; fakultet = zeros(1,n); 17

fakultet(1) = 1; for i = 2:n fakultet(i) = fakultet(i-1) * i; Her velger vi n = 10 og setter av plass for et array på 10 elementer med verdi 0. Vi initaliserer første element til 1 og starter løkka med indeks til element 2. Vi bruker foregåe element til å beregne verdien av element i. 41. En tallfølge er gitt ved a 1 = 1, a 2 = 3 og a n+2 = 3a n+1 2a n. Skriv et program som returnerer en vektor med de 8 første leddene i følgen. n=8; % antall elementer som skal beregnes a=zeros(1,n); % initialisere arrayen a(1)=1; a(2)=3; for i=3:n a(i)=3*a(i-1)-2*a(i-2); eller n=8; % antall elementer som skal beregnes a=zeros(1,n); % initialisere arrayen a(1)=1; a(2)=3; for i=1:n-2 a(i+2)=3*a(i+1)-2*a(i); 42. Legg inn vektorene a = (3,1, 2,5,4,3) og b = (4,1, 1,5,3,1) i Matlab, og utfør kommandoen» plot(a,b). Utfør også kommandoene» plot(a) og» plot(b), og bruk» hold on til å sørge for at de to siste figurene kommer i samme vindu. a=[3 1-2 5 4 3]; b=[4 1-1 5 3 1]; plot(a,b) figure hold on plot(a) 18

plot(b) hold off 43. Plot de to funksjonene f (x) = e 0.5x2 og h(x) = e (x 3t)2. La x variere fra 4 til 4 med små skrittlengde (prøv deg frem til du faa fine glatte grafer). t skal være et tall mellom 0 og 2. Plott de to funksjonene i samme figur. La de ha ulik farge. Prøv ut forskjellige verdier av t. Hva gjør t? x=linspace(-4,4,1000); f=exp(-0.5*x.^2); t=0.5; h_xt=exp(-(x-3*t).^2); figure(1) plot(f) hold on plot(h_xt, g ) t forflytter senteret av funksjonen, eller forflytter bølgetoppen". 44 (To vulkaner). Vi kan se for oss en vulkan som en sylinder og beskrive dens utslippsrate av magma ved Q = πr4 P 8µL m3 /s Der L er lengden i meter, R radiusen i m, µ viskositeten til magmaen i Pa/sek og P trykket i vulkanen gitt i Pa. For en vulkan fra Hawaii og Mount St Helen under typiske utbrudd: L H = 5000 L St = 7000 µ H = 100 µ St = 2 10 6 R H = 1m L St = 50 P H = 5 10 6 P St = 3 10 7 a. Hvilken vulkan slipper ut mest magma under et typisk utbrudd? Løsningsforslag: Følge kode løser problemet: L = [5000 7000]; u = [100 2*10^6]; R = [1 50]; P = [5*10^6 3*10^7]; Q = (pi*r.^4.*p)./(8*u.*l); Vulkanen på St. Helens slipper ut mest (St.Helens: 5.2594e+03, Hawaii: 3.9270) 19

b. Hvor stort trykk ville man trengt i vulkanen på Hawaii for at de to vulkanene skulle slippe ut like mye magma? Pp = P(1)/Q(1)*Q(2); som gir at trykket på Hawaii vulkanen må være minst 6.6964e+09 Pa for å slippe ut samme mengde magma. c. Plott Q som funksjon av radier og lengder i nærheten av de gitte verdier, hva er de viktigste faktorene for hvor mye lava som blir sluppet ut? R = 1:50; L = 5000; u = 100; P = 5*10^6; Q = (pi*r.^4*p)/(8*u*l); figure(1); plot(r,q); xlabel( Radius [km] ); ylabel( Lavaflom ); clear R L Q; R = 1; L = 5000:100:7000; Q = (pi*r.^4*p)./(8*u*l); figure(2); plot(l,q); xlabel( Radius [km] ); ylabel( Lavaflom ); Ut fra plottene ser vi at det er radius som er den viktigste faktoren for mengden av lava som strømmer ut. 45. Vi skal se litt mer på oppgaven fra tidligere der vi hadde en bakteriepopulasjon som vokste eksponentielt og hadde en vekst gitt av P = P 0 e kt der t er tiden i sekunder, P 0 =120 er populasjonen ved t = 0 og k = 0.04. t=0:30; % tidsrekka k=0.04; % parameter 20

P0=120; % bakteriepopulasjonen ved start P=P0*exp(k*t); figure(1) plot(p) xlabel( tid [s] ) ylabel( antall bakterier ) title( Populasjon ) xlim([1 30]) t=1:60*6; P=P0*exp(k*t); figure(2) hold on plot(p) xlabel( tid [s] ) ylabel( antall bakterier ) title( Populasjon ) plot(t,1e8, r* ) xlim([1 360]) hold off Tidspunktet naar populasjonen naar grensen er ved ca. 340 sekunder. a. Lag en tidsvektor for de 30 første sekundene som du kaller t. b. Regn ut bakteriepopulasjonen for hver t, og plot denne. Sett navn på aksene. c. Lag en ny tidsvektor som representerer 6 minutter. d. Regn ut bakteriepopulasjonen for hvert sekund i 6 minutter, og plot denne. Sett navn på aksene e. Plot en linje i figuren din som markerer der populasjonen når 10 8 bakterier. La linjen være røde stjerner. Les av for hvilken t denne verdien nås. 46. Bruk kommandoen» plot til å lage en enkel strektegning av et hus. 21

x=[0 1 1 0 0 0.5 1]; y=[1 1 0 0 1 1.8 1]; plot(x,y) % definere aksene for å se huset bedre figure plot(x,y) axis([-0.5 1.5-0.5 2]) 47. Bruk Matlab til å tegne grafen til f (x) = x 3 1 over intervallet [ 1,1]. Legg så inn grafen til g (x) = 3x 2 i samme koordinatsystem, og velg forskjellig farge på de to grafene. Bruk skrittlengde 1 100 langs x-aksen. x=-1:0.01:1 figure hold on y=x.^3-1 plot(x,y, r ) y=3*x.^2 plot(x,y, g ) hold off 48. Skriv inn realistiske verdier til nedbør på 7 dager i et array og lag et søylediagram som viser nedbør som en funksjon av tid (med bar). Lag også et histogram av verdiene (med hist). Prøv deg frem med forskjellige verdier av n. ned=[2 3 0 1.3 1.1 0 0]; subplot(2,2,1) bar(ned) title( bar ) subplot(2,2,2) hist(ned) title( hist default ) subplot(2,2,3) hist(ned,2) title( hist 2 ) subplot(2,2,4) hist(ned,4) title( hist 4 ) 22

49. Om man kaster en ball vil den følge en bane gitt av formelen: f (x) = x tan(θ) 1 g x 2 2v0 2 cos 2 (θ) + y 0 der v 0 er startfarten (i m/s), θ er vinkelen du kaster ballen i forhold til x-aksen, y 0 er høyden ballen kastes i (ved x=0) og g er tyngdeakselerasjonen. Figur 1: En balls bane gjennom luften i Oppgave 49 Du kan sette g = 9.81m/s 2. Prøv ulike startverdier og lag figurer som viser banen til ballen. Hint: om du setter θ i grader må du bruke tand() og cosd(). v0=80; theta=60; x=0:0.01:10; g=9.81; y0=2; y=x*tand(theta)-((g*x.^2)/(2*v0*(cosd(theta))^2))+y0; plot(y) hold on ylim([0 max(y)]) 50 (Meteorer). Vi skal se på energien i meteorer som treffer månen og størrelsen på krateret de lager. 23

a. Den kinetiske energien til masse i bevegelse er K E = 1 2 mv 2 der K E er energien i Joule, m er massen i kg og v hastigheten i m/s. Hva er den kinetiske energien til en meteor på 5 g som beveger seg med v = 71 km/s (typisk hastighet i asteroidebeltet)? K_e =.5*0.005*32000^2; % = 1.26*10^7 Joule b. En ligning som blir brukt for å beregne diameteren på kratere på månen er der D at er Diameteren i meter, D at = 0.015ρ 1 6 p ρ 1 2 t W.37 sinφ 2 3 ρ p = 600 og ρ t 3000 er henholdsvis meteorens og månens tetthet i kg/m 3, W er prosentandelen av kollisjonsenergien som går med til å lage et krater, og φ er vinkelen på nedslaget i grader. Bruk W = 0.9K E, φ = 90 til å regne ut diameteren til krateret meteoren fra a. ville laget. ro_p = 600; % kg/m^3 ro_t = 3000; % kg/m^3 W =.9*K_e; % J i=90; D_at =.015*ro_p^(1/6)*ro_t^(-.5)*W^(.37)*sind(i)^(2/3); % 0.32 m c. ρ p = 600 er et ca. anslag, vis enten ved plott eller på andre måter hvordan kraterdiameteren avhenger av tettheten til meteoren og månen ved å variere ρ p og ρ t innenfor rimelige verdier (hvor stort ville krateret blitt dersom den var av feks is, jern, bly, gull?). Løsningsforslag: ρ i s = 920 D a t = 0.34m ρ j er n = 7870 D a t = 0.49m ρ bl y = 11360 D a t = 0.52m ρ g ull = 19320 D a t = 0.57m 24

d. La nå ρ p = 5000 men la den totale massen variere fra 1 g til 100 kg, og plott kraterstørrelsen som funksjon av vekten til meteoren. Husk å sette verdier på aksene. Hint: logspace(-3,2, 100) generer 100 verdier mellom 10 3 og 10 2 med logaritmisk avstand. Det går også an å bruke linspace her. v=logspace(-3,2, 100); W2=.9*.5.*v.*71000^2; D2=.015*ro_p^(1/6)*ro_t^(-.5).*W2.^(.37).*sind(i)^(2/3); plot(v,d2) e. Denne formelen gjelder strengt tatt kun for mindre kratere på månen, men vi kan teste hvor stor asteroiden som laget Chicxulub krateret på Yucatan halvøya må ha vært etter denne formelen. Krateret har en radius på 180 km og mange mener at det er dette nedslaget som utslettet dinosaurene. Bruk ρ t = 6000, ρ p = 3000 og resten som i b. og beregn massen. Hva med radiusen? Virker resultatene sannsynlig? Løsningsforslag: ca mass = 8*10^12 r = sqrt(m/(4*pi*ro)) % = ca 14 km som er ca 3x for stort stort. 51. I denne oppgaven skal vi se på en modell for samspillet mellom rovdyr og byttedyr. Vi lar x n og y n betegne hhv. antall rovdyr og antall byttedyr etter n uker, og vi antar at x n+1 = x n (1 r + c y n ) y n+1 = y n (1 dx n + q) der r, q, c og d er små, positive tall. a. Forklar tankegangen bak modellen. b. Velg r = 0.02, q = 0.04, c = 0.0002, d = 0.001, x 1 = 50, y 1 = 200. Lag et program som regner ut x n og y n for n 1000. Plott følgene x n og y n i samme koordinatsystem. Hvorfor er toppene til x n forskjøvet i forhold til toppene til y n? 25

% rovdyr og byttedyr % antall dyr i en uke = antall dyr uka før - de døde + de nyfødte % antall nyfødte rovdyr avhengig av antall byttedyr % antall døde byttedyr avhengig av antall rovdyr nt=1000; % antall uker r=0.02; % def av fødselsrater og dødelighetrater q=0.04; c=0.0002; d=0.001; x=zeros(1,nt); y=zeros(1,nt); x(1)=50; % initialisering antall rovdyr y(1)=200; % initialisering antall byttedyr for n=2:nt x(n)=x(n-1)*(1-r+c*y(n-1)); y(n)=y(n-1)*(1-d*x(n-1)+q); figure hold on plot(x, r ) plot(y, b ) title( antall rovdyr (rød) og byttedyr (blå) ) hold off % er det mange byttedyr, øker antall rovdyr; er det få byttedyr, minker antall rovdyr 52. En dyrestamme består av tre årskull. Vi regner med at 40% av dyrene i det yngste årskullet lever videre året etter, mens 70% i det nest yngste årskullet lever videre året etter. Ingen dyr lever mer enn tre år. Et individ i det andre årskullet blir i gjennomsnitt forelder til 1.5 individer som blir født året etter. Et individ i det eldste årskullet blir i gjennomsnitt forelder til 1.4 individer som blir født året etter. La x n, y n, z n være antall dyr i hvert årskull etter n år, og forklar hvorfor x n+1 = 1.5y n + 1.4z n y n+1 = 0.4x n z n+1 = 0.7y n a. Anta at det er 100 dyr av hvert årskull det første året. Lag et program som regner ut x n, y n og z n for 1 n 100. Plott alle tre kurvene i samme vindu. Lag et nytt vindu der du plotter alle de relative bestandene x n = x n x n +y n +z n, y n = y n x n +y n +z n, z n = z n x n +y n +z n. 26

b. Gjenta a., men bruk andre startverdier, f.eks. x 1 = 300, y 1 = 0, z 1 = 0. Sammenlign med resultatene i 1. Gjør oppgavene a en gang med et nytt sett av startverdier. Ser du et mønster? : %oppgave med 3 årskull % x er antall yngste, y antall mellomste, og z antall eldste % indeksen k representerer hvilket år man er i. nt = 100; %antall år x=zeros(1,nt); y=zeros(1,nt); z=zeros(1,nt); x(1)=100; % initialisering antall dyr y(1)=100; z(1)=100; for k=2:nt % regne ut utviklingen x(k)=1.5*y(k-1)+1.4*z(k-1); y(k)=0.4*x(k-1); z(k)=0.7*y(k-1); figure hold on plot(x, : ) plot(y, -- ) plot(z, - ) %beregne og plotte de relative bestandene xr=x./(x+y+z) yr=y./(x+y+z) zr=z./(x+y+z) figure hold on plot(xr, : ) plot(yr, -- ) plot(zr, - ) 53. For å finne vinkelen til sola, θ 0, i forhold til et sted på jorda må man ta hensyn til tre vinkler. De er breddegrad, timevinkel og deklinasjonsvinkel. Breddegraden kalles φ og sier hvor langt nord-syd vi er i forhold til ekvator. Timevinkelen, h, forteller oss hvilken tid på døgnet det er. Timevinkelen er lik null midt på 27

dagen, og man legger til 15 grader(evt trekker fra) for hver time etter 12 (for hver time tidligere enn 12). Deklinasjonsvinkelen, δ, forteller om helningen til jorda i forhold til sola. Den er størst ved sommer- og vintersolverv, ±23.45 grader, og 0 ved høst-og vårjevndøgn. Formelen for å regne ut θ 0 er som følger: cos(θ 0 ) = sin(φ)sin(δ) + cos(φ)cos(δ)cos(h) a. Regn ut θ 0 for følge steder: 1. Oslo: 60N, kl 15.00, ved sommersolverv 2. New York City: 40N, kl 09.00, ved høstjevndøgn 3. Singapore: 1N, kl 12.00 ved vårjevndøgn Løsningsforslag: Følge kode løser problemet: 1. Oslo: 60 N kl. 15:00, sommersolhverv f = 60; h = 45; delta = 23.45; Theta0 = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); og da er vinkelen θ 42 2. New York: 40 N kl. 15:00, høstjevndøgn f = 40; h = -45; delta = 0; Theta0 = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); og da er vinkelen θ 32.8 3. Singapore: 1 N kl. 12:00, vårjevndøgn f = 1; h = 0; delta = 0; Theta0 = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); og da er vinkelen θ 89 28

b. Nå skal vi se litt nærmere på når sola går opp og ned i Oslo og Tromsø: Oslo ligger 60N, mens Tromsø ligger 69N. I løpet av ett døgn varierer timevinkelen fra -180 ved midnatt til 180 ved midnatt ett døgn etter. Den skal være lik null kl 12.00. Timevinkelen øker 15 grader pr. time. 1. Lag et array med lengde 24 som inneholder timevinklene fra midnatt til midnatt ett døgn senere. Hint: la timevinkelen variere fra -165 til 180, med skritt på 15. 2. La det være sommersolverv. Regn ut solvinklene for ett døgn for både Oslo og Tromsø. Plot resultatet i samme figur. Husk navn på aksene! 3. Plot en linje for θ 0 lik 90 i samme figur som i 1. Hva representerer denne linja? 4. Finn ut når sola går opp i Oslo og i Tromsø, og når den går ned. 5. Hvorfor er ikke θ 0 lik null midt på dagen? 6. La det så være vintersolverv. Gjør tilsvare som i oppgave 1) til 4) 7. Hvorfor får Tromsø så ekstreme verdier i forhold til Oslo? Løsningsforslag: Soloppgang og solnedgang i Oslo og Tromsø: 1. Følge kode løser problemet: h = -165:15:180; 2. Følge kode løser problemet: h = -165:15:180; f = 60; delta = 23.45; ThetaOslo = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); f = 69; ThetaTromso = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); hold on plot(thetaoslo); plot(thetatromso, r ); axis tight xlabel( Tid [24 timer] ); ylabel( Solvinkelen ); Title( Solvinkel for Oslo og Tromsø ); 29

3. Følge kode løser problemet: x = 1:24; plot(1:24,90, k* ); ylim([-10 100]); 4. Vi ser av figuren at Oslo har soloppgang ca. kl 03:00 og solnedgang ca. kl. 21:00. Tromsø har midnattssol og har derfor ikke soloppgang og solnedgang. 5. θ 0 er null bare ved ekvator. I Norge står sola i sør kl. 12:00. 6. Her rere vi bare på delta variablen og gir den verdien -23.45 grader før vi kjører programmene på nytt. 7. Fordi Tromsø ligger nord for polarsirkelen. c. Vi skal nå la timevinkelen være konstant lik null, dvs. at det er midt på dagen. Nå skal deklinasjonsvinkelen variere gjennom et helt år. Vi starter på sommersolverv. Deklinasjonsvinkelen pr. dag kan regnes ut vha: δ = 23.45 cosd(m), der m = 0 : 360/364 : 360 1. Regn ut hvordan solvinkelen for Oslo varierer i løpet av ett år. Gjør tilsvare beregninger for Tromsø. Plot resultatet i samme figur. 2. Hvor mange dager er uten sol i Tromsø? Har vi tilsvare dager i Oslo? Om du synes dette er gøy, gjør gjerne tilsvare oppgaver med andre byer. Informasjon om breddegrad finner du lett på Wikipedia. Løsningsforslag: Konstant timevinkel på 0 grader. 1. Følge kode løser problemet: h = 0; f = 60; m = 0:360/364:360; delta = 23.45 * cosd(m); ThetaOslo = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); f = 69; ThetaTromso = asind(sind(f)*sind(delta) +cosd(f)*cosd(delta)*cosd(h)); hold on plot(thetaoslo); plot(thetatromso, r ); 30

axis tight xlabel( Dager [365] ); ylabel( Solvinkelen ); Title( Solvinkel for Oslo og Tromsø ); xlim([1 365]); ylim([-10 100]); plot(1:360,90, k ); 2. Tromsø har 53 dager uten sol og Oslo har ingen dager uten sol siden Oslo er sør for polarsirkelen. Vi kan lese dette ut fra figuren eller bruke en funksjon som heter find samt length slik length(find(thetatromso <= 0)) som gir antall dager der solvinkelen er mindre eller lik null (mørketid). 54. I denne oppgaven skal vi lage flere arrayer vi kan få bruk for. a. Lag et array x som går fra 0 til 2π, med 1000 punkter. Lag en figur der du plotter funksjonen S=sin(x). Løsningsforslag: Følge kode løser problemet: x = linspace(0,2*pi,1000); S = sin(x); plot(s); b. Man kan tilnærme funksjonen sin(x) med summen S m (x) = m j =0 ( 1) j 2j +1 x (2j + 1)!, der m er antall ledd i summen. Regn ut denne summen fra null til en gitt verdi m, som du setter i begynnelsen av programmet. m kan ha alle mulige positive verdier, men vi skal bruke verdier mellom 1 og 10. Bruk arrayen x som du definerte i a.. Selve for-løkka kan se slik ut: S_xm=0; for j = 1:m S_xm=S_xm+((-1)^(j-1)*(x.^(2*(j-1)+1))/factorial(2*(j-1)+1)); S_xm vil etter denne løkka være et array du kan plotte. factorial er Matlabfunksjonen for fakultet. Løsningsforslag: Følge kode løser problemet: 31

x = linspace(0,2*pi,1000); m = 10; S_xm = 0; for i = 1:m S_xm=S_xm+((-1)^(i-1)*(x.^(2*(i-1)+1))/factorial(2*(i-1)+1)); c. Lag en figur der du plotter sin(x) og S m (x). Ha ulik farge på de to grafene. Start med m = 1 og lag nye figurer for forskjellige m-verdier mellom 1 og 10. Forklar hva du ser. Hint: det kan være lurt å angi verdiene for y-aksen: ylim([min(s) max(s)]), der S=sin(x) fra a.. Løsningsforslag: Følge kode løser problemet: x = linspace(0,2*pi,1000); m = 10; S_xm = 0; for i = 0:m S_xm = S_xm+((-1)^(i)*(x.^(2*(i)+1))/factorial(2*(i)+1)); S = sin(x); plot(s); hold on; plot(s_xm, r ); ylim([min(s) max(s)]); Vi ser her at når m >= 10 så har vi en sammenfalle kurve med sin(x). 55. Kandidatene 1 til 10 har fått følge poengsum på eksamen: 51, 42, 70, 99, 65, 12, 78, 67, 33 og 90. Lag et program som skriver ut, med en linje per kandidat, kandidatnummer og hvor mange poeng kandidaten har fått. png=[51 42 70 99 65 1278 67 33 90]; %poeng per kandidat n=length(png); for j=1:n fprintf( Kandidat %i har fått %i poeng,j,png(j)) 32

Legg merke til at vi bruker indeksvariabelen j både til kandidatnummer og som indeks. 56. I denne oppgaven skal vi se mer på hvordan vi kan aksessere tegnene i en strengvariabel. a. Lag en strengvariabel az som inneholder alle bokstavene i alfabetet. az= abcdefghijklmnopqrstuvwxyz ; b. Hva blir H når: H(1)=az(8), H(2)= az(5), og H(3)= az(9)? Løsningsforslag: hei c. Skriv navnet ditt ved å trekke ut de riktige bokstavene fra az Hint: Trenger du mellomrom kan du legge til dette på slutten av alfabetet. disp([az(1),az(4),az(1)]) d. Bruk en løkke til å lage strengvariabelen za, som er alfabetet baklengs. n=length(az) for i=1:n za(i)=az(n+1-i); 57. gitt løkka: m=0; for i=1:10 m=m+i; a. Bruk sprintf til å skrive ut verdien til m for hvert steg i løkka sammen med hvilket steg det er i løkka Løsningsforslag: 33

m=0; for i=1:10 m=m+i; fprintf( verdien av m er %d og det er gått %d iterasjoner.,m,i) b. La m starte på 0.5, og gjenta det samme, slik at m får to desimaler. Løsningsforslag: m=0.5; fprintf( verdien av m er %.2f og det er gått %d iterasjoner.,m,i) 58. Gitt strengvariabelen tall = ( u2 liv3 4ever ). a. Bruk str2num til å legge sammen tallene i denne teksten. Løsningsforslag: a=str2num(tall(2))+str2num(tall(7))+str2num(tall(9)) b. Hva får du om du ikke bruker str2num? 59. Gitt strengvariablene dato1 = 19990115; dato2 = 2010.30.05 ; dato3 = 5/01/2008 ; a. Bruk num2str, str2num og fprintf til å skrive ut disse datoene på formen Denne datoen er fra året yyyy og dagen er dd i mm b. Vanskelig: istedenfor tallet til måneden, skriv forkortelsen på tre bokstaver til den aktuelle måneden, som jan, feb, mar, osv. Denne datoen er fra året yyyy og dagen er dd.mnd dato1 = 19990115; dato2 = ( 2010.30.05 ); dato3 = ( 5/01/2008 ); 34

dato = num2str(dato1); mnd1=str2num(dato(5:6)); dag1=str2num(dato(7:8)); aar1=str2num(dato(1:4)); fprintf( Denne datoen er fra året %d og dagen er %d i %2.d,aar1,dag1,mnd1) dag2=str2num(dato2(6:7)); mnd2=str2num(dato2(9:10)); aar2=str2num(dato2(1:4)); fprintf( Denne datoen er fra året %d og dagen er %d i %2.d,aar2,dag2,mnd2) dag=str2num(dato3(1)); mnd=str2num(dato3(3:4)); aar=str2num(dato3(6:9)); fprintf( Denne datoen er fra året %d og dagen er %d i %2.d,aar,dag,mnd) if mnd == 1 mnd= jan ; elseif mnd == 2 mnd = feb ; elseif mnd == 3; mnd = mar ; %osv fprintf( Denne datoen er fra året %d og dagen er %d.%s,aar,dag,mnd) 60. Skriv inn matrisene og A = B = 2 3 1 4 1 5 1 2 1 1 3 2 4 5 1 0 2 1 og gjennomfør operasjonene C=[A,B] C(2,4) C(:,[2 3]) 35

C([1 3],3:5) For å få noe ut av oppgaven bø den gjøres først uten å bruke Matlab. Løsningsforslag: Svarene er: C = 2-3 1-1 3 2 4 1-5 4 5 1 1 2-1 0 2-1 C(2,4) = 4 C(:,[2 3]) = -3 1 1-5 2-1 C([1 3],3:5) = 1-1 3-1 0 2 61. Undersøk hva kommandoen» [A;B] gjør når A og B er to matriser. 62. På begynnelsen av denne seksjonen har du fått oppgitt temperaturutviklingen på 4 målestasjoner. a. Regn ut temperaturforskjellene mellom stasjon 4 og stasjon 1 på alle dagene. b. Plott temperatur som en funksjon av tid på de fire målestasjonene i samme figur. Sett navn på begge aksene på figuren. T=[12.4 12.0 15.1 15.6 14.3 14.0 13.6; 13.4 15.3 16.1 16.6 14.9 13.0 13.6; 12.6 12.5 15.0 15.1 14.9 13.7 13.1; 12.9 12.1 15.6 14.6 14.0 14.0 13.2] t1=t(1,:) t2=t(2,:) t3=t(3,:) t4=t(4,:) figure hold on plot(t1, r ) 36

plot(t2, g ) plot(t3, k ) plot(t4, b ) xlabel( dag nummer ) ylabel( temperatur i Celsius grader ) 63. Gitt matrisen T=[0-3 -3-5 -7-8 -4-2 0 0-5 -6; 2 2 3 4 2 6 7 4 3 0-2 3] Matrisen T inneholder temperaturer fra 2 målestasjoner. Det er tatt en temperaturmåling pr. dag. Skriv matrisen inn i Matlab. Plott temperaturene fra de to stasjonene i samme figur, og bruk ulike farger på kurvene. Sett navn på aksene. La x-aksen gå fra 1 til 12. Lag stjerner i grønt som angir der temperaturen er lik null i figuren. Løsningsforslag: Følge kode løser problement: T = [0-3 -3-5 -7-8 -4-2 0 0-5 -6; 2 2 3 4 2 6 7 4 3 1-2 3]; x = 1:12; plot(x,t(1,:)); hold on plot(x,t(2,:), r ); plot(x,0, g* ); xlabel( Tid ); ylabel( Temperatur ); 64. Gitt matrisen A = [1 2 3 4; 6 7 8 9] B= [10 11; 12 13] a. Hvor mange rader/kolonner har A og B? Løsningsforslag: A har to rader og fire kolonner. B har to rader og to kolonner. b. Hvor mange rader/kolonner har C = [A, B]? Løsningsforslag: C = [A,B] har to rder og seks kolonner. c. Hvilken rad i C er lengst? Løsningsforslag: Radene i C er like lange. d. D = [C (:, 3 : 4)] Hvor mange rader/kolonner har D? Løsningsforslag: D har to rader og to kolonner. 37

65. Gitt matrisen P = [1 2; 3 4; 5 6; 7 8] Q= [10; 11; 12; 13] a. Hvor mange rader/kolonner har P og Q? Løsningsforslag: P har 4 rader og 2 kolonner. Q har 4 rader og 1 kolonne. b. Hvor mange rader/kolonner har R = [P,Q]? Løsningsforslag: R = [P,Q] har 4 rader og 3 kolonner. c. Hva blir P(1,2) +Q(2,1) Q(4,1)? Hvilke tall inngikk i regnestykket? Løsningsforslag: P(1,2) -> 2, Q(2,1) -> 11, Q(4,1) -> 13 så vi får 2 + 11 13 som blir 0. d. Lag arrayer av hver kolonne i R. Løsningsforslag: Følge kode løser problement: Rc1 = R(:,1); Rc2 = R(:,2); Rc3 = R(:,3); e. Lag arrayer av hver rad i R. Løsningsforslag: Følge kode løser problement: Rr1 = R(1,:); Rr2 = R(2,:); Rr3 = R(3,:); Rr4 = R(4,:); f. Vanskelig: Klarer du ved hjelp av disse arrayene å lage matrisene Z = P og Y = Q? Løsningsforslag: Z=[Rc1,Rc2]; Y=Rc3; 66. Lag en matrise der første kolonne inneholder temperaturene fra 0 til 40 grader i Celsius, andre kolonne inneholder de tilsvare temperaturer i Fahrenheit, og tredje kolonne inneholder tilsvare temperaturer i Kelvin. Sammenhengen mellom Celsius(C) og Fahrenheit(F) er F = 1.8C + 32, og mellom Celsius 38

(C) og Kelvin (K) K = C + 273,15. Nb: Gjør dette ved å programmere, ikke skriv inn alle verdiene for hånd! T=0:40; F=(T*1.8)+32; K=T-273; t=[t; F; K]; t eller T = zeros(41,3); T(:,1) = 0:40; T(:,2) = T(:,1).* 1.8 + 32; T(:,3) = T(:,1) + 273.15; 67. Lag en matrise med 5 rader og 5 kolonner der tallet i hvert punkt er gitt ved radnr*kolonnenr. Løsningsforslag: Følge kode løser problement: M = zeros(5,5); for j = 1:5 for i = 1:5 M(i,j) = i*j; 68. Vi definerer matrisen M = 1 2 3 0 1 2 1 2 3 a. Legg inn matrisen i Matlab. Løsningsforslag: M = [-1-2 -3; 0 1 2; 1 2 3]; b. Lag matrisen N som har radene til M som kolonner og kolonnene til M som rader. Løsningsforslag: 39

N = M ; c. Gir N(1:2, 2:3) og M(1:2, 2:3) det samme svaret? Løsningsforslag: Nei siden matrise N er den transponerte av matrise M. d. Gir N(1,1) og M(1:1,2:3) det samme svaret? Løsningsforslag: Nei siden vi bruker bare et element fra N og to elementer fra M. 69 (Flervalgsoppgave, kun ett riktig svar). For å få noe ut av oppgaven bør den gjøres uten å bruke Matlab. Hvilket av følge utsagn er sanne? Art = [1 1.2; 2.1 2; 7 8.9] Gir feilmelding siden dimensjonene ikke stemmer. 1 1.2 Ar t = 2.1 2 7 8.9 ( ) 1 2.1 7 Ar t = 1.2 2 8.9 Ar t(1 : 3) = 7 Løsningsforslag: Det andre alternativet er riktig. 70 (Flervalgsoppgave, kun ett riktig svar). Hvilket av følge utsagn er sanne? En matrise kan ikke ha forskjellig antall rader og kolonner. Antall rader i en matrise varierer med hvilken kolonne du er i. Matriser brukes sjelden av proffe programmerere siden du mister kontrollen over data. Matriser kan ha mange flere enn 3 dimensjoner. Løsningsforslag: Det fjerde alternativet er riktig. 71. Gitt matrisen T=[0-3 -3-5 -7-8 -4-2 0 0-5 -6; 2 2 3 4 2 6 7 4 3 0-2 3] Matrisen T inneholder temperaturer fra 2 målestasjoner over 12 dager. a. Lag et array av hver rad i matrisen. 40

b. Legg til en tredje målestasjon med målingene 1 1-2 -1 0 2 3 1-1 0-1 1 slik at T nå har 3 rader. c. Finn temperaturene på dag 7. d. Lag en matrise som kun inneholder en ukes observasjoner som starter på dag 3 e. Lagre arbeidet ditt i en m fil eller diary. : T=[0-3 -3-5 -7-8 -4-2 0 0-5 -6; 2 2 3 4 2 6 7 4 3 0-2 3]; T1=T(1,:); %a T2=T(2,:); T3=[1 1-2 -1 0 2 3 1-1 0-1 1]; %b T=[T;T3]; Tdag7=T(:,7); %c Tuke=T(:,3:9); %d 72. Opprett arrayen» G=linspace(0,10,100); a. Hva blir summen av denne? b. Hvor lang er denne arrayen? c. Del arrayen opp i to arrayer, E og F, der E inneholder den første halvdelen av G, og F den andre halvdelen. d. Hva blir gjennomsnittet av F E? G=linspace(0,10,100); sum(g) length(g) E=G(1:50); F=G(51:100); H=F-E; mean(h) 41

hvor svarene er 500 og 100 for a) og b) 73. På begynnelsen av seksjonen om matriser har du fått oppgitt temperaturutvikling i 7 dager fra 4 stasjoner som ligger i samme område. a. Lag en figur over temperaturen som en funksjon av tid ved de 4 stasjonene. figure(1) plot(t(:,1)) hold on plot(t(:,2), r ) plot(t(:,3), k ) plot(t(:,4), g ) leg( st.1, st.2, st.3, st.4 ) title( Temperatur for fire stasjoner ); xlabel( Tid ); ylabel( Temperatur ) b. Beregn den gjennomsnittlige temperaturen for hver dag i dette området. Beregn også standardavviket. Bruk figuren fra a. for å kontrollere om verdiene du får her virker korrekte. Tmean = mean(t); disp(tmean) Tstd = std(t); disp(tstd) 74. Legg vannførselen for elvene fra tabellen nedenfor inn i en vektor med navn Vann. a. Beregn kun ved hjelp av arrayoperasjoner: 1. Total vannførsel. 2. Gjennomsnittslig vannførsel for elvene. 3. gjennomsnittet og summen av vannførselen dersom vi ikke regner med Amazonas. 4. Siden Madeira renner ut i Amazonas ønsker vi også å beregne uten denne. Hva blir nå total vannmengde (inkl. Amazonas)? 42

Tabell 1: Verdens 12 største elver etter vannførsel [m 3 /s]: # Navn Vannførsel [m 3 /s] lengde [km] 1) Amazonas 2.19 10 5 7062 2) Congo 4.18 10 4 4371 3) Ganges 3.35 10 4 2948 4) Orinoco 3.30 10 4 2140 5) Yangtze 3.19 10 4 6380 6) Rio Negro 2.93 10 4 2230 7) Parana 25700 3998 8) Yenisei 19600 5550 9) Lena 17100 4260 10) Madeira 17000 3239 11) Mississipi 16200 6270 12) Mekong 16000 4023 5. VANSKELIG: Hva blir snittet uten Madeira (inkl.amazonas)? Legg så lengdene til elvene inn i en vektor ved navn Lengde. b. Hvor lange er elvene til sammen? c. Gjør følge: 1. Gang elvens lengde [km] med dens vannførsel og lagre resultatet i et array Vannlengde 2. Hva blir gjennomsnittet til Vannlengde? 3. Hvilken elv er minst ved denne måten å se det på? -og hvor stor er den? Løsningsforslag: Svarene er Vann= [219000 41800 33500 33000 31900 29300 25700... 19600 17100 17000 16200 16000]; 1.a) sum(vann) = 500100 [m^3/s] 1.b) mean(vann) = 41675 [m^3/s] 1.c) sum(vann(2:12)) = 281100 [m^3/s] mean(vann(2:12))= 25555 [m^3/s] 43

1.d) sum(vann(1:9))+sum(vann(11:12))= 483100 1.e) Feks: (sum(vann(1:9))+sum(vann(11:12)))/(length(vann)-1)= 43918 Lengde =[7062 4371 2948 2140 6380 2230 3998 5550 4260... 3239 6270 4023]; 2. sum(lengde) = 52471 3.a) Vann.*Lengde 3.b) mean(vannlengde)= 2.2274*10^8 3.c) min(vannlengde)= 5.5063*10^7 75. Befolkningstallene nedenforer hentet fra Wikipedia i April 2010. Tabell 2: Land med høyest befolkning # Land Befolkning % av verdens befolkning 1) Kina 1,337,030,000 19.62% 2) India 1,179,744,000 17.31% 3) USA 309,034,000 4.54% 4) Indonesia 231,369,500 3.39% 5) Brasil 192,801,000 2.83% 6) Pakistan 169,274,000 2.48% 7) Bangladesh 162,221,000 2.38% 8) Nigeria 154,729,000 2.27% 9) Russland 141,927,297 2.08% 10) Japan 127,380,000 1.87% 11) Mexico 107,550,697 1.59% 12) Filippinene 92,226,600 1.35% På samme tidspunkt var verdens befolkning totalt 6.816 milliarder. Legg tallene over befolkningen i de 12 landene inn i et array som du kaller populasjon. clear all close all befolkning=[1337030000 1179744000 309034000 231369500 192801000... 169274000 162221000 154729000 141927297 127380000 107550697 92226600]; prosent= [19.62 17.31 4.54 3.39 2.83 2.48 2.38 2.27 2.08 1.87 1.59 1.35]; land=char( Kina, India, USA, Indonesia, Brasil, Pakistan,... Bangladesh, Nigeria, Russland, Japan, Mexico, Filippinene ); 44

%oppg a bar(befolkning) set(gca, XTickLabel,land); ylabel( Befolkning ) title( De 12 mest befolkede landene i verden ) %oppg b summen = sum(befolkning); %oppg c snitt=mean(befolkning); avvik=std(befolkning); %oppg d andel =sum(prosent); %oppg e norge=4858200; del_12=norge/snitt; %oppg f verden = 6.816*1e9; del_verden=norge/verden; %oppg g befolkning2=befolkning(3:length(befolkning)); prosent2= prosent(3:length(prosent)); summen = sum(befolkning2); snitt=mean(befolkning2); avvik=std(befolkning2); andel =sum(prosent2); del_12=norge/snitt; a. Lag et søylediagram over befolkningen i de 12 landene. b. Finn summen av befolkningen i de 12 landene. Løsningsforslag: 4.2053 10 9 c. Finn gjennomsnittet og standardavviket. Løsningsforslag: Gjennomsnitt: 3.5044 10 8, standardavvik: 4.2930 10 8 d. Hvor stor del av jordas befolkning bor i de 12 mest befolkede landene? Løsningsforslag: 61.71% e. Pr. 1. Januar 2010 var befolkningen i Norge 4,858,200. Hvor mange prosent er dette i forhold til gjennomsnittet du fant i c.? Løsningsforslag: 0.014% 45

f. Hvor mange prosent er Norges befolkning av jordas befolkning? Løsningsforslag: 0.0007% g. Kina og India har stor innvirkning på tallene du får siden det bor så mange her. Gjør oppgave b.-e. en gang til uten tallene for Kina og India, og se om du får et veldig ulikt resultat. Løsningsforslag: Vi får nå svarene b 1.6885 10 9 c Gjennomsnitt: 1.6885 10 8, standardavvik: 6.364 10 7 d 24.78% e 0.0288% 76. Finn, uten å programmere, om det siste uttrykket er sant eller ikke. a=2; b=2*a; c=45; d=c-10*b; a<d & (b>c d<c) & ~(a==b) Kontroller med Matlab om du har riktig svar. Løsningsforslag: Hvordan man går fram: Regne ut verdiene: a=2 b=4 c=45 d=5 Sammenligne og kombinere sammenlignigene: 1.: a<d: sant 2.: b>c ikke sant; 3.: d<c sant; 4.: derfor blir 2. eller 3. sant 5.: a ulik b sant 6.: baade 1. og 4. og 5. er sant; derfor er det totale sant. 77. Skriv i en enklere form følge test: if ~(a>b) og test med noen verdier av a og b. 46

if a<=b 78. Funksjonen arcsin(a) er definert bare hvis verdien til a er mellom -1 og 1. Lag et program som tester verdien av a, tar arcsin hvis mulig, eller skriver ut en melding hvis det ikke går an å ta arcsin av a. if (abs(a)>1) disp ( arcsin kan ikke regnes ut for denne a ) else b=arcsin(a) 79. La oss lage et par typer enkle if-tester. a. Lag en if-test som tester om en tallvariabel er et heltall. a= 3.000; b= ceil(a); %fix, floor, round funker også if a==b disp( heltall ) else disp( ikke heltall ) b. Lag en if-test som tester om et heltall er partall eller oddetall. b=a/2; c=ceil(b); if a==b disp( partall ) else disp( oddetall ) c. Lag en if-test som tester hvilken variabel som er størst og deretter setter begge variablene lik hverandre. 47

if a <=b a=b else b=a 80. For å få noe utbytte av denne oppgaven må man la være å programmere den, og heller tenke gjennom den. a=2; b=3; if (a>1 & b<3) disp( ja ) else disp( nei ) a. Hva skrives ut? Hvorfor? Løsningsforslag: nei b. Hva skrives ut om a=0 og b=5? Løsningsforslag: nei c. Hva skrives ut dersom a=1 og b=4? Løsningsforslag: nei d. Hva skrives ut dersom a=2 og b=3? Løsningsforslag: nei 81. For å få noe utbytte av denne oppgaven må man la være å programmere den, og heller tenke gjennom den. a=2; b=3; if (a>1 b<3) disp( ja ) else disp( nei ) 48

a. Hva skrives ut? Hvorfor? Løsningsforslag: a>1 : sant; b<3 : feil, derfor feil; derfor nei. b. Hva skrives ut om a=0 og b=5? Løsningsforslag: a>1 : feil; b<3 : feil, derfor feil; derfor nei. c. Hva skrives ut dersom a=1 og b=4? Løsningsforslag: a>1 : feil; b<3 : feil, derfor feil; derfor nei. d. Hva skrives ut dersom a=2 og b=3? Løsningsforslag: a>1 : sant; b<3 : feil, derfor feil; derfor nei. 82. For å få noe utbytte av denne oppgaven må man la være å programmere den, og heller tenke gjennom den. a=1; b=3; if a>1 & b<3 disp( ja ) if a<1 & b>3 disp( hmm ) else disp( nei ) a. Hva skrives ut? Hvorfor? Løsningsforslag: nei b. Hva skrives ut om a=0 og b=5? Løsningsforslag: hmm c. Hva skrives ut dersom a=1 og b=4? Løsningsforslag: nei d. Hva skrives ut dersom a=2 og b=2? Løsningsforslag: ja nei e. Hva skrives ut dersom a=2 og b=3? Løsningsforslag: nei 49

f. Hvilke verdier kan a og b ha for at bare nei skal bli skrevet ut? Løsningsforslag: enten må a være lik 1 eller b lik 3. 83. Vi skal nå se litt på hvordan man kan bruke en if-test i en løkke. a. Lag en løkke som teller fra 1 til 100, og bruk denne løkken til å lage et array A, som inneholder verdiene 1 til 100 i stige rekkefølge. Løsningsforslag: Denne koden kan brukes: A = []; for i = 1:100 A(i) = i; b. Bruk samme løkke og en if-test til å lage et array B som inneholder alle tallene i løkka som går opp i 10. Løsningsforslag: Kode som løser problemet: B = []; j = 1; for i = 1:100 if(floor(i/10) == ceil(i/10)) B(j) = i; j = j + 1; c. Gjør om det inne i løkka slik at de tallene som er i B ikke er med i A. Hvor lange blir array A og B da? Løsningsforslag: Løsningsforslag: A = []; B = []; j = 1; k = 1; for i = 1:100 if(floor(i/10) == ceil(i/10)) B(j) = i; j = j + 1; else A(k) = i 50

k = k + 1; Lengdene : 10 og 90. 84. Kandidatene 1 til 10 har fått følge poengsum på eksamen: 51, 42, 70, 99, 65, 12, 78, 67, 33 og 90. Kandidatene står hvis de har minst 44 poeng. Lag et program som skriver ut, med en linje per kandidat, kandidatnummer og om han har stått eksamen eller ikke. png=[51 42 70 99 65 1278 67 33 90]; %poeng per kandidat grense=44; n=length(png); for i=1:n if png(i)<grense disp(sprintf( Kandidat %i har ikke bestått,i)) else disp(sprintf( Kandidat %i har bestått,i)) 85. Beregn snødybde ut fra følge meteorologiske data. Temperatur per dag i Celsius (0-2 -3 1 4-2 -5-6 -6-5 1 1) Nedbør per dag i millimeter (3 5 6 0 4 4 8 0 0 2 3 3) Anta at det ikke var snø da målingene startet og at nedbør kommer som snø når det er temperatur mindre eller lik 1 C (1 mm nedbør gir omtrent 1 cm snø). Anta videre at ingen snø smelter. Lag et søylediagram over snødybde som funksjon av tid. : temp=[2 1-3 3 4 0-2 -1 0 1 2 3]; ned=[3 5 6 0 4 4 8 0 0 2 3 3]; snotot=0; for i=1:length(temp); if (temp(i)<=1); 51