Tekniska beräkningar stefan@it.uu.se Vad är tekn beräkningar? 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 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. 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 3
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 Ett mer realistiskt exempel Verkligheten HIV-viruset bildar mutanter. Immunsystemet bildar en specifik lymfocyt för viruset och mutanterna. Dessutom finns en immunrespons för hela immunsystemet. Beräkna populationstillväxten för virus, lymfocyten och immunrespons med avseende på tid. 4
Matematisk modell v = ( a bz( t) cx ) v 1 1 1 v = ( a bz( t) cx ) v 2 2 2 x = gv kx ( v + v ) 1 1 1 1 2 x = gv kx ( v + v ) 2 2 2 1 2 z = ( d kz( t))( v + v ) 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! 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 5
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? Kursen innehåller ett antal moment Linjära ekvationssystem Hur tal representeras i dator + fel som introduceras Interpolation och minstakvadrat Grundläggande programmering Icke-linjära ekvationer Integrering I varje moment ingår Matlab. Dessutom en inledande Matlabintroduktion 6
Varje moment består av: Laboration Föreläsning Workout Undantag: Matlabinledningen börjar med föreläsning Dessutom till vissa Moment: Miniprojekt Laboration Ger en bild av vad momentet kommer att handla om Genererar frågeställningar som besvaras under föreläsningarna Man kan säga att labbarna driver föreläsningarna Ger övning i och introducerar den Matlab som hänger ihop med momentet Obs laborationerna kräver inga förkunskaper i momentet Föreläsning Ger teorin till momentet Bygger vidare på och besvarar frågor från labbarna 7
Workout Handräkning (i grupper) Via handräkning övas hur metoderna fungerar Workouts är obligatoriska och rättas/prickas av Obs! Målet är att öva på hur beräkningsmetoder fungerar inte att räkna fram rätt svar Miniprojekt Övning i att lösa mer realistiska beräkningsproblem Problemlösningsmetodik Att gå från problem till lösning via Matlabkod Redovisning av uppgifter, kod, figurer etc Examination Workouts som ska vara tillräckligt väl genomförda och avprickade/rättade Miniprojekt godkända Tentamen godkänd 8
MATLAB innehåller många verktyg. Vi ska lyfta på locket och se hur de fungerar. Nosa på programmering 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 9