Department of Physics Umeå University 18 november MATLAB Guide. Marina Wallin Martin Hansson Per Sundholm

Storlek: px
Starta visningen från sidan:

Download "Department of Physics Umeå University 18 november MATLAB Guide. Marina Wallin Martin Hansson Per Sundholm"

Transkript

1 Department of Physics Umeå University 18 november 2014 MATLAB Guide Marina Wallin Martin Hansson Per Sundholm

2 INNEHÅLL 1 Innehåll 1 Introduktion till MATLAB Vad är MATLAB och varför använder vi det? En första bekantskap med MATLAB Hjälp Enkla MATLAB operationer Matematiska funktioner Vektorer Logiska uttryck Enkla script i MATLAB If, For, While Bilder i MATLAB Regressionsanalys Linjäranpassning Konfidensintervall Polynomanpassning Linjärisering av potensfunktion Värdering av resultat Programmering med MATLAB Introduktion till vektorer och matriser Vektorer i MATLAB Matriser i MATLAB Vektor- och matrisoperationer Mer om loopar Script i MATLAB Läsa in data i MATLAB Matematisk analys med MATLAB Funktioner och derivator Eulers metod MATLAB:s ode-lösare Numerisk integrallösning Riemannsumman Trapetsregeln Simpsons regel MATLAB:s numeriska integralräknare Symbolhantering i MATLAB Linjära system i MATLAB Vektorer och matriser Matrisoperationer Matrisaddition och subtraktion Matrismultiplikation Transponering av matriser i MATLAB Matrisinvers i MATLAB Linjär algebra i MATLAB Determinanter i MATLAB Lösning av linjära system i MATLAB

3 INNEHÅLL Egenvärden och egensystem i MATLAB Statistik i MATLAB Slumpvariabler och fördelningar i MATLAB Slumptalsgenerering Slumpfördelningar Sammanfattande statistik Skattningar av väntevärde och spridningsmått Statistiska plottar Statistiska test och konfidensintervall Normalitetstest Test med normalfördelningsantagande Exempel ANOVA Oparametriska test Konfidensintervall Programspråket R Klassisk mekanik med MATLAB Newtons rörelseekvationer med numeriska metoder Rörelse i en dimension Rörelse i flera dimensioner Verlet-integration Velocity-Verlet A Appendix: Rapportskrivning med Matlab 81 A.1 Bilder i MATLAB A.1.1 Plot-kommandot A.1.2 Sub-plottar A.1.3 Symboler A.2 MATLAB med andra program A.2.1 MATLAB2tikZ A.2.2 MATLAB med COMSOL A.3 Feluppskattningar B Appendix: Vanliga fel 87 B.1 Dimensionsfel B.2 Indexeringsfel B.3 Syntaxfel B.4 Övriga fel B.5 Felsökning i MATLAB B.5.1 Felsökning i MATLAB C Appendix: Tips och Trix 93 C.1 Småtips att alltid följa C.2 Publish C.3 Multi-dimensionella matriser C.4 Cell-arrayer C.5 Struct

4 1 INTRODUKTION TILL MATLAB 3 1 Introduktion till MATLAB Något man som Teknisk fysiker kommer att använda genom hela sin utbildning och förmodligen även i det riktiga livet är MATLAB, se figur 1. MATLAB är ett programspråk från företaget MathWorks som används av många civilingenjörer. Den här handboken är skriven av studenter på Teknisk fysik för att hjälpa er och göra den första bekantskapen med MATLAB enklare. För är det något man kan vara säker på så är det att man inte kan fuska sig igenom MATLABmomenten i kurserna. Det kommer att återkomma i stort sett i varenda kurs och en bra relation till MATLAB kommer därmed hjälpa avsevärt. MATLAB kommer ibland vara ens värsta fiende och man kommer känna att man inte har tid att lära sig det, då man måste räkna uppgifter och göra teoretiska labbar hela tiden. Ett tips är att ta er tiden till att lära er MATLAB ordentligt så ni vet när och hur man bör använda det. Ni kommer tjäna på det i längden. Figur 1: MATLABs logga. Det här är som sagt en handbok som är till för att hjälpa er. Vi påstår inte på något sätt att den är världsbäst, men vi tror ändå att den är bättre än att inte ha någonting alls. Ett tips är att samtidigt som ni läser detta dokument, se till att testa att göra samma exempel som vi gör för bättre förståelse. Kom ihåg att det alltid finns äldrekursare i datasalen som kan hjälpa er då ni kör fast. Lycka till! 1.1 Vad är MATLAB och varför använder vi det? Namnet MATLAB kommer från matrix laboratory och syftar till programmets förmåga att hantera matriser. MATLAB är ett högnivåspråk som lämpar sig för matematiska och tekniska beräkningar, vilket vi som civilingenjörer sysslar en hel del med. I MATLAB kan man skriva algoritmer, beräkna matematiska uttryck, analysera data, visualisera resultat och mycket, mycket mer. I detta kapitel kommer vi börja med att förklara hur man kan använda MATLAB på ett enkelt sätt för att sedan öka svårighetsgraden i senare kapitel.

5 1 INTRODUKTION TILL MATLAB 4 Om ni någonsin tvivlar på MATLABs styrka kan ni alltid testa att skriva why i kommandofönstret. MATLAB kommer då ge er svar på tal. 1.2 En första bekantskap med MATLAB När man öppnar MATLAB kommer det se ut ungefär som i figur 2. Notera att man själv kan flytta och arrangera om som man själv vill. Det betyder att bilden inte alltid stämmer exakt men oftast ser det ut som i figur 2. Längst upp i fönstret finns flikar och ikoner som underlättar arbetet. Det stora fönstret i mitten kallas för kommandofönstret, Command window, och det är där man skriver in vad man vill göra. Figur 2: Det här är ett exempel på hur MATLAB ser ut då man startar det. Symbolen >> kallas för MATLAB-prompten och indikerar att man kan skriva. Om vi till exempel skriver >> *(4 5) + 10/5 och trycker enter kommer MATLAB att svara >> 11 vilket är precis det vi vill. MATLAB har räknat ut vårt tal och sparat det i en variabel som heter ans. Ibland kan det vara skönt att MATLAB skriver ut vad den gör så man vet att allting blir rätt, men med för många utskrifter blir det snabbt oöverskådligt. Då använder man sig av ett semikolon efter uttrycket, >> 35*12 100; vilket gör att ans får värdet 320 men det skrivs inte ut i kommandofönstret. Om man skriver in

6 1 INTRODUKTION TILL MATLAB 5 >> a = 4; >> b = 3; >> a+b i kommandofönstret kommer MATLAB se ut som i figur 3. Figur 3: Så här kan MATLAB se ut då man utfört en del kommandon. Som man ser har bilden förändrats genom att det tillkommit nya saker. Längst ner till höger har vi en ruta som kallas kommandohistorik, Command History, där man ser vilka kommandon som senast gjorts. Längst upp till höger finns en ruta som heter arbetsyta,workspace, där alla aktuella variabler sparas tillsammans med deras värde. Där a för tillfället är 4, b är 3 och ans är 7. ans är en temporär variabel, vilket betyder att variabeln bara kommer sparas tills en ny uträkning görs och den gamla uträkningen inte längre är aktuell. Om man skriver in >> a b kommer ans byta värde till 1. Om man vill spara olika variabler en längre tid måste man själv ge dem egna namn. Detta görs genom att skriva tex >> sum = a+b >> diff = a b vilket sparar 7 i variabeln sum och 1 i variabeln diff. Beskrivande variabelnamn gör koden enklare att förstå för utomstående. Om man vill spara många värden i samma variabel kan man göra det genom att skapa en lista av tal: >> numbers = [ ] Detta kallas även för en vektor och kommer förklaras ytterligare i avsnitt 2.1.

7 1 INTRODUKTION TILL MATLAB 6 Nu har vi endast skrivit kortare rader men när man gör många uträkningar på samma gång kan det vara bra att spara det på något sätt. I MATLAB görs detta genom att skapa en M-fil. Det kan man antingen göra genom att klicka New Script i huvudpanelen eller skriva edit i kommandofönstret. Då öppnas en editor där man kan skriva sin kod. För att köra klickar man på den gröna triangeln eller genom att skriva in m-filens namn i kommandofönstret. Till exempel kan vi skriva >> edit hej då skapas en M-fil med namnet hej.m och en editor öppnas. Editorn är som ett tomt textblad där man kan man skriva exakt samma sak som vi skrivit tidigare men M-filen kommer sparas så att man kan fortsätta en annan dag. Det man skrivit i kommandofönstret kommer raderas när man stänger ner MATLAB. I figur 4 ser man hur MATLAB ser ut efter att vi skapat en M-fil. M-filen hej.m ligger i en ruta till vänster där alla filer i samma mapp sparas. Sökvägen till den mappen kan man se under huvudpanelen. Mer om M-filer och dess fördelar kan man läsa i kapitel 1.5 som handlar om enkla script i MATLAB. Figur 4: Så här kan MATLAB se ut då man skapat en m-fil och utfört en del kommandon. Resultaten man får från koden i sin M-fil kommer hamna i editorn. T.ex. om man skriver one = 1 i M-filen, kommer MATLAB svara >> one = 1 i editorn.

8 1 INTRODUKTION TILL MATLAB Hjälp Det kommer alltid finnas tillfällen då man inte är helt säker på hur man ska skriva för att MATLAB ska göra som man vill. Det man då kan göra är att använda sig av olika hjälpfunktioner som är inbyggda i MATLAB eller använda internet. Det första och kanske enklaste kommandot man ska prova är kommandot help. Man skriver helt enkelt >> help sqrt och får då fram en kortare text om hur man använder kommandot sqrt, se figur 5. Figur 5: En hjälpande text om sqrt som MATLAB returnerar efter kommandot help sqrt. Om man behöver mer dokumentation om kommandot eller inte är helt säker på vad kommandot heter kan man använda sig av >> doc plot som öppnar ett nytt fönster med dokumentation om kommandot plot, se figur 6. Fördelen med detta sätt är att man längst upp på sidan kan söka efter kommandon och få olika förslag om man inte är helt säker på vad man söker efter.

9 1 INTRODUKTION TILL MATLAB 8 Figur 6: Ett nytt fönster i MATLAB med dokumentation om kommandot plot. Ett tredje alternativ som man kan testa är >> demo matlab då får man upp ett bibliotek med kortare exempel och guider med exempelkod till MATLAB, se figur 7.

10 1 INTRODUKTION TILL MATLAB 9 Figur 7: Inbyggda exempel och guider till MATLAB. Om man inte riktigt vet vad man ska söka på är det såklart alltid enklast att leta på internet, där Google har många svar. En otroligt bra sida är mathworks.se, där man kan hitta väldigt mycket bra exempel och förklaringar som MathWorks, MATLABs skapare, själva skrivit. 1.4 Enkla MATLAB operationer Nu när vi har lärt känna MATLAB lite är det dags att gå vidare. Vi kommer i detta avsnitt gå igenom en del enkla MATLAB operationer som kan vara bra att ha koll på för att kunna skriva mindre program i MATLAB Matematiska funktioner I MATLAB går det att anropa alla de matematiska funktioner som man brukar hitta i en avancerad miniräknare. Nedan, i tabell 1, följer ett par kommandon som är lämpliga att kunna samt deras översättning till matematisk notation. Tabell 1: Matematiska funktioner och hur man skriver dem i MATLAB. MATLAB Matematisk motsvarighet exp(x) e x sin(x),cos(x), tan(x) sin(x), cos(x), tan(x) asin(x),acos(x), atan(x) arcsin(x), arccos(x), arctan(x) log(x), log10(x) sqrt(x) ln(x), log 10 (x) x abs(x) x Det går alltså att beräkna exempelvis 4 med MATLAB genom att skriva

11 1 INTRODUKTION TILL MATLAB 10 >> sqrt(4) Vektorer Begreppet vektorer kommer förklaras tydligare i senare kurser, just nu kan ni tänka på en vektor som en lista med tal. För att skapa en vektor i MATLAB kan man använda sig av klammeroperatorn [ ]. Med den kan man spara flera värden till samma variabel. numbers=[ ] Ett annat väldigt användbart verktyg är kolonoperatorn. Skriver man x=0:2:10 i MATLAB kommer en lista skapas som börjar på 0, har ett avstånd på 2 mellan talen och slutar med 10. >> x=0:2:10 x = När man skapar vektorer är det ibland ovärderligt att snabbt kunna ta reda på längden av den. Längden av en vektor är hur många tal som är sparad i vektorn. Det kan man göra genom att skriva: >> length(x) 6 Vanliga tal är i grund och botten vektorer med längden 1. Att hantera vektorerna som skapats är enkelt. För att plocka fram till exempel det tredje elementet ur en vektor skriver man >> x(3) 4 och för att ändra specifika element ur en vektor skriver man >> numbers(3)=100 numbers = Det går att addera och subtrahera vektorer med andra vektorer med samma längd, men det går inte att multiplicera, upphöja eller dividera. För att göra det måste man sätta en punkt framför räknesymbolen. Genom att skriva en punkt framför operatorn berättar man för MATLAB att man vill utföra operationen elementvis. Om man inte skriver det kommer MATLAB utföra matrisoperationer, vilket förklaras mer ingående i avsnitt Nedan följer två exempel: >> numbers x >> x.* Som man ser har det första talet i x subtraherats från det första talet i numbers, det andra från det andra, osv. Det går också att använda de matematiska funktioner som vi nämnt tidigare på vektorer:

12 1 INTRODUKTION TILL MATLAB 11 >> x=0:2:10 x = >> sqrt(x) Här har vi alltså tagit roten ur vektorn x. Svaret har blivit avrundat vid den fjärde decimalen. Om vi skulle vilja se fler decimaler kan vi skriva >> format long >> sqrt(x) För att byta tillbaka skriver man format short. Det finns flera olika format att välja mellan Logiska uttryck I MATLAB går det att undersöka diverse logiska samband som likheter och olikheter. I tabell 2 finns exempel på logiska operatorer som MATLAB kan hantera. Tabell 2: Logiska uttryck. MATLAB Förklaring >, < Större än, mindre än >=, <= Större/mindre än eller lika med == Lika med = Inte lika med & Logiskt och Logiskt eller Att använda logiska operatorer fungerar som att använda vilket annat räknesätt som helst. Skillnaden är att resultatet antingen blir 0 eller 1, där 0 står för falskt och 1 står för sant. För att exemplifiera följer några olikheter nedan: >> 1<2 1 >> 1>2 0 >> 5<10 & 5>8 0 >> 5<10 5>8 1 Det tredje exemplet returnerar falskt eftersom 5 inte är både mindre än 10 och större än 8. I det fjärde exemplet returneras sant eftersom 5 är mindre än 10. Ett logiskt och innebär att båda villkoren måste vara uppfyllda medans logiskt eller innebär att endast de ena villkoret måste vara uppfyllt. Det går även att använda logiska uttryck på vektorer >> x=0:2:10 x = >> x<=

13 1 INTRODUKTION TILL MATLAB 12 Om man använder logiska uttryck på vektorer returneras flera olika svar eftersom talen jämförs var för sig. De tre första talen i vektorn x är större eller lika med 4 och därför returneras en etta på dessa positioner. 1.5 Enkla script i MATLAB Vi har i kapitel 1.2 sett hur man skapar och öppnar en M-fil. Låt oss nu skrida till verket och skriva vårt första script. Ett script är ett dokument som kör koden rad för rad, precis på samma sätt som om vi hade skrivit rad för rad i kommandofönstret. Men nu skriver vi klart hela koden och kör allt när vi är färdiga. På detta sätt kan vi spara allt vi skriver i ett dokument. Säg att vi vill beräkna arean av ett rätblock, d.v.s. en tegelstensformad geometrisk kropp med sidolängderna 1, 2 och 3 cm. Då kommer vi ha två sidor med arean 1 2, två med arean 1 3 och två med arean 2 3, och totalarean kommer bli summan av dessa, alltså 22 cm 2. Denna beräkning går alldeles utmärkt att utföra i MATLAB genom att skriva a=1; b=2; c=3; area=2*(a*b + a*c + b*c) och spara uträkningen som ett script med namnet rarea1.m. Testkör filen genom att sedan skriva rarea1 i MATLABs kommandoprompt. >> rarea1 area = 22 Ett annat sätt att åstadkomma samma sak är att göra rätblocksarean till en funktion av sidolängderna a, b och c. I MATLAB kan man skriva funktioner med hjälp av M-filer. Variabler som skapas inuti sådana funktioner är lokala och tas automatiskt bort när funktionen avslutas. För att definiera en funktion skapar vi en ny M-fil med samma namn som funktionen vi tänker skriva. Det är viktigt att ha samma namn på funktionen och M-filen annars kommer MATLAB inte att hitta funktionen. Funktioner börjar med kommandot function som utgör ett funktionshuvud som beskriver vilka parametrar funktionen tar och vilka returvärden den ger tillbaka. Funktionen avslutas med kommandot end. Nedan följer samma exempel som tidigare men den här gången är rätblocksarean en funktion, med sidolängderna som inparametrar: function area=rarea2(a,b,c) area=2*(a*b + a*c + b*c); end Testkör funktionen genom att skriva: >>area = rarea2(1,2,3) area = 22 Det är viktigt att man skickar in parametrarna i rätt ordning, i detta fall har vi a = 1, b = 2 och c = 3. Prova också att köra rarea2(1,1,1) som räknar ut arean av en kub med sidolängden 1 cm. Fördelen med funktioner är alltså

14 1 INTRODUKTION TILL MATLAB 13 att man kan skicka in olika parametrar till funktionen. I det här fallet är det sidolängderna. Förklaringar till filen rarea2 Rad 1. Första raden i M-filen ovan deklarerar att en funktion ska skapas med namnet rarea2. Funktionen anropas med tre argument och kommer att returnera värdet på area. I M-filen har dessa namnet a, b och c men när funktionen anropas från MATLAB kan dessa vara vad som helst. Rad 2. Beräkningen av rätblocksarean utförs och resultatet tilldelas namnet area. Det är samma area som förekom i funktionsdeklarationen på rad ett. Detta är det sista som görs i M-filen och det är det värde som area har just nu som kommer att returneras av funktionen. Notera att area bara är ett namn och kan bytas ut mot vilket annat godtagbart namn som helst bara det förekommer både i funktionsdeklarationen på rad ett och på sista raden. Rad 3. Kommandot end avslutar funktionen If, For, While Ibland kan det vara väldigt användbart att kunna upprepa eller sätta något slags villkor på när en slinga kod ska utföras. Därför finns kontrollstrukturerna if, for och while implementerade i MATLAB. Med dessa kan man på ett snabbt och enkelt sätt göra program som inte varit möjligt med en miniräknare. If Om vi skriver if följt av ett logiskt uttryck, kommer koden inramad av if och end att utföras om villkoret uppfylls. Om man önskar kan man lägga till ett else i satsen. Då kommer det efter else att utföras om det logiska uttrycket inte är uppfyllt. Nedan följer ett exempel: if A==5 disp('sant, A = 5'); else disp('falskt, A inte = 5'); end Om A är lika med 5 kommer Sant, A = 5 att skrivas ut. Om A är något helt annat kommer Falskt, A inte = 5 att skrivas ut. For Med en for-loop kan man få kommandoraderna i slingan att upprepas ett önskat antal gånger. Det som sker inom slingan kan varieras med hjälp av en räknare, n i exemplet nedan, vars värde ändras en gång varje varv. for n=1:10 n2=nˆ2; sprintf('%d i kvadrat aer lika med %d',n,n2) end I denna kodsnutt är n först 1 och kvadraten räknas ut till 1. Nästa varv är n lika med 2 och kvadraten räknas ut till 4, osv. Sista gången kommer n vara lika med 10 och kvadraten lika med 100.

15 1 INTRODUKTION TILL MATLAB 14 While Om vi skriver while följt av ett logiskt uttryck, så kommer koden inramad av while och end upprepas så länge det logiska uttrycket är uppfyllt. Nedan följer ett exempel: i=1; s=0; while(s<20) s=s+i i=i+1; end Först är s mindre än 20 och vi går in i loopen. Där ändras s till 1 och variabeln i ökas på till 2. s ändras sedan till 3, 6, 10, 15 och slutligen 21. Loopen avslutas då s är 21 och alltså inte längre mindre än 20, vilket sker då i är lika med Bilder i MATLAB För att kunna analysera och presentera sitt mätdata ordentligt kan det vara bra att visulisera det. MATLAB har ett omfattande plot-kommando till detta ändamål som kommer att introduceras här. Plottar och grafer är ett sätt att visualisera ett förhållandet mellan två mängder av tal genom att sätta ut punkter i ett koordinatsystem som beskriver detta förhållande. För att kunna plotta sina mätvärden måste vi först skapa två listor, vi döper dem till x och y. x=[ ]; y=[ ]; För att sedan plotta dessa skriver vi plot(x,y) och resultatet kan vi se i figur 8 nedan. För att kunna plotta två listor mot varandra på det här sättet måste vektorerna ha samma längd.

16 1 INTRODUKTION TILL MATLAB 15 Figur 8: Listan y plottad mot listan x. Som vi ser i figuren så drar MATLAB automatisk linjer mellan mätpunkterna. För att bara plotta punkterna så skriver vi plot(x,y,'ro') och resultat blir enligt figur 9.

17 1 INTRODUKTION TILL MATLAB 16 Figur 9: Listan y plottad mot listan x som punktvärden. Där o specificerar att mätpunkterna ska visualiseras med en ring och r bestämmer färgen på plotten. Om man vill visualisera mätpunkterna och samtidigt ha linjer mellan dessa så skriver man den sista biten som 'ro '. Använd gärna hjälpfunktionen för fler alternativ om hur man kan ändra utseendet på sin plot. För att göra sina plottar i MATLAB ännu tydligare bör man inkludera titel och axelnamn i sina plottar. Genom att addera raderna nedan utökar vi vårt tidigare exempel: plot(x,y,'ro ') title('titel') xlabel('x axelns namn') ylabel('y axelns namn') Där xlabel namnger den horisontella axeln och ylabel den vertikala. Detta ger oss figur 10 nedan.

18 1 INTRODUKTION TILL MATLAB 17 Figur 10: Figur med titel och namn på axlarna. Ibland så vill man plotta två grafer samtidigt, antingen i samma fönster eller i två separata. För att göra det behöver vi två nya listor, vi döper dessa till f och g. f=[ ]; g=[ ]; För att plotta dem i samma fönster använder vi kommandot hold on: plot(x,y,'ro ') hold on plot(f,g,'gx') title('titel') xlabel('x axelns namn') ylabel('y axelns namn') legend('1:a plottens namn','2:a plottens namn') Funktionen legend() beskriver vad varje kurva representerar som man kan se i figur 11.

19 1 INTRODUKTION TILL MATLAB 18 Figur 11: Figur med två olika grafer plottade i samma fönster tillsammans med en förklarande ruta. Avslutningsvis vill vi nu plotta de två listorna i var sitt fönster, detta görs genom att specificera det som: figure(1) plot(x,y,'ro ') title('titel1') xlabel('x axelns namn') ylabel('y axelns namn') figure(2) plot(f,g,'gx') title('titel2') xlabel('x axelns namn') ylabel('y axelns namn') Detta ger de två figurerna i figur 12.

20 1 INTRODUKTION TILL MATLAB 19 Figur 12: Två olika figurer skapade i samma MATLAB-script. Ett avslutande tips är att MATLAB som standard sparar sina figurer som.fig-filer vilket vissa program inte helt stödjer. Använd hellre de vanligare formaten.jpg eller.png när man sparar sina figurer. 1.7 Regressionsanalys När man gör en statistisk undersökning, det skulle kunna vara t.ex. att man har mätt ett tryck i en gas med avseende på temperaturen eller spänningen över ett motstånd med avseende på strömmen, så vill man att dessa mätvärden ska följa någon exakt matematiskt funktion så att man kan testa sina teorier. Tyvärr är detta sällan fallet, mätvärdena hamnar oftast lite i oordning och man måste göra det bästa av situationen, eller som det också kallas regressionsanalys. Det innebär att man använder olika matematiska hjälpmedel för att anpassa sina mätvärden till just en matematisk funktion så att man kan testa sina teorier Linjäranpassning En vanlig anpassning är en linjär funktion, alltså en funktion på formen y = kx + m. Ett exempel där man använder linjär regression är Hookes lag som beskriver kraften i en fjäder med avseende på förskjutningen från jämviktsläget som F = Kx, där K är fjäderkonstanten och x är förskjutningen. Det finns många sätt att göra detta i MATLAB, ett av dem är att använda funktionen polyfit(x,y). Säg att vi har en mätserie för kraften hos en fjäder, F, mot dess förskjutning, x. För att linjäranpassa dessa värden skriver vi p = polyfit(x,f,1) Vi får då tillbaka en lista innehållande värdena för linjäranpassningen. Vi återfår dessa genom att skriva k=p(1) och m=p(2). I vårt exempel står k för fjäderkonstanten i Hookes lag och m ligger nära 0. För att kunna visualisera vår linjäranpassning använder vi funktionen polyval(p,x) som skapar en lista med värden för linjäranpassningen skapad av polyfit(x,y). Koden för detta skulle kunna se ut som nedan och det resulterar i figur 13. Notera att linjäranpassningen ibland ligger ovanför mätpunkterna och ibland under. F=[ ]; x=[ ];

21 1 INTRODUKTION TILL MATLAB 20 p=polyfit(x,f,1); F lfit=polyval(p,x) plot(x,f,'rx'); hold on plot(x,f lfit) title('hookes lag') xlabel('forskjutning') ylabel('kraft') legend('matdata','linjaranpassning') Figur 13: Mätdata plottat tillsammans med dess linjäranpassning Konfidensintervall Ett konfidensintervall anger det intervall omkring medelvärdet inom vilket det sanna värdet finns med en viss sannolikhet. De vanligaste sannolikhetsnivåerna är 95% och 99%. För detta ändamål måste vi först göra en linjäranpassning som i avsnitt men nu skapar vi även parametern S som innehåller feluppskattningar m.m. [p S]=polyfit(x,F,1); För att skapa konfidensintervallet använder vi funktionen polyconf(p,x,s,alpha). Den skapar samma lista som funktionen polyval(p,x) samt en lista med konfidensintervall för varje punkt. Vilken sannolikhetsnivå man vill ha bestäms av 1 alpha t.ex. alpha=0.05 ger en 95-procentig nivå. Vi utvecklar exemplet i avsnitt med ett 95-procentig konfidensintervall och resultatet kan ses i figur 14. F=[ ];

22 1 INTRODUKTION TILL MATLAB 21 x=[ ]; [p S]=polyfit(x,F,1); [F lfit delta] = polyconf(p,x,s,0.05); plot(x,f,'rx'); hold on plot(x,f lfit) plot(x,f lfit+delta,'r ') plot(x,f lfit delta,'r ') title('hookes lag') xlabel('forskjutning') ylabel('kraft') legend('matdata','linjaranpassning','konfidensintervall') Figur 14: Mätdata plottat tillsammans med dess linjäranpassning och ett 95- procentigt konfidensintervall Polynomanpassning Ibland följer sina mätvärden inte någon rät linje utan de har något mer komplicerat samband. Då kan man använda sig utav ett polynom av högre ordning t.ex. y = a 1 x 3 + a 2 x 2 + a 3 x + a 4 som är ett polynom av ordning 3. För att göra en anpassning av högre ordning gör vi som i avsitt med skillnaden p=polyfit(x,y,n) där n är ordningen på polynomet som man vill anpassa med. I vårt exempel skulle vi sätta n = 3. Det vi får tillbaka från p=polyfit(x,y,n) är värdena på konstanterna som ska stå före varje variabel (a 1, a 2, a 3 och a 4 ovan). Vi hittar dessa genom att skriva: a1=p(1) a2=p(2) a3=p(3)

23 1 INTRODUKTION TILL MATLAB 22.. o.s.v Linjärisering av potensfunktion Ibland vet man inte vilken ordning sitt polynom har och då är det användbart att använda logaritmfunktioner. Säg att vi vill undersöka ett objekts bakomlagda sträcka, s, under fritt fall. Vi har gjort flera mätningar av objektets position efter olika tider t och vi vet att sträckan beskrivs som s = at b där a och b är konstanter. Detta ger att vi kan räkna ut g, tyngdaccelerationen, ur sambandet s = 1 2 g t2. För att lösa ut dessa konstanter börjar vi med att logaritmera funktionerna. s=[ ]; t=[ ]; lns=log(s); lnt=log(t); Här är funktionen log() den naturliga logaritmen. Vi får nu ett uttryck på formen ln(s) = ln(a) + b ln(t). Nu gör vi en linjäranpassning på våra logaritmerade värden som i avsnitt och får ut att våra värden blir: Vi får då alltså ln(a) = 1.63 = a = e b = s = 5.10 t 2 = s = t2 2 Det vill säga att g = 10.2 enligt detta experiment Värdering av resultat Efter att man har gjort sina mätningar och fått sina resultat ska man bestämma osäkerheten i resultaten. Det är viktigt för att det ger ett mått på hur korrekt och tillförlitliga de är. Ett vanligt osäkerhetsmått vid en linjäranpassning är R 2 som visar hur bra sin anpassningen är. Det är ett värde mellan 0 och 1 och ju närmare 1 det är desto bättre är anpassningen. Tyvärr är detta värde lite krånligt att ta fram i MATLAB så vi beskriver hur vi tar fram det utan att lägga för stor vikt vid att förklara nya begrepp. Vi fortsätter kolla på exemplet i avsnitt För att få fram R 2 -värdet så måste vi beräkna s.k. residualer som sparas i variablen Fresid: Fresid=F F lfit; Sedan behöver vi räkna ut summan av residualerna i kvadrat samt summan av mätvärdena i kvadrat. Det sistnämnda gör vi med hjälp av variansen genom kommandot var:

24 1 INTRODUKTION TILL MATLAB 23 SSresid = sum(fresid.ˆ2); SStotal = (length(f) 1)*var(F); Vi finner sedan värdet R 2 genom r sqr = 1 SSresid/SStotal; I vårt exempel får vi r sqr= Ett annat osäkerhetsmått vid linjäranpassning är adj.r 2. Det är alltid mindre än eller lika med R 2 -värdet och ger en mer pålitlig uppskattning av hur bra linjäranpassningen är. Vi skapar den genom rsq adj = 1 SSresid/SStotal * (length(f) 1)/(length(F) length(p)) Om man tyckte att denna del var lite komplicerad kan man vara lugn, det krävs nämligen betydligt mer kött på benen för att förstå allt detta fullt ut. Om man vill läsa mer om R 2 finns det en bra Wikipedia-artikel som heter Coefficient of determination som kan vara värd att kolla igenom för lite fördjupning.

25 2 PROGRAMMERING MED MATLAB 24 2 Programmering med MATLAB Att programmera i MATLAB har många fördelar. För det första är det relativt enkelt att implementera sin kod, men det är också bra för att man kan hantera stora mängder data då MATLABs specialitet är matriser. När man programmerar är det viktigt, oberoende av vilket språk man sitter i, att man förstår problemet innan man kastar sig på datorn för att skriva massa kod. Tänk efter vad det är som ska lösas och dela upp problemet i mindre småproblem. Då kan man lösa ett delproblem i taget och kontinuerligt testa om den delen fungerar innan man går vidare till nästa. För att testa om koden fungerar som man har tänkt sig kan man bland annat använda sig av utskrifter, som man sen tar bort, för att se om variablerna har samma värde som man tänkt sig. Andra bra tips är att kommentera sina koder och att indentera, det gör det lättare både för dig och eventuell hjälp att förstå koden. Fler programmeringstips finns under appendix C Tips och Trix. I det här kapitlet kommer vi avancera till att använda MATLAB för att programmera. Det gör vi genom att först prata mer om vektorer, för att sedan introducera matriser, titta på lite mer avancerade loopar och script samt hur man läser in data till MATLAB. 2.1 Introduktion till vektorer och matriser I introduktionskapitlet beskrevs vektorer som en lista av tal och begrepp som klammeroperatorn och kolonoperatorn introducerades. I det här kapitlet kommer vi tydligare förklara vad en vektor och en matris är, hur man kan skapa dem och hur de fungerar Vektorer i MATLAB Det finns två olika sorters vektorer, radvektorer och kolumnvektorer. Väldigt logiskt så har radvektorn sina tal sparade som en rad och kolumnvektorn som en kolumn. Skillnaden mellan dess sätt att spara sina vektorer är viktigt i linjär algebra för att matematiken ska stämma, mer om det kommer i kapitlet 4 Linjära system med MATLAB. Just nu räcker det att vi vet att det finns olika sorters vektorer. För att skapa en radvektor, med namnet row, skriver vi: row = [ ] row = Man kan även skapa en radvektor genom att sätta ett komma mellan siffrorna: row = [1, 2, 3, 4, 5]; För att skapa en kolumnvektor separerar man siffrorna med semikolon: column = [1; 2; 3; 4; 5] column =

26 2 PROGRAMMERING MED MATLAB Om man råkar skapa en radvektor när man egentligen vill ha en kolumnvektor kan det lätt åtgärdas genom att ta transponatet av radvektorn: row = [ ]; column = row' column = Transponatet av en vektor kan man ta antingen med eller med kommandot transpose. Vektorer i MATLAB indexeras från 1, vilket betyder att om man vill ha ut det första värdet i en vektor skriver man: prime = [2, 3, 5, 7, 11, 13, 17, 19]; prime(1) 2 Om man vill ha ut det sista värdet i en vektor kan man använda sig utav kommandot end: prime(end) 19 När vi har pratat om vektorers index har vi hittills endast använt en siffra i som representerat det i:te talet i vektorn. Men för att kunna skilja på rad- och kolumnvektorer måste man använda sig utav två index. Ett index som motsvarar raden och ett som motsvarar kolumnen. Det tredje talet i en radvektor skrivs alltså row(1,3) vilket betyder att vi vill ha talet som är i första raden och i tredje kolumnen. Det tredje talet i en kolumnvektor hittas genom column(3,1). Det kan tyckas onödigt då row(3) och column(3) kommer returnera samma värde som row(1,3) och column(3,1) men sättet med två index är tydligare och kommer behövas då vi introducerar matriser i kapitel Matriser fungerar litegrann som 2-dimensionella vektorer. En radvektor har alltid 1 som radindex och en kolumnvektor har alltid 1 som kolumnindex. Kolonoperatorn, som vi tidigare i kapitel använt för att skapa vektorer, kan även användas för att ta ut värden ur en vektor: prime(4:end)

27 2 PROGRAMMERING MED MATLAB 26 prime = I ovanstående exempel har vi plockat ut det fjärde elementet till och med det sista genom att använda end. Man kan även ta ut varannat tal i en vektor: prime(1:2:end) prime = På liknande sätt kan man ta ut vart n:te tal genom prime(1:n:end) där n kan vara vilket heltal som helst. Om man vill ändra värden i en vektor kan man också använda sig av kolonoperatorn och end: prime(1:2:end)= 1 prime = En vektor kan skapas på många olika sätt. I kapitel har vi nämnt klammeroperatorn och kolonoperatorn, men MATLAB har även inbyggda kommandon som är väldigt användbara när man lärt sig dem. Bland annat kan man om man vet vilken längd man vill ha på sin vektor skapa en vektor med den längden, antingen bestående av nollor eller ettor med hjälp av kommandona zeros och ones: zeros = zeros(3,1) ones = ones(1,3) I det här exemplet får vi en kolumnvektor zeros bestående av 3 nollor och en radvektor ones bestående av 3 ettor. Om vet vilken storlek sin vektor kommer att ha är det bra att allokera minne genom att först skapa en vektor med nollor eller ettor. Storleken på vektorer har annars en tendens att växa obehindrat i t.ex. loopar, vilket är krävande. Att ändra värdena är enklare än att låta vektorn växa då man lägger till något. Om man vill ha många värden i sin vektor, t.ex. om man behöver lagra en vektor med 100 sekunder kan man använda sig av linspace:

28 2 PROGRAMMERING MED MATLAB 27 seconds = linspace(1,100); Genom att använda linspace på detta sättet skapar man en vektor från 1 till 100 med 100 värden. Vill man ha fler, eller färre, värden i sin vektor kan man ange antalet värden i sin vektor genom att lägga till en inparameter: seconds = linspace(1,100,50); Nu får vi en vektor från 1 till 100 med 50 värden. Detta sätt att skapa en vektor ger ofta punkter på decimalform eftersom intervallet ska delas upp i ett givet antal delintervall. Notera att linspace alltid skapar en radvektor så behöver man en kolumnvektor får man ta transponatet av radvektorn som linspace returnerar. Om man vill skapa en vektor med slumpade tal kan man använda sig av rand för slumpade tal mellan 0 och 1 eller randi för slumpartade heltal där första inparametern representerar maxvärdet. random = rand(1,4) random = random2 = randi(15, 4, 1) random2 = I det övre exemplet får vi en radvektor med 4 slumpade värden mellan 0 och 1. I det undre exemplet får vi en kolumnvektor med 5 slumpade heltal med maxvärdet 15. För att kombinera dessa två funktioner och få slumpade tal på decimalform som är större än ett: random + random2' Matriser i MATLAB I inledningen av detta avsnitt nämnde vi att MATLABs styrka ligger i dess sätt att hantera matriser och i detta delkapitel kommer vi gå igenom vad en matris är, hur vi skapar matriser och vad vi kan göra med dem. En matris är en samling av rad- och kolumnvektorer som bildar ett rutnät av värden. Alla vektorer som bygger upp matrisen måste vara lika långa men radvektorerna behöver nödvändigtvis inte vara lika långa som kolumnvektorerna. Oftast har man 2-dimensionella matriser, alltså som ett schackbräde med värden, men man kan även ha flerdimensionella matriser men det kommer vi inte titta närmare på här.

29 2 PROGRAMMERING MED MATLAB 28 För att skapa en matris gör man på samma sätt som då vi skapade rad- och kolumnvektorer men kombinerat: matrix = [1, 2, 3; 4, 5, 6; 7, 8, 9] matrix = Man kan även skapa en matris genom att sätta ihop radvektorer: row1 = [ ]; row2 = [ ]; matrix = [row1;row2] matrix = Många av de sätt vi nyss lärde oss att använda för att skapa vektorer kan vi även använda då vi vill skapa matriser, så som zeros, ones, rand och randi. Notera att man inte kan använda linspace för att skapa matriser. Precis som tidigare anger vi hur många rader och kolumner som vi vill ha. zeros = zeros(2,3) zeros = Om man vill ha en matris med lika många rader som kolumner behöver man endast ange ett värde: random = rand(3) random = För att ändra ett värde eller plocka ut från matrisen gör man på liknande sätt som för vektorer. Det man måste komma ihåg är att ange både vilken rad och kolumn som man vill använda. matrix = [1, 2, 3; 4, 5, 6; 7, 8, 9] matrix(2,3) 6

30 2 PROGRAMMERING MED MATLAB 29 Om man vill ändra alla värden på en viss rad kan man använda sig av kolonoperatorn. Uttrycket matrix(1,:) betyder första raden, alla kolumner: matrix = [1, 2, 3; 4, 5, 6; 7, 8, 9] matrix(1,:) Man kan även använda sig av end för att ändra vissa värden i en matris. matrix(:,2:end) = Översta raden i ovanstående exempel betyder att på alla rader, från och med andra kolumnen till sista, ska värdet ändras till Vektor- och matrisoperationer När man arbetar med vektorer och matriser är det viktigt att hålla koll på de vektor- och matrisoperationer som finns och skillnaden mellan dem. Som nämndes i introduktionskapitlet, avsnitt 1.4.2, så kan man multiplicera en vektor elementvis med sig själv men det finns även andra sätt som vi kommer gå igenom i detta delkapitel. Både vektorer och matriser kan hantera addition och subtraktion genom att operationen utförs elementvis: matrix1 = [4, 5, 32; 3, 7, 14]; matrix2 = 4*ones(2,3); matrix1 matrix matrix1 + matrix I det övre exemplet har vi t.ex = 28 och i det undre = 36 i den första raden och tredje kolumnen. Man kan även multiplicera, dividera och upphöja vektorer och matriser elementvis:

31 2 PROGRAMMERING MED MATLAB 30 matrix1.*matrix matrix1./matrix matrix1.ˆ Notera punkten framför operationen som symboliserar att operationen utförs elementvis. Det som är viktigt att tänka på när man utför dessa elementvisa operationer är att de vektorer och matriser som används måste ha samma dimensioner, alltså samma antal rader och kolumner, annars kommer MATLAB inte förstå vad den ska göra och ge ett felmeddelande. När man jobbar med matriser i MATLAB kommer man ofta få felmeddelanden, så det gäller att förstå dem när de dyker upp. Exempel på vanliga felmeddelanden och hur man kan åtgärda dem finns i appendix B Vanliga fel. Addition, subtraktion, multiplikation, division och upphöjt på det sätt som nu förklarats kallas för array-operationer och det viktiga med detta sätt är punkten framför operationen som man vill utföra. Den betyder att operationen kommer utföras element för element i vektorn eller matrisen och det är därför viktigt med samma dimension. Nu ska vi gå vidare och introducera ett nytt begrepp, matrisoperationer. Matrisoperationerna skiljer sig från array-operationerna på det sättet att man inte tar multiplikation och division elementvis. Istället följer man de matematiska reglerna som används i linjär algebra. I den här guiden kommer dessa regler förklaras ytterliggare i kapitel 4 Linjära system med MATLAB. Just nu räcker det att vi vet att det finns olika sätt att multiplicera och dividera matriser och att resultaten blir annorlunda. För att matrismultiplicera två matriser krävs det att den första matrisens kolumner ska vara lika många som den andra matrisens rader. Detta kan kännas en aning rörigt så vi tittar på ett exempel: matrix1 = [4,5;7,4;9 0] matrix1 = matrix2 = [3,5,11;7,9,12] matrix2 =

32 2 PROGRAMMERING MED MATLAB matrix1*matrix matrix2*matrix Notera att den nya matrisen som skapas när vi tar matrix1 matrismultiplicerat med matrix2 har fått en ny dimension med 3 rader och 3 kolumner. Tar vi matrismultiplikationen åt andra hållet får vi en matris med 2 rader och 2 kolumner. Ordningen av multiplikationen är alltså av betydelse. Om man vill ta samma matris multiplicerat med sig själv måste vi använda oss av transponat-operatorn för att få dimensionerna att stämma: matrix1 = [4,5;7,4;9 0] matrix1 = matrix1*matrix1' Om detta var svårt att förstå så är det ingen större fara. Man kommer lära sig mycket mer om vektorer och matriser i kursen om linjär algebra. Huvudsaken just nu är att vetskapen om att det finns olika sätt att räkna på då det gäller matriser finns. Det är viktigt att man kontinuerligt, då man programmerar, kontrollerar att resultatet blev som man tänkte sig. Så länge man har koll på det är det lugnt. Vi kan avsluta detta delkapitlen med att reda ut några begrepp. Här har vi pratat om vektorer och matriser men ni har säkert hört talas om arrayer, eller så kommer ni att göra det i framtiden och då kan det vara bra att veta skillnaden. I MATLAB är en vektor en rad eller kolumn med värden. En array är en 2-dimensionell vektor med värden som klarar array-operationer. En matris är också en 2-dimensionell vektor men med matrisoperationer. Skillnaden mellan array-operationer och matrisoperationer är, som vi tidigare nämnt att array-operationerna utförs elementvis medan matrisoperationerna följer de matematiska reglerna i linjär algebra.

33 2 PROGRAMMERING MED MATLAB Mer om loopar Ett väldigt viktigt verktyg när man programmerar är att kunna hantera loopar av olika slag. När man har en översiktlig koll på de olika looparna som finns och hur de fungerar spelar det inte så stor roll i vilket programmeringsspråk som man sitter i. Det enda som skiljer är nämligen syntaxen, alltså hur man skriver koden, och den kan man kolla upp. Som tidigare nämnts är det viktigt att förstå problemet innan man börjar koda och att dela upp problemet i små delproblem. Om man gör det kommer man se att det finns väldigt många delproblem som kan lösas med hjälp av loopar. Vi har tidigare nämnt if, for och while vilket är de tre loopar som är mest grundläggande. Om man lär sig att kombinera dessa på ett bra sätt kan man lösa mycket. En loop inuti en annan loop kallas för nästlade loopar och kan vara mycket effektivt, speciellt när man har med matriser att göra. Ett vanligt exempel på nästlade loopar är nästlade for-loopar. På varje ställe i matrisen area vill vi samla arean av en rektangel med sidan som radens index och höjden som kolumnens index. for i=1:3 for j=1:3 area(i,j) = k; end end area = Den yttersta for-loopen räknar upp matrisens radindex i och den inre räknar upp matrisens kolumnindex j. Först är i lika med 1 och j lika med 1, 2 och 3 innan i ökas till 2, o.s.v. Genom att göra en sån här loop ökar storleken på matrisen för varje varv i loopen. Det man kan göra då för att tjäna datortid är att allokera minne för matrisen med matris = zeros(3). Anledningen till att man skapar en matris med rätt dimensioner men fel element och sedan definierar om elementen så att de stämmer, är att man sparar beräkningstid. Gör man inte en matris i förväg, så kallad förallokering, definierar MATLAB en ny matris för varje iteration, vilket är en betydligt större ansträngning än att bara ändra ett element i matrisen. Ha därför för vana att alltid allokera minne i förväg när det ska skapas stora matriser eller vektorer. Man kan också kombinera de olika looparna med varandra, t.ex. en if utanför en for. Detta kan vara väldigt effektivt som validering av data då man bara vill utföra for-loopen om ett visst villkor är uppfyllt: index = 0; last = 4; if (index > 0) for i=index:last vector(i) = i end end

34 2 PROGRAMMERING MED MATLAB 33 Om index är 0 som i detta fallet går vi aldrig ens in i for-loopen. Om index hade varit 0 och vi inte hade haft if utanför for hade vi fått ett felmeddelande som talar om att vi försöker komma åt index 0, vilket inte existerar i MATLAB: Attempted to access vector(0); index must be a positive integer or logical. MATLAB returnerar felmeddelanden som detta när MATLAB inte förstår vad man menar. Då gäller det att försöka tyda utskrifterna, vilka är mer eller mindre standardiserade. Exempel på vanliga felmeddelanden finns under appendix B Vanliga fel. Att lägga en if-sats utanför en annan loop på detta sätt gör att man kan kontrollera fel som annars kan uppstå, tex undvika att dela med noll, negativa tal på längder o.s.v. I introduktionskapitlet, avsnitt 1.5, nämnde vi if och else men det finns även ett tredje alternativ, elseif. När man bygger en if-sats med många olika alternativ ska man tänka på att ta det vanligaste alternativet först, eftersom om man går in i if-satsen inte kommer gå in i elseif eller else. if kombineras vanligtvis med de logiska operationerna som vi gick igenom i introduktionen, se avsnitt Tänk på att man även kan ha flera olika logiska uttryck i en if. Att kombinera många olika logiska uttryck med if och elseif kan göra programmet effektivare så det är viktigt att tänka igenom vilka alternativ man kan tänka sig få och hur man kan kombinera dem. weather = 1; %1 means sun, 0 means rain temperature = 22; if(weather>0) if(temperature<0) disp('soligt, minusgrader') elseif(temperature==0) disp('soligt, nollgradigt ') elseif(temperature>0 && temperature<21) disp('soligt, plusgrader') else disp('soligt, oever 20 grader') end else disp('regn') end I det här exemplet har vi förutsatt att man endast är intresserad av temperaturen om det är soligt och att det oftare är kallt än varmt. När man bygger en if-sats behöver man inte ha med varken elseif eller else utan ibland behöver man endast en if-rad t.ex. i början av sin kod. I nedanstående exempel vill vi kontrollera att numret vi skickar in till while-loopen är positivt för att kunna räkna ut fakulteten. number = 4; factorial = 1; if number>0 while (number>1) factorial= factorial*number; number = number 1; end end

35 2 PROGRAMMERING MED MATLAB 34 En ny variant som vi inte tidigare nämnt är switch-satsen: mynumber = 1; switch mynumber case 1 disp('negativ etta'); case 0 disp('noll'); case 1 disp('positiv etta'); otherwise disp('annan siffra'); end En switch fungerar som så att man har ett switch-uttryck som antingen är ett nummer eller en textsträng som man sedan evaluerar mot ett case-uttryck. När switch-uttrycket och case-uttrycket överensstämmer utförs raden under. I ovanstående exempel är mynumber 1 och case 1 evalueras och skriver ut Positiv etta. I en switch-sats evalueras endast ett case och satsen avbryts efter blocket är utfört. Om inget av de olika alternativen stämmer körs otherwise vilket kan jämföras med else. Notera att otherwise är valbart precis som else. 2.3 Script i MATLAB I introduktionen, avsnitt 1.5, nämnde vi att ett script är ett dokument i MAT- LAB som kör koden i filen rad för rad. Vi introducerade även funktioner med funktionshuvud bestående av inparametrar och returvärden. I båda dessa fallen använde vi oss av MATLABs M-filer, vilket man ska ha som vana att alltid använda då M-filerna måste sparas för att kunna köras. Med smarta namngivningar kan man därför lätt hålla koll på sina olika koder. Frågan är nu när man ska använda sig utav script och funktioner. Generellt sett ska man skapa funktioner då man inser att man upprepar samma kod flera gånger. T.ex. då man på flera ställen i sin kod räknar ut en area kan man skapa en funktion som gör detta istället och endast anropa funktionen på flera ställen med olika inparametrar. Tänk på att när man har funktioner så skapas lokala variabler som inte senare kan användas. Script ska man som sagt alltid ta för vana att använda sig av om man skriver lite längre kod som man vill spara, ska man endast testa mindre saker kan script vara lite överdrivet. Ett nytt begrepp som vi inte tidigare pratat om är anonyma funktioner. När vi pratar om vanliga funktioner skapar vi funktionen i en extern M-fil och har en annan M-fil med själva huvudprogrammet. Men ibland kan det behövas en mindre funktion, då kan det kännas onödigt att skapa en ny fil bara för det. Den anonyma funktionen skrivs alltså i samma M-fil som huvudprogrammet, förslagsvis samlade på samma ställe. Ett exempel kan vara om man på många ställen vill kvadrera tal: sqr x.ˆ2; Variabeln sqr är ett skapar själva handtaget och berättar att det är en anonym funktion, x:et inom parantesen beskriver att funktionen tar ett x-värde som inparameter. Denna funktion returnerar ett värde för varje inparameter x, så två inparametrar ger två returvärden:

36 2 PROGRAMMERING MED MATLAB 35 number = [2 3]; sqr(number) sqr = 4 9 Man kan även skapa anonyma funktioner med inga eller flera inparametrar. constant 10; constant() + 1 ans = 11 myfunction (3*x + 12*y.ˆ2 x*y); myfunction(3,4) ans = Läsa in data i MATLAB I detta delkapitel ska vi lära oss hur man läser in data till MATLAB. Vad som är viktigt att komma ihåg är att filen man vill läsa in ifrån måste ligga i samma mapp som sin M-fil för att MATLAB ska hitta det. Man kan läsa in många olika filer i MATLAB, t.ex. filer från andra program. Men hur man gör det kommer senare i A Appendix: Rapportskrivning med MATLAB, det vi ska lära oss nu handlar om hur man läser in data från textfiler. Det finns många olika sätt att läsa in data i MATLAB och efter en snabb anblick kan det verka som att alla sätt fungerar exakt likadant. Ofta kan man läsa in en fil på många olika sätt och många har säkert sitt favoritsätt som man alltid använder. Men självklart är inte alla sätt identiska och därför kan det vara bra att titta på några olika så man vet vilka som finns och när dom är bra att använda. Vi böjar med hur man läser in data med hjälp av MATLABs grafiska interface. Det kan man göra på två olika sätt beroende på om man vill läsa in data från en fil eller från ett urklipp. För att importera från en fil klickar man Home Import data, dubbelklickar på filen man vill läsa in ifrån och ett nytt fönster öppnas, se figur 15. Här har vi läst in en textfil med endast siffror där ena kolumnen motsvaras av längder och den andra kolumnen av skostolekar. Man kan välja att läsa in textfilen som vektorer eller en matris. Om man läser in som en matris kommer matrisen ha samma namn som textfilen om man inte själv ändrar det. Om man väljer att läsa in två kolumnvektorer kommer de ha namnen VarName1 och VarName2 som initialnamn men det kan man ändra genom at dubbelklicka på namnet och ändra till t.ex. length och size. När man är redo att importera sin data klickar man på ikonen import längst upp till höger.

37 2 PROGRAMMERING MED MATLAB 36 Figur 15: Det nya fönstret som öppnas i MATLAB då man läser in datafiler. För att importera data från urklippet klickar man på den lilla triangeln i Workspace och klickar sedan klistra in. För att använda denna metod krävs det att det man har kopierat kan tydas av MATLAB. Jämför att kopiera siffersekvensen med four = 4. Om man ska ändra ofta i en textfil men man hela tiden vill läsa in datat för att t.ex. plotta skostorleken mot längden kan det vara bra att läsa in textfilen i ett script. Så länge filen inte byter namn kan man då köra samma program men få olika figurer beroende på hur textfilen senast är sparad. importdata: importdata: Det enklaste sättet att göra detta på är att använda sig utav A = importdata('numbers.txt'); length=a.data(:,1); size=a.data(:,2); Det här sättet är ett väldigt enkelt sätt att läsa in data till en matris om man bara har siffror och vet hur filen är uppbyggd, vilket man väldigt ofta vet då man själv skapat textfilen. Textfilen som vi använt i detta exempel är alltså samma som i tidigare exempel. Ibland kan man ha textfiler med en rad med text ovanför som beskriver vad datapunkterna motsvarar. T.ex. skulle det kunna stå length och size överst i filen. Det man kan göra då för att bara ta ut datapunkterna är att använda sig av delimiterin och headerlinesin som beskriver hur datat är separerat från varandra och på vilken rad man ska börja läsa in datat. filename = 'numbers.txt'; delimiterin = ' '; headerlinesin = 1; A = importdata(filename,delimiterin,headerlinesin); Ovanstående exempel är alltså bra om man har en rad med text ovanför sina datapunkter. load: Ett annat kommando som man kan använda sig av för att läsa in data från filer till en matris är load. Utan textrad överst skriver man:

MATLAB handbok Introduktion

MATLAB handbok Introduktion Department of Physics Umeå University 30 juni 2014 MATLAB handbok Introduktion Marina Wallin Martin Hansson Per Sundholm 1 INTRODUKTION TILL MATLAB 1 1 Introduktion till Matlab Något man som Teknisk fysiker

Läs mer

Beräkningsvetenskap föreläsning 2

Beräkningsvetenskap föreläsning 2 Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa

Läs mer

MMA132: Laboration 1 Introduktion till MATLAB

MMA132: Laboration 1 Introduktion till MATLAB MMA132: Laboration 1 Introduktion till MATLAB De flesta numeriska metoder låter oss få en tillräckligt bra lösning på ett matematiskt problem genom att byta ut komplexa matematiska operationer med kombinationer

Läs mer

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...

MATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och... Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»

Läs mer

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln

Uppgift 1 - programmet, Uppg6.m, visade jag på föreläsning 1. Luftmotståndet på ett objekt som färdas genom luft ges av formeln Matlab-föreläsning (4), 10 september, 015 Innehåll m-filer (script) - fortsättning från föreläsning 1 In- och utmatning Sekvenser, vektorer och matriser Upprepning med for-slingor (inledning) Matlab-script

Läs mer

Introduktion till Matlab

Introduktion till Matlab Introduktion till Matlab Inledande matematik, I1, ht10 1 Inledning Detta är en koncis beskrivning av de viktigaste delarna av Matlab. Till en början är det enkla beräkningar och grafik som intresserar

Läs mer

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde:

Variabler. TANA81: Beräkningar med Matlab. Matriser. I Matlab skapas en variabel genom att man anger dess namn och ger den ett värde: TANA81: Beräkningar med Matlab - Variabler och Matriser - Logiska uttryck och Villkor - Repetitionssatser - Grafik - Funktioner Variabler I Matlab skapas en variabel genom att man anger dess namn och ger

Läs mer

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska

Komponentvisa operationer,.-notation Multiplikation (*), division (/) och upphöj till (ˆ) av vektorer följer vanliga vektoralgebraiska Matlab-föreläsning 3 (4), 17 september, 2015 Innehåll Sekvenser (från förra föreläsningen) Upprepning med for-slingor och while-slingor Villkorssatser med if - then -else - Logik Sekvenser - repetion från

Läs mer

En introduktion till MatLab

En introduktion till MatLab Chalmers tekniska högskola En introduktion till MatLab Gustafsson Gabriel gabgus@student.chalmers.se Johansson Việt Simon simoj@student.chalmers.se Författare: Norell Pontus npontus@student.chalmers.se

Läs mer

Laboration: Grunderna i MATLAB

Laboration: Grunderna i MATLAB Laboration: Grunderna i MATLAB 25 augusti 2005 Grunderna i MATLAB Vad är MATLAB? MATLAB är ett interaktivt program för vetenskapliga beräkningar. Som användare ger du enkla kommandon och MATLAB levererar

Läs mer

MMA132: Laboration 2 Matriser i MATLAB

MMA132: Laboration 2 Matriser i MATLAB MMA132: Laboration 2 Matriser i MATLAB Introduktion I den här labben skall vi lära oss hur man använder matriser och vektorer i MATLAB. Det är rekommerad att du ser till att ha laborationshandledningen

Läs mer

Instruktion för laboration 1

Instruktion för laboration 1 STOCKHOLMS UNIVERSITET MATEMATISKA INSTITUTIONEN Avd. för matematisk statistik MD, ANL, TB (rev. JM, OE) SANNOLIKHETSTEORI I Instruktion för laboration 1 De skriftliga laborationsrapporterna skall vara

Läs mer

MMA132: Laboration 1 & 2 Introduktion till MATLAB

MMA132: Laboration 1 & 2 Introduktion till MATLAB MMA132: Laboration 1 & 2 Introduktion till MATLAB De flesta numeriska metoder låter oss få en tillräckligt bra lösning på ett matematiskt problem genom att byta ut komplexa matematiska operationer med

Läs mer

Användarhandledning Version 1.2

Användarhandledning Version 1.2 Användarhandledning Version 1.2 Innehåll Bakgrund... 2 Börja programmera i Xtat... 3 Allmänna tips... 3 Grunderna... 3 Kommentarer i språket... 4 Variabler... 4 Matematik... 5 Arrayer... 5 på skärmen...

Läs mer

Linjär algebra med tillämpningar, lab 1

Linjär algebra med tillämpningar, lab 1 Linjär algebra med tillämpningar, lab 1 Innehåll Per Jönsson Fakulteten för Teknik och Samhälle, 2013 Uppgifterna i denna laboration täcker kapitel 1-3 i läroboken. Läs igenom motsvarande kapitel. Sitt

Läs mer

TAIU07 Matematiska beräkningar med Matlab

TAIU07 Matematiska beräkningar med Matlab TAIU07 Matematiska beräkningar med Matlab Datorlektion 2. Villkor och Repetition 1 Logiska uttryck Uppgift 1.1 Låt a=3 och b=6 Vad blir resultatet av testerna ab? Uppgift 1.2 Låt a, b,

Läs mer

Laboration: Grunderna i Matlab

Laboration: Grunderna i Matlab Laboration: Grunderna i Matlab Att arbeta i kommandofönstret och enkel grafik Den här delen av laborationen handlar om hur man arbetar med kommandon direkt i Matlabs kommandofönster. Det kan liknas vid

Läs mer

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB

TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson. Introduktion till MATLAB TEKNISKA HÖGSKOLAN Matematik Fredrik Abrahamsson Introduktion till MATLAB Introduktion till MATLAB sid. 2 av 12 Innehåll 1 Vad är MATLAB? 3 1.1 Textens syfte..................................... 3 2 Grundläggande

Läs mer

Introduktion till Matlab

Introduktion till Matlab CTH/GU LABORATION 1 TMV157-2014/2015 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor

Läs mer

Matriser och Inbyggda funktioner i Matlab

Matriser och Inbyggda funktioner i Matlab Matematiska vetenskaper 2010/2011 Matriser och Inbyggda funktioner i Matlab 1 Inledning Vi skall denna vecka se på matriser och funktioner som är inbyggda i Matlab, dels (elementära) matematiska funktioner

Läs mer

Introduktion till MATLAB Föreläsning 1

Introduktion till MATLAB Föreläsning 1 Introduktion till MATLAB Föreläsning 1 FY021G Ingenjörsvetenskap Magnus.Eriksson@miun.se Reviderad 2007-09-23 1 Dagens agenda MATLAB - vad ska det vara bra för? Arrayer, matriser och vektorer Manipulation

Läs mer

Introduktion till Matlab

Introduktion till Matlab CTH/GU STUDIO 1 LMA515b - 2016/2017 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor

Läs mer

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32) Programmeringsteknik och Matlab Övning Dagens program Övningsgrupp 2 (Sal Q22/E2) Johannes Hjorth hjorth@nada.kth.se Rum 458 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d2

Läs mer

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB MAI/Linköpings universitet Fredrik Berntsson Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 9p av totalt 20p Hjälpmedel: MATLAB Redovisning Lös först uppgifterna i Matlab. Då du har en

Läs mer

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB

Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB MAI/Linköpings universitet Fredrik Berntsson Tentamen TANA17 Matematiska beräkningar Provkod: DAT1 Godkänd: 8p av totalt 20p Hjälpmedel: MATLAB Redovisning Lös först uppgifterna i Matlab. Då du har en

Läs mer

Matlabföreläsningen. Lite mer och lite mindre!

Matlabföreläsningen. Lite mer och lite mindre! Inmatning: Här är lite exempel på inmatning i Matlab: >> pi 3.1416 >> format long >> ans 3.141592653589793 Matlabföreläsningen Lite mer och lite mindre! >> format %återställer format (%- tecknet gör att

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Datorlektion 2. Linjär Algebra, Villkor och Logik 1 Linjär Algebra Programsystemet Matlab utvecklades ursprungligen för att underlätta beräkningar från linjär

Läs mer

Introduktion till Matlab

Introduktion till Matlab CTH/GU LABORATION 1 MVE011-2012/2013 Matematiska vetenskaper 1 Inledning Introduktion till Matlab Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på de flesta tekniska högskolor

Läs mer

Introduktion till Matlab

Introduktion till Matlab CTH/GU 2015/2016 Matematiska vetenskaper Introduktion till Matlab 1 Inledning Matlab är både en interaktiv matematikmiljö och ett programspråk, som används på många tekniska högskolor och universitet runt

Läs mer

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI TEKNISKA HÖGSKOLAN I LINKÖPING Matematiska institutionen Beräkningsmatematik/Fredrik Berntsson Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI Tid: 14-18, 14:e Mars, 2017 Provkod: TEN1 Hjälpmedel:

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

Kort om programmering i Matlab

Kort om programmering i Matlab CTH/GU 25/26 Matematiska vetenskaper Kort om programmering i Matlab Inledning Redan första tillfället gjorde ni ett litet program. Ni skrev ett script eller en skriptfil som beräknade summan 5 i 2 = 2

Läs mer

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Innehåll. Vad är MATLAB? Grunderna i MATLAB. Informationsteknologi. Informationsteknologi. Grunderna i MATLAB stefan@it.uu.se Innehåll Vad är MATLAB? Användningsområden MATLAB-miljön Variabler i MATLAB Funktioner i MATLAB Exempel och smakprov: Grafik Beräkningar Bilder GUI Vad är MATLAB? Utvecklat

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Datorlektion 1. Vektorer och Matriser 1 Inledning I denna övning skall du träna på att använda Matlab för enklare beräkningar och grafik. För att lösa uppgifterna

Läs mer

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal??

Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära

Läs mer

Laborationstillfälle 1 Lite mer om Matlab och matematik

Laborationstillfälle 1 Lite mer om Matlab och matematik Laborationstillfälle Lite mer om Matlab och matematik En första introduktion till Matlab har ni fått under kursen i inledande matematik. Vid behov av repetition kan materialet till de övningar som gjordes

Läs mer

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter

Inledande matematik för I1. MVE011 läsperiod Matlab vecka 2 övningsuppgifter Inledande matematik för I1 MVE011 läsperiod 1 010 Matlab vecka övningsuppgifter Linjära ekvationssystem Matlab har många kraftfulla redskap för att hantera matriser och därmed också linjära ekvationssystem.

Läs mer

Matriser och vektorer i Matlab

Matriser och vektorer i Matlab CTH/GU LABORATION 3 TMV206-2013/2014 Matematiska vetenskaper 1 Inledning Matriser och vektorer i Matlab I denna laboration ser vi på hantering och uppbyggnad av matriser samt operationer på matriser En

Läs mer

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat

Platser för att skriva och testa kod online. Workshop om programmering i matematikkurser, version 0.7 senast sparat Cheat sheets Nedan finns referensblad för fyra olika programmeringsspråk, som kan bli aktuella att använda i matematikundervisning. MATLAB är en välkänd programvara för att göra matematiska beräkningar,

Läs mer

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning

TMV166 Linjär algebra för M. Datorlaboration 2: Matrisalgebra och en mekanisk tillämpning MATEMATISKA VETENSKAPER TMV66 07 Chalmers tekniska högskola Datorlaboration Examinator: Tony Stillfjord TMV66 Linjär algebra för M Datorlaboration : Matrisalgebra och en mekanisk tillämpning Allmänt Den

Läs mer

Lab 1, Funktioner, funktionsfiler och grafer.

Lab 1, Funktioner, funktionsfiler och grafer. Lab 1, Funktioner, funktionsfiler och grafer. Starta gärna en dagbok genom att ge kommandot diary lab1. Skriv in alla beräkningar som efterfrågas i uppgifterna i dagboken. Glöm inte diary off om det skrivna

Läs mer

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08

Laboration 2: 1 Syfte. 2 Väntevärde och varians hos en s.v. X med fördelningen F X (x) MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08 LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK MATEMATISK STATISTIK, AK FÖR BYGG, FMS 601, HT-08 Laboration 2: Om väntevärden och fördelningar 1 Syfte I denna laboration skall vi försöka

Läs mer

MATLAB - en kompakt introduktion av Tore Gustafsson

MATLAB - en kompakt introduktion av Tore Gustafsson 6.1.7 1 ÅBO AKADEMI TEKNISKA FAKULTETEN MATLAB - en kompakt introduktion av Tore Gustafsson MATLAB 1 är ett interaktivt programpaket för numeriska beräkningar. Matlab står för matrix laboratory och är

Läs mer

Grunderna i stegkodsprogrammering

Grunderna i stegkodsprogrammering Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer

Läs mer

Datorövning 1 Fördelningar

Datorövning 1 Fördelningar Lunds tekniska högskola Matematikcentrum Matematisk statistik FMSF20: MATEMATISK STATISTIK, ALLMÄN KURS, 7.5HP FÖR E, HT-15 Datorövning 1 Fördelningar I denna datorövning ska du utforska begreppen sannolikhet

Läs mer

Matriser och linjära ekvationssystem

Matriser och linjära ekvationssystem Linjär algebra, I1 2011/2012 Matematiska vetenskaper Matriser och linjära ekvationssystem Matriser En matris är som ni vet ett rektangulärt talschema: a 11 a 1n A = a m1 a mn Matrisen ovan har m rader

Läs mer

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi.

Exempel att testa. Stora problem och m-filer. Grundläggande programmering 4. Informationsteknologi. Informationsteknologi. Grundläggande programmering 4 stefan@it.uu.se - Huvudprogram och underprogram - Egna funktioner - Olika typer av fel - Lite om effektiv programmering Exempel att testa Programmen för några vardagsproblem

Läs mer

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar

KPP053, HT2016 MATLAB, Föreläsning 2. Vektorer Matriser Plotta i 2D Teckensträngar KPP053, HT2016 MATLAB, Föreläsning 2 Vektorer Matriser Plotta i 2D Teckensträngar Vektorer För att skapa vektorn x = [ 0 1 1 2 3 5]: >> x = [0 1 1 2 3 5] x = 0 1 1 2 3 5 För att ändra (eller lägga till)

Läs mer

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1

M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1 M0043M Integralkalkyl och Linjär Algebra, H14, Matlab, Föreläsning 1 Ove Edlund LTU 2014-11-07 Ove Edlund (LTU) M0043M, M1 2014-11-07 1 / 14 Några elementära funktioner i Matlab Exempel exp Beräknar e

Läs mer

Allmänt om Mathematica

Allmänt om Mathematica Allmänt om Mathematica Utvecklades av Wolfram Research (Stephen Wolfram) på 80-talet Programmet finns bl.a. till Windows, Mac OS X, Linux. Finns (åtminstone) installerat i ASA B121 (Stansen), i matematik

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Datorlektion 4. Funktioner 1 Egna Funktioner Uppgift 1.1 En funktion f(x) ges av uttrycket 0, x 0, f(x)= sin(x), 0 < x π 2, 1, x > π 2 a) Skriv en Matlab funktion

Läs mer

TANA17 Matematiska beräkningar med Matlab

TANA17 Matematiska beräkningar med Matlab TANA17 Matematiska beräkningar med Matlab Datorlektion 3. Repetitionssatser och Programmering 1 Introduktion Denna övning syftar till att träna programmering med repetitionssatser och villkorssatser. Undvik

Läs mer

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI

Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI TEKNISKA HÖGSKOLAN I LINKÖPING Matematiska institutionen Beräkningsmatematik/Fredrik Berntsson Tentamen TAIU07 Matematiska beräkningar med MATLAB för MI Tid: 14-18, 22 Mars, 2016 Provkod: TEN1 Hjälpmedel:

Läs mer

Funktioner och grafritning i Matlab

Funktioner och grafritning i Matlab CTH/GU LABORATION 3 MVE11-212/213 Matematiska vetenskaper 1 Inledning Funktioner och grafritning i Matlab Först skall vi se lite på (elementära) matematiska funktioner i Matlab, som sinus och cosinus.

Läs mer

Laboration 0: Del 2. Benjamin Kjellson Introduktion till matriser, vektorer, och ekvationssystem

Laboration 0: Del 2. Benjamin Kjellson Introduktion till matriser, vektorer, och ekvationssystem Laboration 0: Del 2 Benjamin Kjellson 2016 03 21 Introduktion till matriser, vektorer, och ekvationssystem I den här filen får ni en kort introduktion till hur man hanterar och räknar med matriser i R,

Läs mer

Visual Basic, en snabbgenomgång

Visual Basic, en snabbgenomgång Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika

Läs mer

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08

Laboration 5: Regressionsanalys. 1 Förberedelseuppgifter. 2 Enkel linjär regression DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08 LUNDS TEKNISKA HÖGSKOLA MATEMATIKCENTRUM MATEMATISK STATISTIK Laboration 5: Regressionsanalys DATORLABORATION 5 MATEMATISK STATISTIK FÖR I, FMS 012, HT-08 Syftet med den här laborationen är att du skall

Läs mer

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while

Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while. Från labben: if, for och while Programmering Beräkningsvetenskap I/KF n Det finns tre grundläggande strukturer i programmering, s k kontrollstrukturer Alternativ, if if logiskt uttryck if logiskt uttryck 1 elseif logiskt uttryck 2 :

Läs mer

Programmeringsteknik med C och Matlab

Programmeringsteknik med C och Matlab Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga

Läs mer

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp,

Tentamen i Beräkningsvetenskap I och KF, 5.0 hp, Uppsala universitet Institutionen för informationsteknologi Avdelningen för beräkningsvetenskap Tentamen i Beräkningsvetenskap I och KF, 5.0 hp, 2015-12-17 Skrivtid: 14 00 17 00 (OBS! Tre timmars skrivtid!)

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Magnus Oskarsson Matematikcentrum Lunds Universitet Matematisk Modellering p.1/34 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

i LabVIEW. Några programmeringstekniska grundbegrepp

i LabVIEW. Några programmeringstekniska grundbegrepp Institutionen för elektroteknik Några programmeringstekniska grundbegrepp 1999-02-16 Inledning Inom datorprogrammering förekommer ett antal grundbegrepp som är i stort sett likadana oberoende om vi talar

Läs mer

Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3

Börja programmera. Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner. Läs inte avsnitt 4.2.3 Börja programmera Kapitel 4 i kompendiet Jämförande uttryck Villkorssatser Loopar (slingor) Funktioner Läs inte avsnitt 4.2.3 2010-09-23 Datorlära, fysikexperiment - del 4 1 Jämförande uttryck 2010-09-23

Läs mer

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program

Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i

Läs mer

JavaScript del 3 If, Operatorer och Confirm

JavaScript del 3 If, Operatorer och Confirm JavaScript del 3 If, Operatorer och Confirm Under förra uppgiften så kollade vi på hur användaren kan ge oss information via promt(), vi använde den informationen både för att skriva ut den och för att

Läs mer

TMV156/TMV155E Inledande matematik E, 2009

TMV156/TMV155E Inledande matematik E, 2009 TMV156/TMV155E Inledande matematik E, 2009 DATORÖVNING 2 PÅ VÄG MOT PROGRAMMERING Instruktioner Skapa en ny filkatalog ( directory ) Lab2 för denna övning. Gör alltid uppgifterna i script-filer eller funktionsfiler.

Läs mer

Matriser. Vektorer. Forts. Grunderna i MATLAB. Informationsteknologi. Informationsteknologi.

Matriser. Vektorer. Forts. Grunderna i MATLAB. Informationsteknologi. Informationsteknologi. Forts. Grunderna i MATLAB eva@it.uu.se Matriser Matrisen är den grundläggande datatypen. En tvådimensionell matris är en tabell med rader och kolonner. En matris med m rader och n kolonner har storleken

Läs mer

MATLAB övningar, del1 Inledande Matematik

MATLAB övningar, del1 Inledande Matematik MATLAB övningar, del1 Inledande Matematik Övningarna på de två första sidorna är avsedda att ge Dig en bild av hur miljön ser ut när Du arbetar med MATLAB. På de följande sidorna följer uppgifter som behandlar

Läs mer

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php

Alla filer som bearbetar PHP script ska avslutas med ändelsen.php, exempelvis ska en indexsida till en hemsida heta index.php Introlektion PHP är ett av de enklare språken att lära sig just pga. dess dynamiska struktur. Det används för att bygga upp båda stora och mindre system. Några vanliga system som använder sig av PHP är

Läs mer

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 3: MULTIPEL REGRESSION.

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 3: MULTIPEL REGRESSION. MATEMATISKA INSTITUTIONEN Tillämpad statistisk analys, GN STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB 2011-04-13 DATORLABORATION 3: MULTIPEL REGRESSION. Under Instruktioner och data på

Läs mer

Matematisk Modellering

Matematisk Modellering Matematisk Modellering Föreläsning 1 Anders Heyden Matematikcentrum Lunds Universitet Matematisk Modellering p.1/37 Denna föreläsning (läsvecka 1) Vad handlar kursen om, mål, kurskrav, ide. Matematisk

Läs mer

Värmedistribution i plåt

Värmedistribution i plåt Sid 1 (6) Värmedistribution i plåt Introduktion Om vi med konstant temperatur värmer kanterna på en jämntjock plåt så kommer värmen att sprida sig och temperaturen i plåten så småningom stabilisera sig.

Läs mer

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg

Tema: Pythagoras sats. Linnéa Utterström & Malin Öberg Tema: Pythagoras sats Linnéa Utterström & Malin Öberg Innehåll: Introduktion till Pythagoras sats! 3 Pythagoras sats! 4 Variabler! 5 Potenser! 5 Att komma tillbaka till ursprunget! 7 Vi bevisar Pythagoras

Läs mer

Introduktion till Matlab Föreläsning 2

Introduktion till Matlab Föreläsning 2 Introduktion till Matlab Föreläsning 2 FY021G Ingenjörsvetenskap Magnus.Eriksson@miun.se Reviderad 2007-09-23 1 Examination En enkel dugga (kort prov, ca 20 minuter) inleder labbtillfället Duggans uppgifter

Läs mer

Kom igång med Stata. Introduktion

Kom igång med Stata. Introduktion Kom igång med Stata Introduktion Stata är det vanligaste statistikprogrammet bland de på institutionen som bedriver mycket kvantitativ forskning. Det är relativt enkelt att lära sig, samtidigt som det

Läs mer

Grafik och Egna funktioner i Matlab

Grafik och Egna funktioner i Matlab Grafik och Egna funktioner i Matlab Analys och Linjär Algebra, del A, K1/Kf1/Bt1, ht11 Moore: 5.1-5.2 och 6.1.1-6.1.3 1 Inledning Vi fortsätter med läroboken Matlab for Engineers av Holly Moore. Först

Läs mer

TSRT04: Introduktionskurs i Matlab Datorlektion 2

TSRT04: Introduktionskurs i Matlab Datorlektion 2 TSRT04: Introduktionskurs i Matlab Datorlektion 2 Version: 20 mars 2015 Den här datorlektionen handlar mestadels om programmering i MATLAB. De mest grundläggande programmeringsbegreppen introduceras, och

Läs mer

Linjär algebra med MATLAB

Linjär algebra med MATLAB INGENJÖRSHÖGSKOLAN Matematik Fredrik Abrahamsson, Anders Andersson Innehåll Linjär algebra med MATLAB 1 Grundläggande begrepp 1 1.1 Introduktion...................................... 1 1.2 Genomförande

Läs mer

Linjära ekvationssystem i Matlab

Linjära ekvationssystem i Matlab CTH/GU LABORATION 2 MVE11-212/213 Matematiska vetenskaper Linjära ekvationssystem i Matlab 1 Inledning Först skall vi se lite på matriser, vilket är den grundläggande datatypen i Matlab, sedan skall vi

Läs mer

Övningar till datorintroduktion

Övningar till datorintroduktion Institutionen för Fysik Umeå Universitet Ylva Lindgren Sammanfattning En samling uppgifter att göra i MATLAB, vilka ska utföras enskilt eller i grupp om två. Datorintroduktion Handledare: (it@tekniskfysik.se)

Läs mer

Laboration 3. Funktioner, vektorer, integraler och felskattning

Laboration 3. Funktioner, vektorer, integraler och felskattning 1 SF1520 K2 HT2014 NA 21 december 2015 Laboration 3 Funktioner, vektorer, integraler och felskattning Efter den här laborationen skall du kunna använda och skriva egna funktioner med flera in- och utparametrar,

Läs mer

Laboration 1. Utgåva 1 Gäller från

Laboration 1. Utgåva 1 Gäller från Programering SPO2 Repetition från grundläggande programmering I denna laboration ska vi titta närmare på aritmetiska operatorer, typkonvertering, in- och utmatning av text samt if- och switch-satser. Tänk

Läs mer

Logik och kontrollstrukturer

Logik och kontrollstrukturer Logik och kontrollstrukturer Flödet av instruktioner i ett programmeringsspråk bygger vi upp med hjälp av dess kontrollstrukturer. I C har vi exemplen if, if else, while, do while. Dessutom finns switch

Läs mer

Introduktion till MATLAB

Introduktion till MATLAB Introduktion till MATLAB Hampus Malmberg Jesper Pedersen Sven Jacobsson 4 september 2012 Förord Detta dokument behandlar grundläggande användning av MATLAB för att lösa matematiska problem och skall ge

Läs mer

1.1 MATLABs kommandon för matriser

1.1 MATLABs kommandon för matriser MATLABs kommandon för matriser Det finns en mängd kommandon för att hantera vektorer, matriser och linjära ekvationssystem Vi ger här en kort sammanfattning av dessa kommandon För en mera detaljerad diskussion

Läs mer

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden

NUMPROG, 2D1212, vt Föreläsning 1, Numme-delen. Linjära ekvationssystem Interpolation, Minstakvadratmetoden NUMPROG, D, vt 006 Föreläsning, Numme-delen Linjära ekvationssystem Interpolation, Minstakvadratmetoden En av de vanligaste numeriska beräkningar som görs i ingenjörsmässiga tillämpningar är att lösa ett

Läs mer

Kort om mätosäkerhet

Kort om mätosäkerhet Kort om mätosäkerhet Henrik Åkerstedt 14 oktober 2014 Introduktion När man gör en mätning, oavsett hur noggrann man är, så får man inte exakt rätt värde. Alla mätningar har en viss osäkerhet. Detta kan

Läs mer

Programmering i Matlab

Programmering i Matlab CTH/GU 2/22 Matematiska vetenskaper Inledning Programmering i Matlab Redan i den första introduktionen var det ett par enkla programmeringsexempel. Ni skrev ett script eller skriptfil som beräknade summan

Läs mer

Datorlaboration :: 1 Problembeskrivning ::

Datorlaboration :: 1 Problembeskrivning :: Datorlaboration :: Ett hyrbilsföretags problem Laborationen går ut på att lösa Labbuppgift 1 till 5. Laborationen redovisas individuellt genom att skicka laborationens Mathematicafil till Mikael Forsberg

Läs mer

Regression med Genetiska Algoritmer

Regression med Genetiska Algoritmer Regression med Genetiska Algoritmer Projektarbete, Artificiell intelligens, 729G43 Jimmy Eriksson, jimer336 770529-5991 2014 Inledning Hur många kramar finns det i världen givet? Att kunna estimera givet

Läs mer

jsp?d=&a=827474&sb2231i0=1_

jsp?d=&a=827474&sb2231i0=1_ Ingenjörsrollen Från DNs kultursidor http://www.dn.se/dnet/jsp/polopoly. jsp?d=&a=827474&sb2231i0=1_827 474 Jag läste till en examen i teknisk fysik på KTH för att jag trodde att matematiken och siffrorna

Läs mer

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

Läs mer

Introduktion till MATLAB

Introduktion till MATLAB Introduktion till MATLAB Om laborationen Övningarna går ut på att bekanta sig med MATLAB och se hur man löser olika typer av problem. Arbetet är självständigt. Hoppa över sådant ni tycker verkar för lätt

Läs mer

Dagens föreläsning (F15)

Dagens föreläsning (F15) Dagens föreläsning (F15) Problemlösning med datorer Carl-Mikael Zetterling bellman@kth.se KP2+EKM http://www.ict.kth.se/courses/2b1116/ 1 Innehåll Programmering i Matlab kap 5 EKM Mer om labben bla Deluppgift

Läs mer

Introduktionskurs i MATLAB (TSRT04)

Introduktionskurs i MATLAB (TSRT04) HT1 2015 Division of Communication Systems Department of Electrical Engineering (ISY) Linköping University, Sweden www.commsys.isy.liu.se/en/student/kurser/tsrt04 Om kursen Grunderna i MATLAB Vektorer

Läs mer

MATLAB. En kort praktisk introduktion. Olof Hultin FAFA Omarbetad efter original av Henrik Persson

MATLAB. En kort praktisk introduktion. Olof Hultin FAFA Omarbetad efter original av Henrik Persson MATLAB En kort praktisk introduktion Olof Hultin olof.hultin@ftf.lth.se Omarbetad efter original av Henrik Persson FAFA10 2014-11-06 Dagens föreläsning K404: Kort introduktion till MATLAB - ca 40 min H212:

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer