Beräkningsvetenskap I Jarmo Rantakokko Josefin Ahlkrona Karl Ljungkvist Vårterminen 2012 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? Ekonomi: Hur ska banken sätta priset på en aktieoption? När ska man sälja eller köpa en viss aktie? Löser Black-Scholes ekvationer numeriskt med olika förutsättningar. http://www.mai.liu.se/~laeld/ 3
-Internetservrar -Databaser -Spel Beräkningsvetenskapen är dold bakom tillämpningen, men är ett viktigt verktyg för att nå resultaten. Numeriska beräkningar och simuleringar är ofta mycket CPU/minnes-krävande och utförs på parallelldatorer. OBS, de flesta program innehåller alltid någon numerisk komponent (t.ex. talrepresentation, bildtransformation, simulering, beräkning) 2x quad-core 8-core PC 512 core GPU 280 core PC-cluster 1+8 Multicore playstation Tillämpningarna är exempel på problem som kan beskrivas med matematiska modeller Problem! Kan 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 Otillräcklig modell Dual-core laptop 16 core GPU Dålig noggrannhet Idealisering Matematisk modell Approximation Numerisk metod Implementering Bugg, indata Datorkörning Lösning Nej OK? Ja Tolkning Beräkningsvetenskap verklighet modeller Lösning Numeriska metoder Ett (trivialt) exempel Beräkna arean på jorden med den matematiska modellen A=4πr2 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 Delberäkningar är ej exakta och avrundas 4
Ett mer avancerat exempel Modellera bron som en tunn sträng: Verkligheten Beräkna egenfrekvenser och svängningsmoder för bron. Matematisk modell Där u förskjutningen i y-led, T spänningen i strängen och p dess densitet. Matematisk modell 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 Lösning 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ösningen OK? Tolka resultat Metoden tillräckligt effektiv och snabb Är felet tillräckligt litet? 5
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) Datavetenskap Numeriska metoder Matematik Tillämpningsämnen Kursens upplägg/struktur Frågeställningar inom beräkningsvetenskap Talrepresentation Felanalys Exekveringstid? Minnesutnyttjande? Vilken typ av dator? Numeriska metoder Noggrannhet? Stabilitet? Kondition? Realistisk lösning? Tillräcklig model? 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 Programmering i Matlab Kursens upplägg/struktur Kursens upplägg/struktur Fem olika block Metodblocken har strukturen Upptäckt 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 (Varför/hur?) Teori Simuleringar/datorberäkningar Beskrivning/ Idealisering 6
Kursens upplägg/struktur 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. Kursens mål 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; Kursens mål, forts Mål, forts 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 I en mindre rapport förklara och sammanfatta lösningsmetoder och resultat på ett överskådligt sätt. OBS, tentamen blir målrelaterad vilket innebär att för att bli godkänd på kursen måste studenten vara godkänd på samtliga mål. (Högskoleverket utvärderar utbildningarna på hur väl målen är uppfyllda.) Mål och betygskriterier Förkortade och förenklade mål för tentan: Betygskriterier För de fyra målen har vi betygskriterier som används när vi konstruerar och bedömer tentan Mål 1: Visa förtrogenhet med nyckelbegrepp Mål 2: Visa förtrogenhet med de algoritmer Mål 3: Visa förtrogenhet med de analysförfaranden (noggrannhet, effektivitet, stabilitet) Mål 4: Visa elementär förtrogenhet med programmering (mer avancerad programmering görs i grupp och framför dator) Mål nr Kriterier för betyg 3 1 Kunna återupprepa eller känna igen standard-förklaringar av begrepp samt kunna utföra standarduppgifter som kräver kännedom om begrepp 2 Kunna visa hur algoritmer kan användas för lösning av tillämpningsproblem, när det explicit framgår vilka algoritmer som ska användas 3 Kunna utföra standardförfaranden för analys av algoritmer när det explicit framgår vilken analys som avses 4 Givet ett kortare program I Matlab kunna förklara vad resultatet av programmet skulle bli om det kördes, samt kunna skriva enklare kod som är nödvändig för att kunna använda inbyggda matlabfunktioner 7
Betygskriterier Betygskriterier Mål nr Kriterier för betyg 4 Tentan kommer att konstrueras och bedömas utgående från betygskriterierna 1-4 Kunna behandla beräkningsproblem som innehåller minst två av de aspekter som återspeglas i målen och där kunskaper från kursen är direkt tillämpliga men det inte framgår explicit vilka algoritmer etc som avses Mål nr Kriterier för betyg 5 1-4 Kunna behandla beräkningsproblem som innehåller minst två av de aspekter som återspeglas i målen och där det krävs att man kombinerar eller generaliserar kunskaper från kursen utan att det framgår explicit vilka sådana kombinationer eller generaliseringar som avses Bedömning sker poänglöst man uppfyller eller inte uppfyller målen upp till något betygskriterium Underkänt på ett mål ger U på kursen Varje mål testas i flera frågor mer om tentan senare Exempel: Så här kan det se ut (siffrorna i tabellen är betyg) Uppg nr Mål 1 Mål 2 Mål 3 Mål 4 1 3 X 3 X 2 X 3 X X 3 3 X X 3 4 X 3 3 X 5 X X X 3 6 4, 5 7 4, 5 8