Book MatLab and Stats

Embed Size (px)

Citation preview

  • 7/24/2019 Book MatLab and Stats

    1/58

    Grundlggende

    Matlab ogdataanalyse

  • 7/24/2019 Book MatLab and Stats

    2/58

    1

    Forord

    Disse noter er skrevet i forbindelse med mit speciale ved Kbenhavns Universitet, som professor MSO Ian

    Bearden har vejledt.Grunden til, at jeghar skrevet disse noter er min egen personlige frustration, da jeg selv i 2009 pbegynd-

    te mit fysikstudie. Frustrationen ligger i, at vi allerede ved frste laboratorie-gang skulle anvende grundlg-gende usikkerhedsberegninger, hvilket til dags dato stadig ikke er omfattet pensum i gymnasiet. Endvidereskulle man, uden den helt store undervisning i det, benytte CAS-vrktjet Matlab. Nu, fire et halvt r efter,vil jeg med mit speciale - blandt andet - rette op p dette ved at skrive disse noter omkring, hvordan mangrundlggende benytter Matlab, og anvender statistik til at foretage usikkerhedsberegninger i forbindelsemed fysikeksperimenter - alts grundlggende dataanalyse.

    For at det hele ikke skal vre en for stor mundfuld er indholdet kun basalt, men dkker de emner,som skal benyttes i forbindelse med laboratorie-gangene til kurserne Indledende mekanik og relativitetste-ori (Mek1)og Videregende klassisk mekanik (Mek2)- og mere til. Endvidere er anvendeligheden af noterne

    ikke kun begrnset til de to frnvnte kurser, da det er en del af kurset Kvantemekanik 1 (Kvant1)1 at fo-retage numeriske beregninger i Matlab af den tidsuafhngige Schrdinger-ligning. Dog vil disse noter ikkevre nok, men der skal suppleres med hndtering af flerdimensionelle arrays (matricer).

    Det skal p det kraftigste understreges, at det ikkeer nok blot at lse noterne og derved forvente, at man nukan stoffet! Mden I lrer at benytte Matlab og hndtere usikkerhedsberegninger p er ganske simpelt vedat bruge det i forbindelse med fysikeksperimenter - alts det er erfaringen,svel som jeres eget engagement,der p sigt uddanner jer! Derfor skal noterne her ses som vrende et relativt letlseligt opslagsvrk.

    Noterne vil i kapitel 1 vise grundlggende funktioner/kommandoer i Matlab, og kapitel 2 fortsttermed hvordan man grafisk fremstiller sine data i plots. I kapitel 3 introduceres statistik, hvilket er en ndven-dighed, da det skal benyttes til at snakke om usikkerheder efterflgende i kapitlet. Efterflgende vises det,

    hvordan man foretager fitting af en ret linje til sine data. I alle kapitler er der vist eksempler p anvendelseaf stoffet (formler, kommandoer etc.), som gennemgs. Eksemplerne er forsgt at vre s virkelighedsnresom muligt.

    Vi kan ikke komme uden om, at vi i de naturvidenskabelige fag ikke kommer srlig langt, hvis vi kommertil kort p den matematiske front. Undervejs kan det vre, at I i noterne stder p matematiske begreber ogsymboler, som I ikke er bekendt med. Begreberne vil hjst sandsynligt vre betydningen af-symbolet ogbegrebet partiel differentiering, da de ikke er omfattet af gymnasiepensumet. Disse matematiske begreberbliver I naturligvis undervist I i forbindelse med introduktionskurset i matematik, som I flger sidelbendemedMek1. Men om I har lrt begreberne i kurset nr I gr i gang med disse noter er uvist, og derfor er debasalt beskrevet i appendiks A.

    Jeg vil afslutte forordet med lidt reklame for nogle kurser, som jeg mener har stor relevans for at kunneblive en virkelig god og reflekterende eksperimental fysiker, samt et godt rd:

    EKSPERIMENTAL FYS IK (EF)2:Jeg fulgte dette bachelorkursus i skoleret 2010-11. Underviseren varlektor Kim Lefmann. Kursets titel afspejler direkte, hvad det omhandler - nemlig eksperimentel fysik.I vil i kurset skulle trkke p jeres - til den tid - opnede erfaring i laboratoriet, og selv tage styrin-gen for hvordan i udfrer et forsg som efterviser en konkret teori. Undervejs vil der blive afholdtforelsninger omhandlende statistiske fordelinger og begreber, som senere knyttes sammen til usik-kerhedsberegninger i forbindelse med eksperimenter. Endvidere har kurset ogs til forml at styrke

    jeres evne til at skrive rapporter og artikler. Det var i forbindelse med dette kursus jeg flte, at jeg fiket rigtig godt overblik omkring statistik i forbindelse med eksperimenter.

    1Se

    2Se

    http://kurser.ku.dk/course/nfya09025u/2013-2014http://kurser.ku.dk/course/nfyb10013u/2013-2014
  • 7/24/2019 Book MatLab and Stats

    3/58

    2 FORORD

    ANVENDT STATISTIK: FRA DATA TIL RESULTATER3: Kurset her er et kandidatkursus undervist af lektorTroels Christian Petersen. Dette kursus fulgte jeg i skoleret 2012-13. Indholdet af kurset er ganskeenkelt, hvordan man benytter statistik til mange - nogle gange de mest mrkelige - ting. Kurset byggerfor det meste oven p de begreber man lrte omkring i EF, men har fokus p anvendelse. Derfor ergraden af bevisfrelse stort set lig nul. Som standard benytter kurser ikke Matlab, men ROOT somer det program benyttet og udviklet af fysikerne ved LHC i CERN. Ogs dette kursus vil jeg varmtanbefale, da det netop har fokus for anvendelse af statistik i forbindelse med fysikeksperimenter svelsom andre grene af naturvidenskaben og diverse erhverv.

    ET GODT RD: Hvis I ikke allerede har tilegnet jer en basal anvendelse i LATEX s er det bare med atkomme i gang, for Word er dd! Dette faktum glder stort set inden for alle grene af naturviden-skaben. Der benyttes s mange matematiske og andre symboler, som vil tage en evighed af skriveind med Words equation editor. Standarden er LATEX , og benyttes til indskrivning af videnskabeli-ge artikler p et globalt plan4. Fler man det er for uoverskueligt, at skulle i gang med selv udbydesder et LATEX kursus i mellemugen mellem blok 1 og 2. Jeg har ikke selv taget kurset, men jeg har kun

    hrt gode ting om kurset fra mine medstuderende. Har I allerede nu fet blod p tanden til at g igang med det selv kan jeg anbefale bogen The Not So Short Introduction to LATEX. Bogen kan findes p .

    Allan Finnich10. september 2013

    3Se

    4Dissenoter er skrevet med LATEX . Men kompleksiteten af design og layout kan ikke laves i LATEX med mindre man har erfaring;fem r for at vre helt prcis. S tlmodighed skal udvises.

    http://kurser.ku.dk/course/nfyk13011u/2013-2014http://tobi.oetiker.ch/lshort/lshort.pdf
  • 7/24/2019 Book MatLab and Stats

    4/58

    Indholdsfortegnelse

    Side

    1 Basic Matlab 4

    1.1 Matlabs brugerflade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

    1.2 God programmeringspraksis . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.3 Grundlggende brug af Matlab . . . . . . . . . . . . . . . . . . . . . . . . 71.4 Klausuler og lkker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.5 Funktioner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    2 Grafisk fremstilling af data 20

    2.1 At plotte sine data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2 Styling af plots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.3 Flere plots i det samme plot. . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.4 Legends i plots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262.5 Flere plots separat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.6 Scatter plots. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    3 Grundlggende dataanalyse 32

    3.1 Middelvrdi og spredning . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.2 Histogrammer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.3 Normalfordelingen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    3.4 Usikkerheder. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.5 Fitting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 463.6 Indlsning af data fra fil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    A Matematisk appendix 53

    A.1 -symbolet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54A.2 Partial differentiering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55

    Litteratur 57

    3

  • 7/24/2019 Book MatLab and Stats

    5/58

    1KapiteloversigtBasic Matlab

    I dette kapitel skal vi tage de frste skridttil at blive bekvemte med Matlab. Frstser vi hvordan Matlabs brugerfade serud. Herefter betragter vi, hvad jeg menerer god programmeringspraksis, og hvor-for dette er vigtigt. Efterflgende ser vip basale programmeringsbegreber her-

    under kommantarer, variabler og arrays,og i samme ndedrag vises det hvordanman laver scripts. Klausuler og lkkerintroduceres som det nste, og til sidstser,vi hvordan man i Matlab laver sinehelt egne funktioner. Der gives eksemplerp simple og avancerede funktioner.

  • 7/24/2019 Book MatLab and Stats

    6/58

    5

    Matlabs brugerflade1.1

    Inden vi kommer i gang med at se, hvordan man benytter Matlab skal vi lige se hvordan brugerfladen fun-gerer helt grundlggende.

    Frste gang du bner Matlab vil din skrm se omtrent ud som i vist i figur 1.1.

    FIGUR1.1 NR DU BN ER MATL AB FO R F RSTE GA NG VI L DU SE OMT REN T DET SA MME SO M V IS T I FIG UR EN . 1.CURRENTFOLDER, 2. COMMANDWINDOW, 3. WORKSPACE OG4. COMMANDHISTORY.

    1. CURRENTFOLDER: Dette vindue viser hvad der ligger i biblioteket som stien henviser til nstverst p

    skrmen. De filer, som ikke umiddelbart kan bnes i Matlab vil fremst med en lavere opacitet/vrefadet ud.

    2. COMMANDWINDOW: I dette vindue gives input i form af kommandoer, og det er ogs her Matlabviser output. I venstre side af vinduet vil du se symbolet

    , hvilket kaldes for prompten. Som et

    eksempel kan vi bede Matlab om at udregne det simple regnestykke 1+2. Hertil skal vi blot ud forprompten skrive

    og trykke

    . Command vinduet vil nu se ud som i kodeblok1.1.

    1

    2

    3

    KODEBLOK1.1 UDREGNING AF DET SIMPLE REGNESTYKKE1+2I COMMANDWINDOW.

    Outputtet er , hvilket er Matlabs mde at give resultatet p. er en forkortelse afanswer,hvilket betydersvar. I tilfldet af, at man ikke nsker at se outputtet kan blot for skrive et semikolon.Se kodeblok1.2.

    1

    KODEBLOK1.2 UDREGNING AF DET SIMPLE REGNESTYKKE1+2, HVOR MAN IKKE NSKER AT SEOUTPUTTET. D E VIL SIGE ATMATLA B I KK E V IL OU TPUTT E .

    nsker man at rydde op i Command vinduet benyttes kommandoen

    . Derved vil du se, at altoutput nu er vk.

  • 7/24/2019 Book MatLab and Stats

    7/58

    6 KAPIT EL 1. BAS IC MATL AB

    3. WORKSPACE: Workspace er helt prcist en oversigt over, hvad der ligger i hukommelsen. Eksempel-vis, efter vi frhen udregnede

    er der nu dukket en linje op i workspace vinduet. I kolonnenName

    str der nu

    og i value . Dette skyldes, at resultatet af udregningen har Matlab automatisk lagt i

    en variabel ved navn , som netop indeholder tallet . S hvis du p nuvrende tidspunkt skriver

    vil Matlab outputte det, som ligger i variablen - nemlig . Foretager du nu i stedet udregningen

    af regnestykket

    vil du bemrke, at

    -variablen har nu ndret sig til . Helt prcist indehol-

    der -variablen resultatet af den sidst udfrte kommando. Vi kommer lidt senere til at hre mereomkring, hvad en variabel er.

    4. COMMANDH ISTORY: Matlab holder styr p, hvornr du har udfrt hvilke kommandoer. Denne over-sigt over udfrte kommandoer kan du se i Command History-vinduet. Dette vindue er isr nyttig hvisdu skal foretage et eller andet, som du mske ikke kan huske kommandoen p. Dog ved du, at du pet eller andet tidspunkt for nyligt har brugt den, s kan du finde den i Command History-vinduet.nsker du at udfre kommandoen igen kan du dobbeltklikke p den i Command History-vinduet og

    Matlab vil eksekvere den igen.

    God programmeringspraksis1.2

    Nr man sidder og programmerer uanset om det er i Matlab eller ej - kan man hurtigt miste overblikket.Dette glder isr hvis det man gerne vil opn er mere kompliceret rent kodemssigt. Hvordan man bedstbevarer overblikket er individuel. Men personligt flger jeg et bestemt regelst, som hjlper mig til at be-vare overblikket langt hen ad vejen.

    KOMMENTARER: Underkend aldrig vrdien i at skrive kommentarer alle steder i koden. Hvis man kort skri-ver en kommentar til hvad den efterflgende del af koden gr er dette en fordel, da man efter efter noget tid,eksempelvis et r eller to, kan bne koden og via kommentarene kan se, hvad koden gr.

    OPRET SCRIPTS: Nr udfrelser af mange kommandoer skal til for, at resultatet kan opns er indtastningi Command Window p ingen mde optimalt! Derfor er det langt mere hensigtsmssig, at lave skaldtescripts. Nr scriptets kres eksekveres al dets indhold.

    GEM OFTE!: Jeg kan ikke understrege dette ofte nok:gem ofte!Gr det til en vane at hver gang I minimererMatlab, at trykke

    eller

    alt efter om det er en Windows eller MacOS platform. Bemrk,

    at betyder, at -tasten skal holdes nede samtidig med at der trykkes p . Det samme er gl-dende for

    . Genvejstasten til at gemme, hvis platformen er Linux er jeg ret sikker p er den samme

    som i Windows.

    GEM FLERE VERSIONER AF SCRIPTS: Har I en fungerende kode/script, men skal ndre i den fordi det skaloptimeres eller andet, s husk at gemme det fungerende script, som et andet filnavn indender foretagesndringer! I kan risikere, at efter ndringerne er foretaget, at koden slet ikke virker mere, og det er ekstremtsvrt at holde styr p hvad det nu var man ndrede. Derfor gem den fungerende kode som eksempelvis detoprindelige filnavn, men vedhft

    . Eksempelvis

    . For en god ordens skyld s

    hold dig til det engelske alfabet nr du navngiver dine filer.

    Disse tre simple regler har personligt hjulpet mig rigtig meget, og som udgangspunkt kan de mske ogsvirke for jer. Lad os derfor fremhve regelsttet.

  • 7/24/2019 Book MatLab and Stats

    8/58

    1.3. GRUNDLGGENDE BRUG AFMATL AB 7

    Skriv koden i scripts. Lav kommentarer i scriptet. GEM OFTE! / (Windows/MacOS). Gem et backup af den fungerende script, hvis der skal foretages radi-

    kale ndringer eller gre tingene p en anden mde.

    God programmeringspraksis

    Som tiden skrider frem, og I bliver mere vant til at programmere vil I begynde, at danne jeres helt egetregelst. Mske fordi de frnvnte ikke virker for jer eller af andre rsager. Men dette regelst er et godtsted at starte.

    Grundlggende brug af Matlab1.3

    Vi kommer her til at se hvordan man programmerer i Matlab gennem en rkke eksempler. Frst kigger vip hvordan man laver kommentarer i sin kode, og herefter kigger vi p de mest gngse lkker og klausuler.

    Oprettelse af scripts

    Inden vi opretter vores frste script skal vi frst have oprettet et bibliotek p computerens harddisk og bede

    Matlab om kun at kigge i dette. Opret derfor biblioteket, hvor I nu nsker angiv stien til dette. Det kan, ek-sempelvis, placeres p -drevetmed navnet

    .ErgoskalIangivestien

    .

    Vi er nu klar til at oprette vores frste script. Tryk pNew Script-ikonet . Der popper nu et nyt vindue op.Dette er Matlabs editor som vi vil benytte til at skrive vores scripts i. Bemrk dog, at man sagtens kunne gredet i NotePad eller andre editorer, men fordelen ved Matlabs editor er, at denne har syntaks-highlighting.

    Gem dette tomme script som . Matlab scripts har extensionen. Man behver ikkeangive extensionen nr man gemmer sit script via den indbyggede editor, da Matlab srger for at vedhfte p filnavnet du angiver. Derfor kan du blot som navn angive og den vil automatisk blivegemt som .

    Kommentarer

    Som regelsttet for god programmeringspraksis foreskrev er det vigtigt at angive kommentarer som fortl-ler hvad koden gr. Kommentarer i koder bliver ikke eksekveret, dvs. at Matlab ignorerer dem. Kodeblok1.3viser, hvordan man laver en kommentar i sin Matlab kode.

    1

    KODEBLOK1.3 KRES DENNE KODE IMATLA B VI L INT ET SK E, DA DET BLOT ER EN KOMMENTAR.

    Man skal simpelthen blot starte med et procenttegn. Alt p linjen efter procenttegnet vil Matlab opfatte somen kommentar og ignorerer.

    Hvis man vil lave en kommentar med linjeskift, dvs. du har trykket p

    , og derved startet en nylinje, vil Matlab ikke lngere opfatte det efterflgende som en del af kommentaren.

  • 7/24/2019 Book MatLab and Stats

    9/58

    8 KAPIT EL 1. BAS IC MATL AB

    1

    2 34

    56 78 9

    KODEBLOK1.4 ER DER LINJESKIFT I EN KOMMENTAR ER DET IKKE NOK BLOT AT ANGIVE ET%- TEGN.DERIMOD SKAL KOMMENTAREN INDKRANSES AF TEGNENE OG .

    For at overkomme denne problemstilling kan man angive et start- og sluttegn, hvilket medfrer at alt, somstr mellem tegnene opfatter Matlab som kommentarer. Kigger du i kodeblok1.4kan du se, at starttegneter og sluttegnet er .

    Variabler

    Vi har allerede hrt om -variablen i sektion 1.1. I den l altid det output fra den sidst udfrte kommando.Men hvad er en variabel egentlig? Jo, en variabel kan opfattes helt analogt til en opbevaringskasse. Der ikkeer de store grnser for, hvad man kan putte i kassen, og man ndre og benytte indholdet efter behov. Isektion1.1udfrte vi det simple regnestykke og her s vi, at Matlab lagde resultatet - tallet - i -variablen. S i dette tilflde lgges der et tal i en kasse, hvorp der str pskrevet

    .

    Lad os nu skrive et lille script til at udfre nogle simple regnestykker. Vi nsker at udregne og oglgge resultaterne i hver deres variabel hhv.

    og

    . Dette gres som vist i kodeblok1.5.

    1

    2 34

    5

    KODEBLOK1.5 EN VARIABELS INDHOLD DEFINERES GANSKE SIMPELT VED FRST AT SKRIVE NAVNET PVAR IA BLE N, ET LIG-MED -TEGN OG TILSIDST INDHOLDET. HER DEFINERES VARIABLERNE OG TIL ATINDEHOLDE RESULTATET AF HHV. OG .

    Kopieres koden i kodeblok1.5ind i det nyoprettede script

    , og klikker pRun-ikoneteller trykker

    kres scriptet. Kigger du nu i Command Window kan du direkte se, at scriptet er krt, da der

    nu vises output. Indvidere vil du mske lgge mrke til at, Workspace ogs er ndret. Variablerne og

    ligger nemlig nu i hukommelsen og derved ogs i Workspace.

    En variabels indhold i Matlab defineres p flgende mde:variablens navn

    variablens indhold

    VIGTIGT!: Navngiv altid dine variabler s du hurtigt kan se hvad de indehol-der! Dette vil spare tid!

    Definition af variabler

    Variablerne og

    , som nu ligger i hukommelsen, reprsenterer nu hhv. tallene

    og

    . Vi vil nu benytte

    disse to variabler til at vise hvordan man udfrer matematiske regneoperationerne med dem.

  • 7/24/2019 Book MatLab and Stats

    10/58

    1.3. GRUNDLGGENDE BRUG AFMATL AB 9

    1

    2 3

    4

    5 6 7

    8 9

    10

    11

    12 13

    14

    KODEBLOK1.6 HVI S VAR IA BLE R IND EHOL DER TAL KA N D ER UD FR ES MATE MATI SK EREGNEOPERATIONER MED DEM. HVOR DAN DET TE GR ES ER IK KE AN DER LE DES END P EN LOM ME REG NER .

    I kodeblok1.6er det vist, hvordan man udfrer de matematiske operationer

    og - alts sum, dif-

    ference, multiplikation, division og potens. I koden er det valgt, at lgge resultaterne i hver deres respektivevariabel. Bemrk, at fremgangsmetoden stort set er den samme som p en lommeregner.

    Matematiske regneoperationer med tal eller variabler indeholdende tal ud-fres med symbolerne og p flgende mde:

    Operation Symbol Eksempel

    Sum Difference

    Multiplikation

    Division Potens

    Matematiske regneoperationer

    Matlab indeholder en rkke indbyggede matematiske funktioner. Eksempelvis kvadratrod og numeriskvrdi. Tabel1.1viser nogle af de mest gngse. Vi skal senere se, hvordan man definerer sin helt egen funk-tion.

    Det er ogs vigtigt, at kunne fjerne variabler fra hukommelsen. For hvis der bliver lagt mere og merei hukommelsen vil systemet g hen og blive trgt. Netop af denne grund er det vigtigt, at man i alle sinescripts starter med at rydde hukommelsen! Dette gres ved kommandoen

    . Som navnet antyder

    rydder kommandoen simpelthen alt, og man vil se, at Workspace efterflgende er tomt. I enkelte tilflde erman mske kun interesseret at slette en specifik variabel. Dette kan opns p to forskellige mder:

    1. Benytte kommandoen

    navn p variabel

    .

    2. Med musen hjre-klikkes p variablen man nsker slettet i Workspace og klikker , eller blotmarkerer variablen og trykker p

    -tasten.

    Arrays

    Vi s i sektion 1.3, hvordan man definerer variabler. Det foregik ved hjlp af -tegnet. Dog betragtede vi kunyderst simple eksempler, hvor variablerne blev defineret til at indeholde et enkelt tal, hvilket - som fysikkersamt andre naturvidenskabelige analytikere - ikke er tilstrkkeligt. Vi sidder med en masse data, hvilket eren ndvendighed for, at vi inden for rammerne sat af statistik - hvilket vi kommer til senere- kan drage

  • 7/24/2019 Book MatLab and Stats

    11/58

    10 KAPIT EL 1. BAS IC MATL AB

    Kommando Beskrivelse Eksempel

    Kvadratroden af

    ex

    Numerisk vrdi af

    Naturlig logaritme af

    (ln(ex)= x)

    Logaritmen af

    (log(10x)= x)

    sinus til (x i radianer)

    cosinus til (x i radianer)

    tangens til

    (x i radianer)

    arcsinus til (Vinkelml=radianer)

    arccosinus til (Vinkelml=radianer)

    arctangens til

    (Vinkelml=radianer)

    sinus til (x i grader)

    cosinus til (x i grader)

    tangens til

    (x i grader)

    arcsinus til (Vinkelml=grader)

    arccosinus til (Vinkelml=grader)

    arctangens til (Vinkelml=grader)

    TABE L1. 1 EN RKKE AF DE OFTEST BENYTTEDE INDBYGGEDE MATEMATISKE FUNKTION I MATL AB.

    konklusioner. Alt denne data vil vi i stort set alle tilflde lgge i et eller flere arrays.Et array er ganske simpelt blot en liste bestende af en rkke tal. Eksempelvis tallene fra 1 til 5. For at

    lave et array skal symbolerne og

    benyttes. Lad os se hvordan det helt prcist fungerer ved at lave et array

    indeholdende tallene fra 1 til 5. Koden er vist i kodeblok1.7.

    1

    2

    KODEBLOK1.7 KODEN VISER, HVORDAN MAN DEFINERER ET ARRAY. ARRAYETS ELEMENTER SKALADS KI LLE S AF ET ME LLE MRU M, OG ER AF GRNSET AF FIRKANTEDE PARENTESER.

    Nr et array er defineret kan vi gre med det hvad vi vil. nsker vi eksempelvis at f vist, hvad det tredjeelement er i

    - alts hvad der str p plads nummer tre - s kan vi blot skrive

    , hvilket i

    vores tilflde ville outputte tallet 3.Antallet af elementer i et array kaldes ogs for dets dimension. er sledes 5-dimensionel. n-

    sker vi at kende et arrays dimension kan vi gre dette ved at benytte kommandoen

    . I kodeblok1.8demonstreres det, hvordan dimensionen af et array bestemmes og hvordan man ndre et element i et array.

    1

    2

    34 5 67

    8

    KODEBLOK1.8 NR ET ARR AY E R DEFI NER ET KA N V I BE STE MME DET S DI MEN SI ON- ALTS HVOR MANGEELEMENTER DET INDEHOLDER. D ETTE SKER VED BRUG AF KOMMANDOEN . E NDVIDERE KAN ETAR RAYS ELE MEN TER SNI LDT N DRE S EFTER BEH OV.

  • 7/24/2019 Book MatLab and Stats

    12/58

    1.3. GRUNDLGGENDE BRUG AFMATL AB 11

    Et array i Matlab er en rkke af elementer bestende af tal. Et array define-

    res p flgende mde:navn p array indhold angivet med et mellemrum mellem

    hvert element

    Arrayetsite element kan ndres p flgende mde:

    navn p array det ites elements nye vrdi

    Dimensionen af et array kan bestemmes ved at benytte kommandoen

    :

    navn p array

    Definition af arrays

    Ligesom med variabler indeholdende tal kan der udfres matematiske regneoperationer p variabler inde-holdende arrays af tal. nsker man at bestemme summen af to arrays benyttes symbolet og for differencenmellem dem

    . Det er dog ogs nyttigt blot at bestemme summen af et arrays elementer, hvilket hurtigt gres

    med kommandoen

    . Se kodeblok1.9.

    1

    2

    3 45

    6

    78

    9

    1011

    12

    1314

    15

    KODEBLOK1.9 SUMMEN OG DIFFERENCEN MELLEM TO ARRAYS BESTEMMES P SAMME MDE, HVIS DETBLOT HAVDE VRET TO VARIABLER INDEHOLDENDE ET TAL . ENDVIDERE ER DET VIST HVORDAN MANHURTIGT KAN BESTEMME SUMMEN AF DE INDIVIDUELLE ARRAYS MED KOMMANDOEN .

    Nr enten summen eller differencen mellem to arrays nskes bestemt vil det resultere i et nyt array medsamme dimension, men hvor det mte element vil best af summen/differencen mellemmte element i deto arrays. Eksempelvis, hvis vi tager udgangspunkt i koden i kodeblok1.9sker der flgende:

    16 27 38 49 510].

    Indtil videre har vi set, hvordan man adderer og subtraherer to arrays. Man skulle umiddelbart tro, atmultiplikation og division fungerer p samme mde. Men dette er ikke tilfldet! Dette bunder i, at Matlabbehandler arrays som vektorer, og som I muligvis har lrt i gymnasiet s er produktet mellem to vektorer joikke en ny vektor med samme dimension, men blot et tal - nemlig skalarproduktet 5.Endvidere er divisionaf to vektorer for det frste intetsigende og for det andet slet ikke defineret. Det vi her er interesseret i er,

    5Vi vil her ikke komme nrmere ind p hvordan man udregner skalarproduktet mellem to vektorer i Matlab. Grunden hertil

    er, at man skal kende til regnereglerne for matricer og dette kommer du ikke til at lre om fr i kursetLiner Algebrai blok 2. Menblot bid mrke i, at det er muligt.

  • 7/24/2019 Book MatLab and Stats

    13/58

    12 KAPIT EL 1. BAS IC MATL AB

    at to arrays elementer parvist enten skal multipliceres eller divideres med hinanden. Dette kaldes for enelement-by-elementoperation.

    Som vi s i kodeblok1.9er dette intet problem for addering og subtrahering, da dette sker automatiskiflge regnereglerne for vektorer - alts element-by-element. Vi tager igen udgangspunkt i og

    i kodeblok1.9.Det vi gerne vil opn er flgende operationer:

    = 1 6 2 7 3 8 4 9 5 1 0

    /

    = 1/6 2/7 3/8 4/9 5/10

    .

    Proceduren for at opn dette er heldigvis ikke srlig kompliceret. Der skal blot skrives et punktum foranden matematiske operator. Se kodeblok1.10.

    1

    2

    3 45

    6

    78

    9

    KODEBLOK1.10 KODEN VISER, HVORDAN MAN MULTIPLICERER OG DIVIDERER TO ARRAYS ELEMENTERMED HINANDEN- KORT SAGT ELEMENT-BY-ELEMENT OPERATION.

    Helt analogt foregr det, hvis man nsker at eksponere et array element-by-element. Se kodeblok1.11.Detsom koden i kodeblok1.11gr er flgende:

    = 10.1 20.2 30.3 40.4 50.5

    1

    2

    3 45

    6

    KODEBLOK1.11 KODEN VISER, HVORDAN MAN OPLFTER ET ARRAY TIL ET ANDET ARRAYELEMENT-BY-ELEMENT.

    De indbyggede matematiske funktioner nvnt i tabel1.1er heldigvis programmeret sledes, at de somstandard udfrer regneoperationen element-by-element (EBE) p et array. Det vil sige, at hvisvi eksempelvisgerne vil tage kvadratroden af et array kan man blot skrive navn p array , da det automatisk skerEBE. Se kodeblok1.12.

    1 2 34

    5

    KODEBLOK1.12 HVI S MAN SO M I NPUT ANG IV ER ET ARR AY I EN AF DE IND BYG GE DE MATE MATI SK EFUNKTIONER IMATLAB SK ER OPERAT ION EN SO M STAN DAR D E LEM ENT-BY-ELEMENT.

  • 7/24/2019 Book MatLab and Stats

    14/58

    1.4. KLAUSULER OG LKKER 13

    Skal der udfres EBE operationer mellem to arrays skal flgende syntaks

    benyttes:

    Frste array Andet array,

    hvor er en af de tre regneoperationer eller .

    EBE operationer p arrays

    Klausuler og lkker1.4

    Der vil komme tilflde, hvor en bestemt del af jeres kode skal eksekveres, hvis en bestemt betingelse eropfyldt. For at kunne hndtere denne problemstilling skal vi snakke om

    -klausuler. Det vil mske ogs

    vre sdan, at en del af koden skal eksekveres et stort antal gange, hvilket kan lses med en

    -lkke. Bde -klausulen og -lkken vil vi her se hvordan virker, og eksempler p anvendelse.

    -klausulen

    Som navnet antyder er -klausulen et stykke kode der eksekveres, hvis en bestemt betingelse er opfyldt.

    Vi skal her se et eksempel p en -klausul. I forbindelse med eksemplet kommer vi ogs ind p hvad entekststreng/string er og hvordan disse outputtes.

    -klausulen er nok ikke det I i starten kommer til at be-

    skftige jer mest med, men er stadig vigtig nok til, at I skal vide hvordan den er opbygget.Vi starter ganske kort med, at se hvad en string er. En string kan mske bedst forestilles som stninger;

    eksempelvisJeg er fysiker. Strings vil du kunne genkende i Matlabs editor som vrende farvede lilla. De skalomkranses af en apostrof

    . Se kodeblok1.13.

    1

    2

    KODEBLOK1.13 KODEN VISER HVORDAN EN STRING LGGES I EN VARIABEL. EN STRING OMKRANSES ENAPOSTRO F IMATLA B

    Ved at kre koden i kodeblok1.13kan du se nu se der str

    i Workspace. Bemrk, det lilleikon til venstre for . I den str der , hvilket er Matlabs mde at vise, at denne variabelindeholder en string. I value vil du se, at der str .

    Lad os nu se, hvordan man programmerer en -klausul. Helt prcis vil vi gerne have Matlab til at

    fortlle os om et tal liggende i en variabel kaldet er positiv eller negativ. Hertil skal vi netop benytte os afen

    -klausul:

    hvis tallet er negativt skal Matlab outputte stringen

    ,

    hvis tallet er positivt skal Matlab outputte stringen .

    Kodeblok1.14viser koden til at opn netop dette.

  • 7/24/2019 Book MatLab and Stats

    15/58

    14 KAPIT EL 1. BAS IC MATL AB

    1

    2 34

    56

    7 8 9

    10

    11 12

    KODEBLOK1.14 FLGENDE KODE TJEKKER OM TALLET ILAGT VARIABLEN ER POSITIVT ELLERNEGATIVT.

    Det frste vi gr er at definere variablen til at indeholde et tal; her tallet ni. Herefter hvis betingelsen er opfyldt vil

    blive eksekveret. Er

    imidlertid mindre eller lig med nul vil

    -delen blive eksekveret - alts

    . Bemrk, at en

    -klausul altid sluttes

    med .Kommandoen

    gr blot at indholdet af

    vises i Command vinduet.

    Vi kan dog vre en smule mere eksotiske, for hvis er lig med nul er det jo hverken positivt eller nega-

    tivt. Det vil alts sige, at vi skal have endnu en betingelse. Dette kan gres ved at tilfje en -del. Sekodeblok1.15

    1

    2 34

    56

    7

    8 9

    10

    11 12 13 14

    15

    KODEBLOK1.15 FLGENDE KODE TJEKKER OM TALLET ILAGT VARIABLEN ER POSITIVT ELLERNEGATIVT,OG BEHANDLER TILFLDET,HVOR ER LIG MED NUL SOM VRENDE HVERKEN POSITIVT ELLERNEGATIVT VED AT TILFJE EN -DEL .

    Bemrk, at nr man gerne vil have Matlab til at tjekke om en variabel er lig med en bestemt vrdi skal derangives to lig-med-tegn! Et enkelt lig-med-tegn er reserveret til at definere indholdet af variabler. Derfor strder i

    -delen i kodeblok1.15

    , da vi netop gerne vil tjekke om variablen

    prcis er lig med nul.

    Lad os indramme, hvordan man generelt programmerer en -klausul i Matlab.

  • 7/24/2019 Book MatLab and Stats

    16/58

    1.4. KLAUSULER OG LKKER 15

    Syntaksen for en -klausul i MatLab er flgende:

    1 betingelse 1 2

    3

    betingelse 2

    4

    5

    betingelse 3

    6

    7

    8

    betingelse m

    9

    10

    11

    12

    Bemrk der kan indg lige s mange

    -del som der nskesa.

    a

    -klausuler kan gres langt mere kompakte ved at benytte logiske operatorer. Det-te er ikke noget vi her vil komme ind p, men interesserede sjle kan se

    for information om logi-ske operatorer.

    -klausul

    -lkken

    -lkken er en lkke som du stort set altid skal benytte i forbindelse med databehandling. Fr vi kommertil

    -lkken skal vi dog lige se en ret vigtig og smart funktionalitet i Matlab - nemlig

    -operatoren.

    Denne operator er speciel nyttig, hvis man, eksempelvis, skal definere et array, som indeholder alle heletal fra 1 til 1000. Indvidere har vi jo kun set eksempler, hvor arrays er blevet defineret manuelt! Kodeblok1.16viser blandt andet, hvordan frnvnte array snildt kan defineres ved brug af

    -operatoren.

    1

    2 34

    5

    KODEBLOK1.16 -OPERATOREN ER NYTTIG NR STORE ARRAYS SKAL DEFINERES,OG NR DENNUMERISKE AFSTAND MELLEM ARRAYETS ELEMENTER ER KONSTANT.

    Bemrk, at vi slet ikke behver at benytte og , da -operatoren altid vil outputte et array.

    http://www.mathworks.se/help/matlab/matlab_prog/operators.htmlhttp://www.mathworks.se/help/matlab/matlab_prog/operators.html
  • 7/24/2019 Book MatLab and Stats

    17/58

    16 KAPIT EL 1. BAS IC MATL AB

    Syntaksen for Matlabs indbygget -operator er flgende:

    startvrdi forgelseslutvrdi

    -operator outputter altid et array. Derfor behves

    og

    ikke blive angivet.

    Angives disse vil outputtet stadig blot vre et array - alts der gr ingenforskel.

    -operatoren

    Vi er nu klar til at se, hvordan en

    -lkke er opbygget. Dette gr vi ved at tage udgangspunkt i enkonkret problemstilling: En matematikstuderende kommer med en rkke katetelngder aogb(se figur1.2) af en rkke retvinklede trekanter. Han skal bestemme hypotenusen caf alle de retvinklede trekanter p

    baggrund af hans mlte katetelngder. Katetelngderne er angivet i figur1.2.

    b

    a c

    a b

    1 cm 1 cm1 cm 2 cm2 cm 3 cm4 cm 1 cm2 cm 2 cm

    FIGUR1.2 EN MATEMATIKSTUDERENDE HAR MLT KATETELNGDER OG NSKER I HVERT TILFLDE , ATDU SKAL UDREGNE HYPOTENUSENc. HERTIL BENYTTES MEST EFFEKTIVT EN

    -LKKE.

    Lad os skitserer, hvordan vi med en

    -lkke kan lse dette problem:

    1. Definere to arrays som respektivt indeholder vrdierne for katetelngderneaogb.

    2. Via en

    -lkke definere et array, hvisite element indeholder hypotenusencudregnet ved formlena2+b2.

    1

    2 3 4

    5

    6 7

    8

    9

    KODEBLOK1.17 KODEN UDREGNER HYPOTENUSEN P BAGGRUND AF DE MLTE KATETELNGDER VIST IFIGUR1.2.

    I kodeblok1.17kan koden ses som lser den matematikstuderendes problem med en -lkke. Bemrk,at lige som med en

    -klausul afsluttes lkken med

    .

    En vigtig ting her at bemrke er, at hvis der konstrueres et array ved hjlp af en

    -lkke - som ikodeblok1.17- kan tiden det tager for at gennemlbe lkken nedsttes ved at definere arrayet inden selve

  • 7/24/2019 Book MatLab and Stats

    18/58

    1.5. FUNKTIONER 17

    lkken. Dette er muligt, da man i de fleste tilflde ved hvad arrayets dimension skal vre efter lkken ergennemlbet. Man vil ikke kunne mrke nogen forskel i krselstid ved sm gentagelser, men skal lkkengennemlbes 10000 gange ville man formentlig begynde at kunne mrke forskel. Derfor har vi i linje 6 ikodeblok1.17netop defineret arrayet til et array, med samme dimension som , bestende af kun nuller -alts

    . Det er det som kommandoen

    gr. En lignende funktion som i stedet ville

    lave et array med lutter et-taller er

    .

    Syntaksen for en

    -lkke i MatLab er flgende:

    1 startvrdi forgelse slutvrdi2

    3

    Bemrk, at det ikke er ndvendigt at benytte som tllevariabel. Man kanbenytte hvilken som helst variabel. De mest almindelige er dog bogstaver-

    ne , , og .

    Hvis et array defineres via en

    -lkke kan krselstiden nedsttes ved atdefinere arrayet inden lkken via kommandoen eller . Disse harsyntaksen

    antal rkker antal kolonner

    antal rkker antal kolonner

    -lkke

    Funktioner1.5

    Vi har tidligere nvnt en rkke af indbyggede matematiske funktioner i Matlab (se tabel1.1). Men der kansnildt opstr situationer, hvor en funktion, som ikke er indbygget, skal benyttes. Hertil kan man i Matlabdefinere helt egne funktioner som man kan anvende.

    Klikkes der I Matlab p Newog herefter pfunctionoprettes et nyt function-script. I vil nu se koden somvist i kodeblok1.18i editoren.

    1

    2 3

    456

    KODEBLOK1.18 NR DU KL IK KE RNew->functionI MATLA B VI L DEN HE R VI ST E K ODE KU NNE SE S IEDITOREN .

    Som det fremgr i koden i kodeblok1.18starter et function-script altid med

    , hvilket fortllerMatlab at der her defineres en ny funktion. er en forkortelse afoutput arguments, hvilket erdet funktionen skal returnere nr funktionen kaldes.

    er en forkortelse afinput arguments, og

    er det input man skal give funktionen for at f outputtet. Der, hvor der str

    er navnet p dennye funktion. , og navnet p funktionen kan vlges frit, men den m ikke havesammen navn som en allerede eksisterende funktion. Det er vigtigt, at filnavnet skal vre det samme somdet navn man giver funktionen. S, hvis man eksempelvis vil lave en funktion ved navn

    skal

    function-filen gemmes som ! Endvidere skal der gres opmrksom p, at nr man skal kalde

  • 7/24/2019 Book MatLab and Stats

    19/58

    18 KAPIT EL 1. BAS IC MATL AB

    funktionen direkte via Command Window skal Matlabs sti vre sat til det bibliotek, hvor function-filen erplaceret. Kalder man den via et script skal Matlabs sti vre sat til biblioteket, hvor bde function-filen ogscriptet er placeret.

    Lad os som et eksempel se, hvordan man i Matlab definerer den matematiske funktion(a x)1/n, hvorn, aogxer vilkrlige tal. Se kodeblok1.19.

    1 2

    3

    KODEBLOK1.19 KODEN DEFINERER DEN MATEMATISKE FUNKTION(a x)1/n, SOM HER NAVNGIVES . B EMRK, AT DER ER ANGIVET ET PUNKTUM OG DERVED KAN DENNE FUNKTION OGS HNDTERETILFLDET HVIS ENTEN ELLER ER ET ARRAY.

    Vi kan se, at , og er input argumenterne og er output argumentet. Bemrk, at ikke vises, da derer angivet et semikolon! Dette skyldes, at Matlab automatisk lgger outputtet over i -variablen. Funk-tionen har vi valgt at kalde

    , da det netop er dennte rod funktionen beregner. Lad os via vores nye

    funktion

    udregne (14)1/2, hvilket meget gerne skulle give 2 som resultat6. Det vil sige, at vi skal kaldefunktionen , hvor , og . Vi kalder i kodeblok1.20fra Command Window.

    1 2

    34

    KODEBLOK1.20 DEN NYOPRETTEDE FUNCTION UDREGNER HER(1 4)1/2 - ALTS , OG

    . KALDES HER FRACOMMANDWINDOW.

    Bemrk, at rkkeflgen af tallene i kodeblok1.20ikkeer ligegyldig! Det frste tal svarer nemlig til det

    nste til og det sidste til !

    Avancerede funktioner

    Der er ikke grnser for, hvor avancerede man kan lave sine funktioner ud over sine egne evner. Vi giver heret bud en mere lidt mere avanceret udgave af den tidligere oprettede funktion (se kodeblok1.19).

    Fra gymnasietiden br det vre jer bekendt, at man ikke m dividerer med nul. Noget som du muligvisikke har haft om i gymnasiet er komplekse tal. Det forholder sig sledes, at hvis man tager kvadratroden afet negativt tal vil resultatet vre et kompleks tal. Et kompleks tal har formen a+bi, hvoraer realdelen ogbden imaginre del. ikaldes den imaginre enhed, for hvilket der glderi2 = 1. Dette vil du lre om ikurset MatIntro, hvilket I som nystartede fysikstuderende har sidelbende til Mek1.

    Vi er som udgangspunkt ikke interesseret i tilfldet, hvor resultatet af er et kompleks tal - altstilfldet hvor a x

  • 7/24/2019 Book MatLab and Stats

    20/58

    1.5. FUNKTIONER 19

    1

    23

    4

    5

    6

    7 8

    9

    10 11

    12 13

    KODEBLOK1.21 KODEN VISER, HVORDAN MAN MED EN -KLAUSUL MODIFICERER DEN TIDLIGEREOPRETTEDE FUNKTION SLEDES, AT HVIS RESULTATET ER ET KOMPLEKS TAL ELLER HVIS DERDIVIDERES MED NUL S OUTPUTTES DER EN STRING TILCOMMANDWINDOW,SOM FORTLLER NETOP

    DETTE.

    Som en test kan du definere funktionen

    som i kodeblok1.21og eksempelvis prve at skrive frst

    og derefter

    . Men inden da s overvej selv, hvad Matlab vil outputte!

  • 7/24/2019 Book MatLab and Stats

    21/58

    2Kapiteloversigt

    Grask fremstillingaf data

    Vi skal i dette kapitel se, hvordan manfremstiller sine data grask i Matlab. Medandre ord vi skal plotte dem. Men deter ikke bare nok at plotte sine data, foret plot skal ogs vre pnt og derskal vre de ndvendige informationers lseren ikke bliver forvirret. Vi kom-

    mer derfor til at gennemg komman-doer i forbindelse med at style sit plot.Endvidere vil det ogs blive behandlet,hvordan man fremstiller ere dataserieri et og samme plot, men ogs separat.Tilsidst afslutter vi med, hvad et scatterplot er, og hvordan man kan f en for-nemmelse for om der er en afhnighedmellem to mlte strrelser.

  • 7/24/2019 Book MatLab and Stats

    22/58

    21

    At plotte sine data2.1

    Fremgangsmetoden er, at vi vil tage udgangspunkt i en konkret problemstilling og undervejs se, hvordanman plotter sine data. Problemstillingen vi vil tage udgangspunkt i er et fiktivt udfrt forsg. Til forsget harvi en relativ lufttt beholder, der har et volumen V= 0.5m3 og indeholder atmosfrisk luft7. Til beholderener tilsluttet et elektronisk termometer og trykmler. Nr beholderen opvarmes noteres temperaturen ogtrykket lbende. Data kan ses i tabel2.2.Vi skal benytte Matlab til at plotte disse data.

    Temperatur [K] Tryk [Pa]

    299.68 49862.66310.83 52091.57319.77 53397.68330.26 54936.52

    339.10 56836.74347.84 58462.12360.09 59023.77369.05 61503.39381.17 62943.02391.74 63800.99399.63 65815.72

    TABE L2. 2 DATA F RA ET (FIKTIVT)FORSG. EN TTSLUTTENDE BEHOLDER MED VOLUMENV= 0.5m3 ,INDEHOLDENDE ATMOSFRISK LUFT, OPVARMES. L BENDE ER TEMPERATUREN OG TRYKKET IBEHOLDEREN NOTERET.

    Det frste vi skal gre er, at indtaste data i to separate arrays, hvilket p nuvrende tidspunkt ikke skullevre det store problem. Se kodeblok2.22.

    1 2 34

    5

    67

    KODEBLOK2.22 DATA F RA FO RSG ET(SE TABEL2. 2)LGGES I ARRAYS.

    I vores plot nsker vi, at de mlte strrelser for tryk er op ad y-aksen og dem for tryk ud afx-aksen. For atplotte de nu indlste data skal vi benytte -kommandoen. Denne har syntaksen

    array indeholdende x-akse vrdier,array indeholdende y-akse vrdier .

    Vi tilfjer derfor en linje til vores script som indeholder

    . Samlet vil det se ud somi kodeblok2.23.

    7Senere kommer vi til at se, hvordan vi ved brug af grundlggende statistik og dataanalyse kanbestemme stofmngden af denindesluttede atmosfriske luft.

  • 7/24/2019 Book MatLab and Stats

    23/58

    22 KAPIT EL 2. GRAFISK FREMSTILLING AF DATA

    1

    2 34

    5

    67

    89

    10

    KODEBLOK2.23 NR DATA ER LA GT I AR RAYS PL OTT ES DE MED -KOMMANDOEN .

    Nu krer vi scriptet i kodeblok2.23, og resultatet vil vre plottet som kan ses i figur 2.3.

    FIGUR2.3 DETTE PLOT ER ET RESULTAT AF AT KRE SCRIPTET I KODEBLOK2.23,HVILKET IKKE ER DETKNNESTE .

    Styling af plots2.2

    Som det mske allerede er get op for jer er plottet ikke srlig knt og det er heller ikke muligt at se data-punkterne, eller hvad der er ud af akserne. Det er der heldigvis rd for!

    Som standard viser Matlab ikke datapunkterne, men binder dem sammen med en ret linje mellem hvertdatapunkt. Dette er ikke acceptabelt! S lad os style plottet! S vi udvider scriptet sledes, at vi

    giver plottet en titel, labels s man kan se hvad hhv.x- ogy-aksen reprsenterer, kan se datapunkterne som rde ringe,

    ikke forbinder en ret linie mellem hvert datapunkt, srger for en mindre afstand fra datapunkterne til randen af plottet.

  • 7/24/2019 Book MatLab and Stats

    24/58

    2.2. STYLING AF PLOTS 23

    Koden til ovenstende styling kan ses i kodeblok2.24.

    1

    2 34

    5

    67

    89

    10

    1112

    13

    14

    15

    16

    17

    1819

    20

    21

    KODEBLOK2.24 NR DATA ER LA GT I AR RAYS PL OTT ES DE MED -KOMMANDOEN . H EREFTER STYLESPLOTTET SLEDES, AT DET FR EN TITEL , LABELS P AKSERNE OG VISNINGSINTERVALLET NDRES SLEDES,AT I NGE N D ATAPU NK TER LI GG ER I R AN DEN AF PLO TT ET.

    Krer vi det nye script i kodeblok2.24fr vi et plot som vist i figur2.4, hvilket m siges at vre en stor

    forbedring! Nu er der angivet en titel s lseren ved, hvad plottet indeholder. Endvidere er det klart, hvadder er ud af de respektive akser, og der er ingen af datapunkterne som ligger i randen af plottet.

    Der er naturligvis et hav af muligheder for styling af plots. Lad os indramme nogle af dem.

    FIGUR2.4 DETTE PLOT ER ET RESULTAT AF AT KRE SCRIPTET I KODEBLOK2.24.DET FREMGR NUKLART HVAD PLOTTET VISER.

  • 7/24/2019 Book MatLab and Stats

    25/58

    24 KAPIT EL 2. GRAFISK FREMSTILLING AF DATA

    Data fremstilles grafisk i MatLab via -kommandoen, der har flgende

    syntaks:

    array indeholdende x-akse vrdier array indeholdende y-aksevrdier

    option

    ,

    hvor option kan antage flgende vrdiera.

    option Beskrivelse Datapunkter vises som ringe. Datapunkter vises som krydser.

    Datapunkter vises som plus-tegn. Forbinder punkter med linje.

    Forbinder punkter med stiplet linje.

    Forbinder punkter med prikket linje. Farver punkter og linjer rd.

    Farver punkter og linjer bl.

    Farver punkter og linjer sort.

    Options kan sammensttes! Eksempelvis vil optionen resultereri, datapunkterne vises som sorte krydser forbundet med sort en stiplet linje.

    Plottes titel kan angives ved -kommandoen:

    Plottes titel som string StyleOption vrdi ,hvor StyleOption vrdi kan antage flgende vrdierb:

    StyleOption vrdi Beskrivelse

    Skriftstrrelsen sttes til talleta. Titelteksten er fed. Titelteksten er kursiv.

    Eksempel p brug: resulterer i titelteksten har skriftstrrelsen 13 og skrifttypen er fed.

    Aksernes respektive labels kan angives ved hhv.:

    Aksens label som string StyleOption vrdi Aksens label som string StyleOption vrdi .

    Endvidere kan aksernes visningsinterval sttes ved hhv.:

    array indeholdende start- og slutvrdi for intervallet

    array indeholdende start- og slutvrdi for intervallet .

    aFor flere mulige options s se MathWorks hjemmeside:

    .bFor flere mulige options s se MathWorks hjemmeside:

    .

    Styling af plots

    http://www.mathworks.se/help/matlab/ref/linespec.htmlhttp://www.mathworks.se/help/matlab/ref/title.htmlhttp://www.mathworks.se/help/matlab/ref/title.htmlhttp://www.mathworks.se/help/matlab/ref/title.htmlhttp://www.mathworks.se/help/matlab/ref/linespec.htmlhttp://www.mathworks.se/help/matlab/ref/linespec.html
  • 7/24/2019 Book MatLab and Stats

    26/58

    2.3. FLERE PLOTS I DET SAMME PLOT 25

    Flere plots i det samme plot2.3

    En medstuderende har ogs udfrt det frnvnte fiktive forsg, og har foretaget mlingerne vist i tabel2.3.I er nu alle interesseret i, hvordan jeres data ligger i forhold til hinanden. Hertil vil det vre oplagt, at plotte

    jeres og den medstuderendes data i samme plot. Dette er muligt i Matlab.

    Temperatur [K] Tryk [Pa]

    303.03 50128.83310.73 52438.94319.94 52054.58330.71 55277.09339.80 56667.38349.88 57516.16361.49 59615.20371.41 61665.31381.42 64945.20390.67 66202.72398.79 65805.06

    TABE L2. 3 DATA F RA DET TID LI GE RE NVNT (FIKTIVE)FORSG SOM EN AF DINE MEDSTUDERENDE OGSHAR UDFRT. O PSTILLINGEN ER IDENTISK TIL DIN , HVILKET VIL S IGE EN TTSLUTTENDE BEHOLDER MEDVOL UM ENV= 0.5m3, INDEHOLDENDE ATMOSFRISK LUFT, OPVARMES.

    nsker man at plotte flere dataserier i samme plot skal man benytte sigaf

    -kommandoen. Den-ne kommando lseret eksisterende plot og gengiver det nste plot i samme plot. Plots gengives i det samme

    plot indtil kommandoen

    er blevet givet.

  • 7/24/2019 Book MatLab and Stats

    27/58

    26 KAPIT EL 2. GRAFISK FREMSTILLING AF DATA

    1

    2 3

    4

    56

    78

    910 11

    1213

    1415 16

    17

    18

    19

    20 21

    22

    23 24

    25

    26 27 2829

    30

    31

    KODEBLOK2.25 NSKES FLERE PLOTS I DET SAMME PLOT SKAL -KOMMANDOEN BENYTTES.MATL AB GE NG IV ER IK KE EFTER F LGE NDE PL OT I DET SA MME NR -KOMMANDOEN ER BLEVETGIVET.

    Lad os se, hvordan vi gengiver bde jeres og den medstuderendes plot i et og samme. Hvordan dette greskan ses i kodeblok2.25. Kres scriptet i kodeblok2.25vil Matlab outputte et plot som vist i figur2.5.

    Vi indrammer proceduren for at fremstille flere dataserier i samme plot.

    I Matlab skal kommandoen angives for at lse et plot. Plots somherefter genereres il blive gengivet i det plot som blev genereret fr

    blev angivet. For at lse plottet op angives kommandoen . Sekodeblok2.25for eksempel p anvendelse.

    Flere plots i det samme

    Legends i plots2.4

    Vi er dog ikke helt frdige, for det fremgr ikke af plottet i figur2.5hvad de forskellige datapunkter betyder.Hertil skal vi lave en legend som netop beskriver dette. Dette kan gres i Matlab ved at benytte

    -

    kommandoen.

  • 7/24/2019 Book MatLab and Stats

    28/58

    2.4. LEGENDS I PLOTS 27

    FIGUR2.5 DETTE PLOT ER ET RESULTAT AF AT KRE SCRIPTET I KODEBLOK2.25.VI SER, AT JERES OGDEN MEDSTUDERENDES DATA NU ER FREMSTILLET I DET SAMME PLOT.

    For at angive legends i MatLab skal -kommandoen benyttes. Dennehar flgende syntaks:

    Navn p frste dataserie Navn p andendataserie Placerings option .

    Placerings optioner en option som angiver hvor legenden skal placeres.De mest almindelige placerings optionsa er som flger:

    Placerings option Beskrivelse

    Legend placeres verst til hjre i plottet.

    Legend placeres verst til venstre i plottet. Legend placeres nederst til hjre i plottet.

    Legend placeres nederst til venstre i plottet.

    Legend placeres, hvor det er mest optimalt.

    aFor flere options se

    .

    Legends i plots

    Lad os se, hvordan vi laver en legend til vores plot i figur2.5.Dette hvilket er vist i kodeblok2.26. Det resul-terende plot er vist i figur2.6,og det fremgr nu tydelig, hvad de forskellige typer af datapunkter betyder.

    Det skal nvnes, at det lige som et plots titel og aksernes label er muligt at ndre skriftstrrelse, -farveog mange andre ting i legender. Vi vil ikke komme meget mere ind p dette. Men der henvises til MathWorkshjemmeside8 for mere dybdegende information omkring dette, da det er relativt teknisk.

    8

    http://www.mathworks.se/help/matlab/ref/legend.htmlhttp://www.mathworks.se/help/matlab/ref/legend.htmlhttp://www.mathworks.se/help/matlab/ref/legend.html
  • 7/24/2019 Book MatLab and Stats

    29/58

    28 KAPIT EL 2. GRAFISK FREMSTILLING AF DATA

    1

    2 3

    4

    56 7

    89

    1011

    12

    1314

    1516

    17

    18

    19

    20 21 22

    23 24

    25

    26 27 28

    2930

    31

    32

    3334

    35

    KODEBLOK2.26 NR DET I PL OTT ET SK AL AN GI VES , HVAD DE FORSKELLIGE DATASERIER BETYDERBENYTTES LEGENDS. D ETTE ANGIVES VIA KOMMANDOEN .

    Flere plots separat2.5

    Alt afhngig af det foreliggende eksperiment vil behovet for flere forskellige plots mske vre en realitet. Vihar indtil videre set, hvordan man laver pne og overskuelige plots. Nr man skal lave flere plots separat erdet vigtig, at man fortller Matlab, at den skal gre et nyt plot-vindue klart og putte det nye plot i det.

    Som en lille demonstration kan vi som eksempel betragte det tilflde, at vi gerne vil have vist dine datafra det fiktive forsg (se tabel2.2) og din medstuderendes (se tabel2.3) i hvert sit plot. Koden for at opnnetop dette er vist i kodeblok2.27.

    Som det fremgr af kodeblok2.27gives kommandoen

    lige inden et plot skal plottes i et nytvindue. Bemrk dog, at hvert plots styling-options nu skal angives ved hvert plot! Et illustrativt eksempel,hvad der sker hvis -kommandoen ikke gives fr I selv lov til at prve. Derfor kr scriptet i kodeblok2.27, men hvor de to

    -kommandoer er udkommenterede, og se hvad resultatet er. Hvor mange plots

    viser MatLab? Hvilket plot viser Matlab; jeres eller den medstuderendes?

  • 7/24/2019 Book MatLab and Stats

    30/58

    2.5. FLERE PLOTS SEPARAT 29

    FIGUR2.6 DETTE PLOT ER RESULTATET AF AT KRE SCRIPTET I KODEBLOK2.26.DET FREMGR NU,HVAD DE TO FORSKELLIGE DATASERIER BETYDER I LEGENDEN PLACERET I VERSTE VENSTRE HJRNE.

    1

    2 3

    4

    56 7

    89

    1011 12

    1314

    1516

    17

    1819

    20 21

    22 23

    24

    25 26 2728 29 3031

    32 33

    34

    35 36 37

    38

    39

    KODEBLOK2.27 VED FLERE PLOTS SEPARAT SKAL MAN DIREKTE FORTLLEMATLA B, AT DET ER DETRESULTAT MAN GERNE VIL OPN. D ETTE GRES VED GIVE KOMMANDOEN LIGE INDEN

    -KOMMANDOEN .

  • 7/24/2019 Book MatLab and Stats

    31/58

    30 KAPIT EL 2. GRAFISK FREMSTILLING AF DATA

    Vi indrammer proceduren for -kommandoen:

    Nr man skal genererer flere plot separat skal kommandoen giveslige inden man anvender -kommandoen. Bemrk, at hvert plot skalstyles separat.

    Flere plots separat

    Scatter plots2.6

    Scatter plots - spredningsdiagram p dansk, men ordet scatter plot anvendes oftest ogs p dansk - er etdiagram, som har til forml at klarlgge hvorvidt der er tale om afhngighed mellem to strrelser eller ej.Egentlig har vi faktisk allerede lavet scatter plots i form af de hidtil viste plots. Eksempelvis, er plottet i figur2.6et scatter plot, da denne via de mlte vrdier viser den matematiske sammenhng mellem trykketpog temperaturenT. Det fremgr, at der hjst sandsynligt er tale en ret liniet sammenhng i begge tilflde.Havde datapunkterne i stedet ligget vilkrligt i plottet er der ingen sammenhng mellem trykket og tempe-raturen. Et eksempel p et scatter plot som viser, at der er ingen sammenhng mellem vrdierne p x- ogy-aksen er vist i figur2.7.Datapunkterne i plottet er ikke gte data fra et forsg eller lignende, men simule-

    ret med Matlab.

    FIGUR2.7 FIGUREN VISER ET EKSEMPEL P, HVORDAN ET SCATTER PLOT KAN SE UD, NR DER IKKE EREN SAMMENHNG MELLEM TO STRRELSER. BEMRK DATAPUNKTERNE ER SIMULERET!

  • 7/24/2019 Book MatLab and Stats

    32/58

    2.6. SCATTER PLOTS 31

    Et scatter plot er et matematisk visuelt redskab til at klarlgge, om der er

    en sammenhng mellem to strrelser. Den strrelse, som er reprsenteretud adx-aksen, kaldes denuafhngige variabelog den op ad y-aksen denafhngige variabel.

    I Matlab er proceduren for at lave et scatter plot det samme som manskal lave et plot - alts medden allerede behandlede -kommando. Hvisder er en sammenhng vil man se datapunkterne flge en bestemt typematematisk funktion, og hvis punkterne ligger vilkrligt er der ingen sam-menhng. Se hhv. figur2.6og2.7.

    Scatter plot

  • 7/24/2019 Book MatLab and Stats

    33/58

    3KapiteloversigtGrundlggendedataanalyse

    For at kunne analysere data er statistiken ndvendighed. Derfor skal vi i dettekapitel introduceres basale statistiskebegreber, og hvordan man i Matlabanvender disse begreber i forbindelsemed dataanalyse. Frst snakker vi kortom middelvrdi og spredning. Herefter

    introduceres histogrammer og i forln-gelse heraf normalfordelingen. Dereftersnakker vi om det vi - som fysikere - grrigtig meget op i - nemlig usikkerhederi mlinger og hvordan disse fremstillesgrask sammen med mlingerne i et ploti Matlab. Gennem et strre eksempel sers hvordan tting af en ret linje til datagres. Til sidst ser vi hvordan man indl-ser data fra en ekstern l i Matlab.

    + 1 1 + 2 2 + 3 3 + 4 4

    34.1% 34.1%

    13.6% 13.6%2.1%2.1%

    0.1%0.1%

  • 7/24/2019 Book MatLab and Stats

    34/58

    33

    Middelvrdi og spredning3.1

    Nr man som fysiker, eller anden person med anderledes naturvidenskabelig baggrund, har foretaget eteksperiment skal data analyseres. I analysen forsger man at pvise en eller anden form for hypotese. Dettekunne eksempelvis vre, om sammenhngen mellem to mlte strrelser er eksponentiel. Der er ingen vejuden om: Den eneste mde, at pvise sin hypotese er gennem statistik!

    Selve den matematiske teori omkring statistik er yderst langhret, og - for at vre helt rlig - gabendekedsommelig! Anvendelsen af statistik i forbindelse med eksperimenter derimod, synes jeg, er ret spn-dende, og det er prcis det vi skal arbejde os frem imod - nemlig anvendelsen. S den matematiske teoribekymrer vi os ikke om, og lader matematikkerne om det.

    Nr vi udfrer eksperimenter forholder det sig naturligvis sledes, at jo mere data desto mere prcision.Derfor for at vre 100% prcise ville vi skulle udfre vores eksperiment uendeligt mange gange! Dette ernaturligvis ikke muligt. Men st nu for et jeblik, at vi rent faktisk har udfrt forsget uendeligt mange gan-ge, s kalder vi middelvrdien af dette uendelige store datast for den sande middelvrdiog betegness.Helt analogt kaldes spredningen af datasttet blive benvntden sande spredning, og benvnes s.

    Problemet er hvordan vi s skal forholde os, da det ikke er muligt at udfre eksperimenter uendeligtmange gange. Svaret hertil er, at vi ser det datast som vi fr fra vores eksperiment som vrende en stikpr-ve fra det frnvnte uendelig store datast. Denne stikprve er naturligvis endelig, og det kan vi forholdeos til!

    MIDDELVRDI: Det forholder sig sledes, at det bedste estimat - det vil sige det bedste bud - for den sandemiddelvrdiser givet ved det aritmetiske gennemsnit x. Denne er defineret ved

    x= 1

    N

    Ni=1

    xi=x1

    +x2+

    x3+ +

    xN

    N , (3.1)

    hvorNer antallet er datapunkter.

    SPREDNING: Datasttes spredning - standard deviation p engelsk og mange gange forkortet std - er for-menlig et begreb du endnu ikke er stdt p. Spredningen af datasttet tolkes som vrende et ml for, hvorstor afvigelse hvert datapunkt gennemsnitlig ligger fra middelvrdien. Denne betegnes x, og er defineretved

    x

    =

    1

    N1

    N

    i=1xix

    2, (3.2)

    hvor Nigen er antallet af datapunkter i datasttet.xer det bedste estimat for spredningen af det frnvn-te uendelige store datast s.

    Der findes et hav af andre statistiske formler, men de eneste vi her kan njes med er blot middelvrdi ogspredning givet i hhv.(3.1)og (3.2).

    Lad os nu se, hvordan vi i Matlab udregner middelvrdien og spredningen af et datast. Hertil benyttervi et lille datast bestende af fem mlinger9 af tyngdeaccelerationen - nemlig 9.9m/s2, 9.6m/s2, 9.5m/s2,

    9Bemrk, at de datast I kommer til at sidde med formentlig aldrig vil vre s sm i og med, at de statistiske konklusionerdrages p baggrund af et datast med drlig oplsning. Tnk p det som netop oplsningen af en computerskrm: Hvis jeg viser

    jer et billede, som har en oplsning p 5px5px, og beder jer om at fortlle mig hvad billedet ligner vil svaret sikkert blot vre nogleprikker. Vises samme billede med en oplsning p eksempelvis600px 600px vil man vre bedre i stand til, at se hvad billedet viser.Det er prcist det samme med datast; jo flere datapunkter desto bedre oplsning.

  • 7/24/2019 Book MatLab and Stats

    35/58

    34 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    9.7m/s2 og9.8m/s2. Vi nsker at bestemme middelvrdi og spredning i Matlab.Kommandoerne, som hertilskal benyttes er indbygget i Matlab, og kan nemt huskes hvis man kender de engelske betegnelser for mid-delvrdi (mean) og spredning (standard deviation forkortet std). De er nemlig hhv.

    og

    . Kodeblok

    3.28viser, hvordan datasttets - det indeholdende fem mlinger for tyngdeaccelerationen - middelvrdiog spredning udregnes i Matlab.

    1

    2

    3 4 56

    7 89

    10 1112

    13

    KODEBLOK3.28 KOMMANDOERNE OG UDREGNER HHV. MIDDELVRDIEN OG SPREDNINGENAF ET DATAS T. HER ER DATASTTET LAGT I ET ARRAY KALDET .

    Matlab har indbyggede funktioner, som outputter et arrays middelvrdi ogspredning via formlerne angivet i hhv. eq. (3.1) og (3.2). Funktionerne erhhv. og , og har flgende syntaks:

    Navn p array indeholdende dataserie

    Navn p array indeholdende dataserie

    .

    Se kodeblok3.28for eksempel p anvendelse.

    Middelvrdi og spredning

    Histogrammer3.2

    Vi har nu set, hvordan man bde i hnden og i Matlab kan udregne middelvrdien og spredningen af etdatast, som var de bedste estimater for hhv. den sande middelvrdisog sprednings. Nu skal vi kobledisse to begreber sammen med statistiske fordelinger.

    Det frste vi dog er ndsaget til at f p plads er hvad et histogram er, og hvordan man i Matlab genererer

    sdan et. Forestil jer, at vi har flgende tal

    7, 5, 6, 4, 2, 3, 6, 9, 8, 4, 5, 6, 2, 1, 3, 4, 5, 7, 8, 5, 10. (3.3)

    Disse tal vil vi gerne genererer et histogram af. Fremgangsmde er flgende

    Identificer hhv. den laveste og hjeste vrdi (I dette tilflde er det hhv. 1 og 10). Inddel det lukkede interval afgrnset af hhv. den laveste og hjeste vrdi iNlige store delintervaller

    (da vi har med hele tal at gre har vi i dette tilflde valgt 10 delintervaller hver med lngden 1).Antallet af lige store delintervaller kaldes forbins(se tabel3.4). Hele dette skridt kaldes binning afdata.

    Identificer nu antallet af datapunkter som ligger i hver bin (Se tabel3.4for dette konkrete tilflde).Dette kaldes forhits.

  • 7/24/2019 Book MatLab and Stats

    36/58

    3.2. HISTOGRAMMER 35

    Indtegn nu binsne i et koordinatsystem, hvor hits er op ad y-aksen ogx-aksen er som vanelig - alts1,2,3,4,5,6,...os v.. Binsne reprsenteres af rektangler med bredden svarende til lngden af delinter-vallet. De individuelle bins har hjden svarende dens hits. Se figur3.8.

    Bin Interval Hits

    1 [0.5,1.5[ 22 [1.5,2.5[ 23 [2.5,3.5[ 34 [3.5,4.5[ 35 [4.5,5.5[ 46 [5.5,6.5[ 37 [6.5,7.5[ 38 [7.5,8.5[ 29 [8.5,9.5[ 2

    10 [9.5, 10.5] 2

    TABE L3. 4 TAB ELL EN VI SE R,HVORDAN VI HAR INDDELTx-AK SE N I BI NS OG HI TS I HV ER BI N.

    Bemrk, at hvis man summer hitsne fra hver bin er resultatet antallet af mlinger. I dette tilflde havde vi21 tal (se eq.(3.3)). Summer vi nu hitsne fra hver bin ser vi

    Hits = 1+2+2+3+4+3+2+2+1+1= 21. (3.4)

    Bin 1

    Bin 2

    Hits

    1

    2

    3

    4

    1 2 3 4 5 6 7 8 9 10

    FIGUR3.8 HISTOGRAM OVER MLINGER FRA EQ.(3.3). HVE R BIN HA R LNGD EN1. HVE R B INS H JDEAFG RES ALT EFTER DER ES RES PEK TIV E HI TS- ALTS ANTALLET AF OBERSERVATIONER I HVER BIN .

  • 7/24/2019 Book MatLab and Stats

    37/58

    36 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    Jeg vil anbefale, at prve at lave et par histogrammer i hnden for at f en fling med fremgangsmetoden.Nr dette er sagt s lad os se, hvordan vi p ingen tid kan gre det samme i Matlab. I Matlab skal komman-doen

    benyttes for at generere et histogram over en dataserie indlst i et array. Kodeblok3.29viser

    hvordan og figur3.9viser det histogram Matlab vil outputte.

    1 2 3

    4

    56

    7

    89

    10

    11

    12 13

    14 15

    16

    KODEBLOK3.29 HISTOGRAMMER AF SINE DATASERIE ER HURTIGT LAVET I MATL AB ! MAN SK AL BLO TLGGE SINE MLINGER I ET ARRAY OG DEREFTER BENYTTE KOMMANDOEN . H ISTOGRAMMER IMATL AB KA N S TY LES MED TI TEL , X- O G Y-LABELS SOM ANGIVET I BOKSEN P SIDE28 .

    FIGUR3.9 DETTE HISTOGRAM ER RESULTATET AF AT KRE SCRIPTET I KODEBLOK3.29.

    Sammenligner vi histogrammet som vi selv genererede (figur 3.8) med det, som er genereret med Matlabbemrker vi (figur3.9)ses det, at Matlab ikke benytter samme delintervaller for binsne som vi gjorde (setabel3.4), men formen af histogrammerne er den samme. Hvis det nskes kan man bede Matlab om atcentrere binsne omkring bestemte vrdier, men dette vil vi ikke her gennemg10.

    10Se

    for nrmere information omkring dette.

    http://www.mathworks.se/help/matlab/ref/hist.html
  • 7/24/2019 Book MatLab and Stats

    38/58

    3.3. NORMALFORDELINGEN 37

    Histogrammer over en dataserie i Matlab kan genereres ved at benytte kom-

    mandoen

    , som har flgende syntaks: Navn p array indeholdende data,antal bins .

    Bemrk, at der skal klargres et plotvindue som histogrammet skal ilgges- alts kommandoen

    skal angives inden man kalder

    . Angives

    antal bins ikke vil Matlab som standard stte antal bins = 10.

    Histogrammet kan styles med titel koordinatakse-labels som beskrevet iboksen p side28. For mere dybdegende information omkring se

    .

    Bemrk,atvalgetafantalletafbinserenpersonligsag-altsderfindesikke

    den helt store gyldne regel. Det eneste der er at sige hertil er, at de hverkenm vre for eller for sm. Sagt p en anden mde: Du m prve dig frem.

    Histogrammer i Matlab

    Normalfordelingen3.3

    Vi er nu kommet dertil, hvor kan introducere begrebet statistiske fordelinger. Der finde et hav af fordelin-ger: Poisson-, binomial-, beta-, 2-, normal-fordelingen og mange mange andre11. Den eneste fordelingsom i denne sammenhng er relevant er den vigtigste af dem alle - nemlig normalfordelingen eller Gauss-

    fordelingen12 som den ogs kaldes.Normalfordelingen er givet ved den kontinuerte funktion

    f(x;,)= 122

    e(x)2/(22), xR, (3.5)

    hvor er spredningen ogx= er der hvor funktionen har sit maksimum. Se figur3.10. Det er ikke et til-flde atoger benyttet, for hvis man laver et histogram over sine mlinger og kan se, at histogrammettilnrmelsesvis har samme form som en normalfordeling (hvilket de med ret stor sandsynlighed har i jerestilflde) s siger vi, at mlingerne er normalfordelte med spredningen xog middelvrdi x(se lig-ning (3.1) og(3.2)). Normalfordelingens middelvrdix= er der, hvor den er symmetrisk omkring og ogshar sit maksimum. Se figur3.10. Hvordan formen af fordelingen afhnger af er illustreret i figur3.11.Det

    fremgr tydeligt, at jo strre er desto mere bred er kurven - alts kurven har strre spredning.

    I boksen Histogrammer i Matlab verst nvnes det, at valget af antallet af bins i histogrammer er en person-lig sag, og man m derfor prve med forskellige antal. En hjlp til at finde det optimale antal af bins bestri, at der samtidig med generering af et histogram fittes13 en normalfordeling. Nr histogrammet fylder mestmuligt af arealet under kurven af den fittede normalfordeling er det optimale antal bins net.

    Denne procedure er mulig at foretage i Matlab ved brug af kommandoen

    . Denne kommandogenererer et histogram over data indlst i et array og samtidig fitter en valgt fordeling til histogrammet ogviser denne sammen med histogrammet.

    11Information om mange af disse fordelinger kan findes i bde[Taylor, 1997]og[Barlow, 1999].12Efter den tyske matematikker Carl Friedrich Gauss som udledte den. Dog har andre uafhngig af Gauss ogs udledt den.

    Eksempelvis, den franske matematikker Pierre-Simon Laplace.13Et fit betyder blot den bedste kurve ud fra den funktion som man har valgt skal udgre kurven. Her er det s normalfordelin-gen.

    http://www.mathworks.se/help/matlab/ref/hist.htmlhttp://www.mathworks.se/help/matlab/ref/hist.html
  • 7/24/2019 Book MatLab and Stats

    39/58

    38 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    2

    f(xmax)

    FIGUR3.10 FIGUREN VISER NORMALFORDELINGEN. D EN ER SYMMETRISK OMKRINGx=, OG HAROGS SIT MAXIMUM HER.

    = 1= 2= 3= 4= 5

    FIGUR3.11 FEM NORMALFORDELINGER MED FORSKELLIG SPREDNING . B EMRK, AT JO STRRESPREDNINGEN ER DESTO BREDERE ER FORDELINGEN. FORDELINGERNE PEAKER DOG STADIG DET SAMMESTED- NEMLIG VEDx= SOM ER FORDELINGERNES MIDDELVRDI . ERGO DISSE FEM FORDELINGER HARSAMME MIDDELVRDI MEN FORSKELLIG S PREDNING

    I Matlab kan der genereres et histogram, hvori en fittet normalfordelingsamtidig vises. Dette opns ved brug af kommandoen

    , der har

    syntaksen

    Array indeholdende data,antal bins,fordeling .

    For at fitte en normalfordeling til histogrammet skal fordeling = , men der kan fittes andre statistiske fordelingera. Antallet af binsskalher angives og kan ikke som i kommandoen

    undlades. Bemrk,

    at der skal klargres et figurvindue med . Se kodeblok3.30for et ek-sempel p anvendelse.

    aFor at se hvilke statistiske fordelinger der kan fittes og for nrmere informationomkring

    -kommandoen se

    .

    Histogram med fit

    http://www.mathworks.se/help/stats/histfit.htmlhttp://www.mathworks.se/help/stats/histfit.htmlhttp://www.mathworks.se/help/stats/histfit.html
  • 7/24/2019 Book MatLab and Stats

    40/58

    3.3. NORMALFORDELINGEN 39

    Kodeblok3.30viser, med vi udgangspunkt i tallene i eq. ( 3.3), hvordan kommandoen benyttes, ogdet resulterende histogram med den fittede normalfordeling kan ses i figur3.12.

    1

    2 3

    4

    56 7

    89

    10

    11

    12

    13 14 15

    16

    KODEBLOK3.30 FOR AT GENERERE ET HISTOGRAM MED FITTET NORMALFORDELING BENYTTESKOMMANDOEN . KODEN VISER ET EKSEMPEL P BRUGEN AF KOMMANDOEN. D EN RESULTERENDEFIGURMATLA B OUT PU TT ER VE D K RS EL AF DEN NE KOD E K AN SE S I FIG UR 3.12.

    FIGUR3.12 DETTE HISTOGRAM ER RESULTATET AF AT KRE SCRIPTET I KODEBLOK3.30.

    Som I mske nok har bemrket fr vi ganske vist vist histogrammet med den fittede normalfordeling nrman benytter

    -kommandoen, men hvad er s den fittede normalfordelings middelvrdi og spred-

    ning? Se, -kommandoen er s smart programmeret, at den slet ikke giver mulighed for at f ad-gang til detaljerne af den fittede normalfordeling! Heldigvis er der rd for dette, for

    benytter nemlig

    en anden kommando til at fitte normalfordelingen, hvilket er

    . Derfor for at f adgang til detaljerneaf den fittede normalfordeling skal denne anvendes.

  • 7/24/2019 Book MatLab and Stats

    41/58

    40 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    For at f adgang til det fit som laver skal kommandoen

    benyttes. Denne har syntaksen array indeholdende data,fordeling .

    Ved fit af en normalfordeling skalfordeling= normal. Lgges fittet afnormalfordelingen i en variabel - alts

    variabel

    (rkke)array indeholdende data

    ,normal ,

    s kan dens middelvrdi og spredning udtrkkes sledes

    middelvrdi: variabel.mu og spredning: variabel.sigma

    Se kodeblok3.31for eksempel p anvendelse.

    Adgang til normalfordelingens fit

    1 2

    3

    4 56

    7 89

    10 11

    12 13 14

    15

    16 1718

    19

    20

    21 22 23

    KODEBLOK3.31

    NR DEN FIT TED E N ORM AL FO RDE LI NGS MID DELV R DI OG SP RED NI NG NS KE S

    BESTEMT SOM LAVER SKAL KOMMANDOEN BENYTTES. KODEN VISER ET EKSEMPEL PBRUGEN AF KOMMANDOEN.

    Usikkerheder3.4

    Indtil videre har der ikke vret den store anvendelse involveret, og ej heller hvad vi dog skal bruge alt detforegende til! Dette kommer vi til nu. For nu skal vi benytte det til at snakke om usikkerheder i mlinger.

    Uanset, hvordan vi vender og drejer det s forholder det sig alts sledes, at vi lever i en virkelighed,hvor det p ingen mde er, og heller aldrig vil vre, muligt at foretage en mling med 100% prcision. Dette

    skyldes blandt andet, at vores mleinstrumenter har en begrnset oplsning14

    . Valget af mleinstrumenter14P det kvantemekaniske plan fortller Heisenbergs usikkerhedsprincip, at det er umuligt!

  • 7/24/2019 Book MatLab and Stats

    42/58

    3.4. USIKKERHEDER 41

    har dog stor betydning for prcisionen! Eksempelvis, hvis vi skulle mle lngden af en genstand ville enlineal med millimeter opdeling vre klar at foretrkke frem for en med kun centimeter opdeling!

    Eksperimentelt resultat

    St, at alleNfrste rs studerende har foretaget en mlingxi, alle med samme mleinstrument, af et ob-jekts lngde, eksempelvis lngden af kateteret i auditoriet. Mlingen er foretaget sledes, at ingen af de Nfrste rs studerende ved, hvad alle de andre har mlt lngden til. Dette kaldes foruafhngige mlinger15!

    Vi har sledes et datast bestendeNuafhngige mlinger. Det kan med god samvittighed antages, at dis-se er normalfordelte. P baggrund af disse normalfordelte mlinger vil det bedste estimat for den sandemiddelvrdis- det vil sige den helt prcise lngde af kateteret - af mlingernexi vrex. Men der mvre en usikkerhed forbundet hermed, da alle Nmlinger ikke resulterede i lige prcisx, hvilket i vrigt er

    statistisk umuligt, da de er uafhngige. Det er her vores tidligere antagelse kommer i spil: De Nmlingerer normalfordelte med spredning = x(og middelvrdi = x), og husk, at spredningen er ml for, hvormeget hver af de Nmlinger gennemsnitlig afviger fra middelvrdien x. Derfor kan vi benyttexsom etml for den gennemsnitlige usikkerhed p en enkelt mling. Af konventionelle rsager skrives usikkerhedeni xmed symbolernex- alts x= x. S et indledende eksperimentelt resultat p kateterets lngde pbaggrund af deNmlinger erxx.

    Det er vigtigt at bemrke, at xx ikkebetyder, at alle mlinger - bde dem foretaget og eventuellefremtidige - kun vil ligge i intervallet [xx, x+x]! Det skal tolkes som, at cirka 68% af alle mlinger villigge i intervallet [xx, x+x]. Men hvorfor lige 68%? Det kommer af, at mlingerne er normalfordelteog derfor vil chancen for, at en mling vil ramme et givent interval vre dikterede af normalfordelingen. Sefigur3.13.

    Det er tidligere nvnt, at alle de mlinger vi foretager os anses for at vre en stikprve af et uendeligtstort datast med spredning sog middelvrdi s. Men vi kan aldrig komme til kende hverken seller s!Heldigvis er det muligt for os gennem statistik, at kunne sige noget om i hvilket interval sligger, og dettevil netop vre vores usikkerhed px. Det viser sig, at slnge mlingerne i stikprverne er normalfordeltevil der vre cirka 68% chance for, at sligger inden forxx- alts i intervallet [xx, x+x], hvor

    x= xN

    . (3.6)

    Derfor kan vi i tilfldet med kateterets lngdenu konkludere, at dens sande lngdesligger i det frnvnteinterval - alts xx. Dette er det endelige eksperimentelle resultat. Det skal tolkes som, at kateterets sandelngdeshar cirka 68% chance for at ligge i intervallet [x

    x, x

    +x]. Vi har sledes bestemt kateterets

    lngdeninden for1, hvilket er den prcision I for det meste kommer til at opgive jeres eksperimentelleresultater med.

    Vrdien, som udregnes ved brug af eq. (3.6), kaldes forstandard afvigelsen af middelvrdien(engelsk:standard deviation of the mean, forkortet SDOM). Vi vil ikke komme ind p det teoretiske fundament forpstanden. Ergo m I blot - indtil videre - tage den som vrende sand.

    Det er vrd at bemrke, hvad eq. (3.6) egentlig fortller os! Den fortller helt prcist, at jo flere mlin-ger desto strre prcision og derfor kommer vi samtidig tttere p den sande middelvrdis! Eksempelvis,hvis I har foretagetNmlinger, og bagefter bliver bedt om at gentage eksperimentet (p prcis den sammemde og med samme udstyr!), men skal vre to gange s prcise som fr. Hvor mange mlingerMskal dernu udfres? Dette er simpelt at bestemme ved brug af SDOM! Det frste eksperiment gav jerxx. Det nye

    15Det er vigtigt nr I i grupper skal foretage mlinger, at det sker uafhngigt. Eksempelvis, hvis I skal mle vinklen et plan

    hlder s sig ikke til hinanden, hvad I har mlt vinklen til, da det ville farve jeres mening om mlingen. Dermed vil det ikke vreuafhngige mlinger, og det kan vi ikke lide!

  • 7/24/2019 Book MatLab and Stats

    43/58

    42 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    eksperiment vil give jerxnyxny. Da vi skal vre to gange s prcise svarer dette til xny= 1/2x. Ergo

    xny=1

    2x= x

    2

    N=1

    2x= x

    4N. (3.7)

    Alts for at vre to gange s prcis som fr skal vi foretage fire gange s mange mlinger! Hvis vi vil vre tregange s prcis som fr finder vi, at der skal foretages ni gange s mange mlinger. Helt generelt forholderdet sig, at hvis vi gerne vil ge prcisionen med en faktor qskal der udfresq2 s mange mlinger. S hvisman gerne vil vre mere prcis i sit eksperiment kan det i det lange lb bedre betale sig at bruge lidt ekstratid til at srge for godt eksperimentelt udstyr, og at de er kalibreret korrekt, da det klart vil tage lngere tidat foretage flere mlinger.

    + 1 1 + 2 2 + 3 3 + 4 4

    34.1% 34.1%

    13.6% 13.6%2.1%2.1%

    0.1%0.1%

    FIGUR3.13 FIGUREN VISER EN NORMALFORDELING MED SPREDNINGOG MIDDELVRDI.SAN DSY NLI GH EDE N FO R, AT EN MLING VIL RAMME I ET AF DE ANGIVNE INTERVALLER ER ANGIVET I DEFARVEDE OMRDER. D ET SKAL TOLKES P DEN MDE , AT DET EKSEMPELVIS ER34.1%SANDSYNLIGT, ATDEN VIL RAMME I INTERVALLET[1,], ELLER68.2%SANDSYNLIGT DEN VIL RAMME I [1,+1].

    Vi vil som det sidste gennemg nogle eksempler p oplyste eksperimentelle resultater og se, hvordanman skal ogikkeskal oplyse disse. Betragt flgende eksperimentelle resultater:

    1. 6051.78m/s30m/s

    2. 9.82m/s20.02385m/s2

    3. 55.50.3

    Af ovenstende eksperimentelle resultater er der kun en af dem som er oplyst korrekt. Lad os gennemgdem en ad gangen, og se hvorfor det enten er rigtigt eller forkert.

    1. Udsagnet 6051.78m/s

    30m/s fortller os, at cifret 5 kan vre enten 8 eller 2 grundet usikkerheden.Vi har derfor p ingen mde den ndvendige prcision til at kunne pstr noget om de resterendecifre 1,7 og 8. En afrunding er derfor pkrvet op til det ciffer med usikkerhed. S resultatet oplyseskorrekt nr vi oplyser det som 6050m/s30m/s.

    2. Udsagnet 9.82m/s2 0.02385m/s2 siger, at usikkerheden er 0.02385m/s2. Sagt p en anden mde:Usikkerheden er oplyst med firebetydende cifre16. Dette er yderst prcist, hvilket nsten er umuligt!Men lad os lege med tanken, at denne usikkerhed er reel nok, se er resultatet alligevel opgivet forkert.For, at det skal oplyses korrekt skal antallet af decimalpladser stemme overens - alts det korrekteville vre 9.82000m/s20.02385m/s2. Helt generelt nr I oplyser eksperimentelle resultater s er engylden regel, at usikkerheden skal have mindst et, men hjst to, betydende cifre. Se [Taylor, 1997,side14-16] for en mere uddybende diskussion.

    16Hvis et tal, eksempelvis 32.05056, skulle opgives med to betydende cifre ville det vre 32. Med tre betydende cifre 32.05, ogmed fire 32.0506. Bemrk, at nul ikke tller som et betydende ciffer.

  • 7/24/2019 Book MatLab and Stats

    44/58

    3.4. USIKKERHEDER 43

    3. Resultatet 55.50.3 er oplyst helt korrekt. Antallet af decimalpladser stemmer overens og usikker-heden er ikke oplyst med mere end et betydende cifre.

    Kombination af usikkerheder

    De hypoteser vi som fysikere vil be- eller afkrfte eller de lovmssigheder vi vil eftervise i forbindelse med eteksperiment er i stort set alle tilflde givet ved en matematiskmodel - alts et funktionsudtryk. Eksempelvis,Ohms lov

    V= R I, (3.8)

    hvorVer spndingen mlt i V, Rer modstanden mlt i ogIer strmmen mlt i A. Eller Galileis faldlov

    for et objekt, som fra start er i hvile,

    s=12

    g t2, (3.9)

    hvorser strkningen i m,ger tyngdeaccelerationen i m/s2,ter tiden i s.I de frnvnte modeller indgr strrelser som vi kan mle: V,R, I, gogt. Men i begge tilflde kan der

    vre tale om usikkerheder i flere af de i modellen indgende strrelser. Eksempelvis, vil usikkerheden ispndingen Vafhnge af usikkerhederne i bde modstanden Rog strmmenI. S hvordan kan vi bestem-me usikkerheden i V? Opfyldelsen af en rkke krav stter os i stand til at kunne besvare netop dette. Disse

    er, at usikkerhederne skal vre

    1. normalfordelte,

    2. uafhngige,

    3. meget mindre relativt til mlingerne.

    Punkt 1 er ret svr at vise gyldigheden af eftersom dette ville krve, at alle amperemetre og modstande i heleuniverset skal indsamles, og s skal der genereres et histogram over deres usikkerheder. At usikkerhederne,som punkt 2 udsiger, skal vre uafhngige betyder, at usikkerheden i amperemeteret ikke afhnger af deni modstanden og omvendt. Her vil et simpelt argument for uafhngigheden vre, at fordi usikkerhedeni modstanden er stor vil det ikke have indflydelse p den usikkerhed i amperemetret17.Punkt 3 kan frstbekrftes nr man har foretaget nogle mlinger. Et eksempel ville vre, at vi mlte modstanden til 20.2 ogdens usikkerhed ptrykt er 0.2. Her ville det vre klart at usikkerheden er meget lille relativt til mlingenaf den. Dette skrives R

  • 7/24/2019 Book MatLab and Stats

    45/58

    44 KAPIT EL 3. GRUNDLGGENDE DATAANALYSE

    Er de respektive usikkerheder normalfordelte, uafhngige og meget min-dre relativt til mlingerne glder der for usikkerheden i en strrelse givetved en funktion f(z1, z2,..., zM), at

    f(z1, z2,..., zM)=

    Mi=1

    f

    zizi

    2. (3.10)

    Ovenstende kaldes ogs forloven om fejlpropagering(engelsklaw of errorpropagation).

    Loven om kombinerede usikkerheder

    Et eksempel p anvendelsen