Beräkningsvetenskap I Jarmo Rantakokko Josefin Ahlkrona Kristoffer Virta Katarina Gustavsson Vårterminen 2011 Beräkningsvetenskap: Hur man med datorer utför beräkningar och simuleringar baserade på matematiska modeller Talrepresentation Numerisk lösning av ekvationer simulering av komplexa fysikaliska förlopp Beräkningsvetenskap handlar om hur man gör detta på ett effektivt, noggrannt och pålitligt sätt! Ämnet är tvärvetenskapligt och har gränsytor mot matematik, datavetenskap och olika tillämpningar, främst inom naturvetenskap och teknik. Exempel på tillämpningar: Simulering av snödrift för ett av ombyggnadsförslagen Sylarnas fjällstation innan ombyggnaden http://www.fluent.com/about/news/newsletters/04v13i1/a8.htm Meteorologi: Vad blir det för väder imorgon eller hur kommer klimatet att förändras? Alla prognoser från SMHI beräknas numeriskt och tolkas sedan av meteorologer. Oceanografi: Hur kommer vattenflöden, salthalt, temperatur och isutbredning att variera I Östersjöområdet? Var och när behöver isbytarna skickas ut? 1
Bioinformatik: Var i genomet finns gener som påverkar exempelvis storlek? + = - Identifiera sekvenser av gener i DNA bestående av 3 miljader baser - Numerisk simulering för design av effektiva läkemedel Hur sprider sig den medicin som injiceras i ögat mot exempelvis starr? Fysik: Vad händer i ett flygplan när blixten slår ner? Hur designar man ett flygplan för minsta möjliga radarreflektion? Molekyldynamik: Om man ändrar ett material på molekylnivå vilka egenskaper förväntas materialet få? 2
Mekanik: Hur bygger man krocksäkra bilar? Astronomi: Hur bildas stjärnor, supernova och svarta hål? Virtuella krocktester av preliminär design spar både tid och pengar. Numeriska beräkningar av luftflödet för optimal design av aerodynamiska egenskaper Kemi: Hur får man en effektiv förbränning och bra bränsleekonomi? Simulering av hur förbränning övergår i detonation (vilket vill undvikas i bilmotor) Datavetenskap: I vilken ordning ska träffarna visas? OBS, de flesta program innehåller alltid någon numerisk komponent (t.ex. talrepresentation, bildtransformation, simulering, beräkning) - Internetservrar - Databaser - Spel http://www.mai.liu.se/~laeld/ 3
Dual-core laptop 280 core PC-cluster 2x quad-core => 8-core PC 1+8 Multicore playstation Numeriska beräkningar och simuleringar är ofta mycket dataintensiva och utförs på parallelldatorer. 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 Dålig noggrannhet Idealisering Matematisk modell Approximation Numerisk metod Implementering Bugg, indata Datorkörning Lösning Nej OK? Ja Otillräcklig modell verklighet Lösning Numeriska metoder Beräkningsvetenskap Ett (trivialt) exempel Beräkna arean på jorden med den matematiska modellen A=4πr2 Ett mer realistiskt exempel 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 modeller Verkligheten Beräkna egenfrekvenser och svängningsmoder för bron. 4
Modellera bron som en tunn sträng: Matematisk modell Matematisk modell Där u förskjutningen i y-led, T spänningen i strängen och p dess densitet. Modellen är en förenkling av verkligheten (1D) Kan bygga ut den till flera dimensioner för att göra den mer realistisk blir då mer komplicerad Svårt bestämma parametrarna T,p. Kan variera för olika material (ställen). Modellen innehåller inte bärlinor Svårt eller omöjligt att göra en modell som helt överensstämmer med verkligheten Slutsats: Modellen en idealisering av verkligheten! Numerisk metod Problem! Kan ej lösas med vanliga matematiska (analytiska) metoder. Vi använder istället en numerisk metod. Numeriska metoder bygger i detta fall 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åliga ur en annan. Exempelvis kan en viss metod vara effektiv (snabb), men i vissa lägen vara instabil 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 T,p baseras vanligen på mätningar och är inte exakta Krävs ett initialtillstånd, dvs böjningen 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? Exempel: Vilken betydelse har datorns noggrannhet i beräkningarna? Betrakta uttrycket: y=((1/3-(1/3-3/10)*10)*10^12)^100 På räknare: y=5.15*10^47 Exakt: y=0! Vad hände? Slutsats: Även exakta matematiska uttryck kan ge betydande fel vid numerisk beräkning (exempel på instabil beräkning) 5
Frågeställningar inom beräkningsvetenskap Datavetenskap Numeriska metoder Matematik Tillämpningsämnen Exekveringstid? Minnesutnyttjande? Vilken typ av dator? Numeriska metoder Noggrannhet? Stabilitet? Kondition? Realistisk lösning? Tillräcklig model? Talrepresentation Felanalys Lösning av ekvationer Linjära ekv system Icke-linjär ekv Integraler Simulering av dynamiska förlopp Kurvanpassning Ordinära diff ekv Partiella diff ekv Egenvärdesproblem BV I BV II BV III Fem olika block Varje block har strukturen Datorlab => Föreläsning (en eller två) => Workout + problemlösning på dator Problemlösningspass => Miniprojekt Alla delar hänger ihop om man t ex missat labben förstår man föreläsningen sämre Alla delar tillsammans ger fullständig förståelse av blocket Laborationer Verifiering/ Förståelse Upptäckt (Varför/hur?) Teori Simuleringar/datorberäkningar Beskrivning/ Idealisering Citat från tidigare kursvärderingar: Det är framförallt sampelet mellan de olika formerna som varit bra. Att först ha laboration, sen föreläsning, workout och sist problemlösning gav förståelse och väl behövlig repetition. När man var klar med ett block kunde man det väl. Jag tycker det hänger ihop bra. Först får man testa praktiskt utan att förstå och sen får man förklarat för sig och till sist så faller teorin på plats när man gör workouten. 6
Kursens mål Kursens mål, forts För godkänt betyg ska studenten kunna redogöra för de grundläggande begreppen algoritm, diskretisering, noggrannhet, noggrannhetsordning, stabil- resp ickestabil algoritm, maskinepsilon, diskretiseringsfel (trunkeringsfel), iteration, kondition; översiktligt förklara idén bakom de algoritmer som behandlas i kursen; Visa hur algoritmerna som behandlas kan användas för lösning av tillämpningsproblem Redogöra för skillnaden i metodik vid datorberäkningar i jämförelse med analytisk lösning och de effekter som flyttalsrepresentation och diskretisering medför; Använda grundläggande programmeringsstrukturer (if, while, for) i algoritmer och i programmeringskod vid problemlösning; Givet ett mindre beräkningsproblem, strukturera och dela upp i underproblem, formulera algoritm för lösning av problemet, samt implementera i ett programmeringsspråk Redogöra för hur parametrar överförs till funktioner samt skillnaden mellan globala och lokala variabler i program Förstå enkel programmeringskod och skriva egna välstrukturerade mindre beräkningsprogram Mål, forts I en mindre rapport förklara och sammanfatta lösningsmetoder och resultat på ett överskådligt sätt. 7