Beräkningsvetenskap stefan@it.uu.se Finns några olika namn för ungefär samma sak Numerisk analys (NA) Klassisk NA ligger nära matematiken: sats bevis, sats bevis, mer teori Tekniska beräkningar Mer ingenjörsmässigt, förklarar hur man gör, men inte så mycket varför. Mindre teori. Beräkningsvetenskap (eng Scientific Computing) Num analys + programmering + datorarkitektur o likn, närmare datavetenskap än matematik Beräkning av satellitbanor Simulering av luftflöde kring flygplan Simulerad krocktest av bilar Hållfasthetsberäkningar Väderleksprognoser Simulering av förbränning, t ex i motor Simulering av föroreningstransport i naturen Bildanalys ( förbättra bilder, hitta mönster) Bestämning av molekylstrukturer hos proteiner Molekyldynamik och mycket mycket mer 1
Partitionering vid beräkning på parallelldator Simulering av blixtnedslag i SAAB 2000 Krocksimulering Simulering av proteinveckning Molekyldynamik Här: studier av utbytesmekanismer och utbyteshastigheter mellan vattenmolekyler runt en litiumjon (i vatten) Simulering av blixtnedslag 2
Veckning av HIV-virus Krocksimulering Tillämpningarna är exempel på problem som kan beskrivas med matematiska modeller Problem! Kan som regel inte lösas analytiskt, på vanligt sätt. Lösning: Lös problemet på dator måste använda numeriska lösningsmetoder. Resultat: Ger approximativ lösning. 3
Verkligheten Felkällor Matematisk modell Nej Numerisk metod Datorprogram Lösning OK? Ja Idealisering, förenkling Diskretisering, trunkering Avrundning, noggrannhet i indata Slutresultatet en approximation, uppnår en endast en viss noggrannhet Typiska begrepp och kännetecken Approximationer till den exakta lösningen Diskretisering endast ett ändligt antal punkter kan hanteras i dator Feluppskattning visar strikt matematiskt att felet ligger inom rimliga gränser Numerisk stabilitet lösningen ska ej explodera på ett ofysikaliskt sätt. Beror på val av numerisk metod Effektivitet hur lång tid tar det att lösa problemet med en viss metod och en viss dator Implementation vilken typ av dator, programmeringsspråk etc Ett (trivialt) exempel Beräkna arean på jorden med den matematiska modellen A=4πr 2 Innehåller flera approximationer och fel: Jorden approximeras av en sfär idealisering av jordens verkliga yta Värdet på radien baseras på empiriska mätningar och tidigare beräkningar Värdet på π kräver trunkering (avhuggning) av oändlig decimalutveckling Indata och resultat avrundas av datorn 4
Ett mer realistiskt exempel HIV-viruset bildar mutanter. Immunsystemet bildar en specifik lymfocyt för viruset och mutanterna. Dessutom finns en immunrespons för hela immunsystemet. Verkligheten Beräkna populationstillväxten för virus, lymfocyten och immunrespons med avseende på tid. Matematisk modell v = ( a bz( t) cx ) 1 1 1 v = ( a bz( t) cx ) 2 2 2 x = g kx ( + ) 1 1 1 1 2 x = g kx ( + ) 2 2 2 1 2 z = ( d kz( t))( + ) 1 2 v 1 = population av HIV-virus v 2 = population av 1:a mutanten x 1 = population av lymfocyt mot viruset x 2 = population av lymfocyt mot 1:a mutant z = immunrespons Matematisk modell Modellen är en förenkling av verkligheten Kan lägga in fler mutanter för att göra den mer realistisk blir då mer komplicerad Svårt bestämma parametrarna a, b, c,.... Kan variera med olika personer. Görs ofta empiriskt. Svårt eller omöjligt att göra en modell som helt överensstämmer med verkligheten Slutsats: Modellen en approximation av verkligheten! 5
Numerisk metod Problem! Kan ej lösas med vanliga matematiska (analytiska) metoder. Vi använder istället en numerisk metod. Alla numeriska metoder bygger på diskretisering, dvs kontinuerliga intervall ersätts med diskreta punkter. Beräkning sker endast i dessa punkter medför diskretiseringsfel Metoderna har olika egenskaper och kan vara bra ur en synvinkel men dålig ur en annan. Exempelvis kan en viss metod vara effektiv (snabb), men i vissa lägen vara instabil Datorprogram Implementera metoden, dvs skriv program för den numeriska metoden (C++, Java, MATLAB,...) eller Använd befintlig programvara, t ex MATLAB Ofta krävs en kombination av båda! Indata till programmet, t ex a, b, c,..., baseras vanligen på mätningar och är inte exakta Krävs ett initialtillstånd, t ex antal HIV-virus vid tiden t=0. Detta mäts ej exakt utan innehåller fel Datorn avrundar alla beräkningar Lösning Lösningen OK? Tolka resultat Tillräckligt effektivt och snabbt? Är felet tillräckligt litet? 6
Kursen MATLAB innehåller många verktyg. Vi ska lyfta på locket och se hur de fungerar. Lära sig programmera och använda MATLAB Lära sig principer och idéer för datorberäkningar och numeriska metoder Förstå egenskaper, problem och begränsningar hos metoderna Förstå konstigheter i resultaten och vad man kan göra åt det 7