2008-03-27 1 (2) Beräkningsvetenskap I Institutionen för informationsteknologi Teknisk databehandling Problemlösning och miniprojekt I tre av kursens block behandlas beräkningsalgoritmer för tre typer av matematiska modeller: lineära ekvationssystem, integraler respektive ickelineära ekvationer. I vart och ett av dessa block ingår ett problemlösningspass och ett miniprojekt. Problemlösningspasset består av två delar: Först kommer en lärarledd genomgång av en av lärobokens 1 fallstudier. Fallstudien används som utgångspunkt för diskussion om såväl beräkningsalgoritmer som programmering. Därefter ska studenterna i grupper om 2 3 personer börja arbeta med ett problem, som nedan kallas miniprojekt. Läraren finns till hands för att ge handledning. Miniprojektet som är obligatoriskt fortsätter med självständigt arbete efter problemlösningspasset. Redovisning lämnas i form av en rapport, som ska innehålla: problemformulering (så att rapporten blir självförklarande) redogörelse för de överväganden som ligger till grund för gruppens lösning det resulterande Matlab-programmet exempel på programkörningar argument för varför programkörningarna kan anses visa att programmet fungerar som avsett gruppens diskussion i enlighet med beskrivningen nedan, Diskussionsdel i samtliga miniprojekt ; denna del av rapporten bör omfatta ca 1 2 A4-sidor. För att få rätt nivå på rapporten kan du tänka dig att den skrivs för någon som har samma kunskaper som du själv hade innan du påbörjade den här kursen. Saker som ingått i kursen bör alltså förklaras i rapporten. 1 Steven C. Chapra, Applied Numerical Methods with MATLAB for Engineers and Scientists, Second Edition, McGraw-Hill, International Edition, 2008
2 (2) Problemlösningspass och miniprojekt 1: lineära ekvationssystem Lärarens genomgång bygger på lärobokens Case Study 9.5 Miniprojektet har rubriken Vattenledningsnätet i Lutorp (beskrivning nedan) Deadline för inlämning meddelas av läraren under problemlösningspasset. Problemlösningspass och miniprojekt 2: integraler Lärarens genomgång bygger på lärobokens Case Study 17.9 Miniprojektet har rubriken Dammen vid Newton s Mill (beskrivning nedan) Deadline för inlämning meddelas av läraren under problemlösningspasset. Problemlösningspass och miniprojekt 3: ickelineära ekvationer Lärarens genomgång bygger på lärobokens Case Study 6.6 Miniprojektet har rubriken Kraftverket vid Fixed Point Falls (beskrivning nedan) Deadline för inlämning meddelas av läraren under problemlösningspasset. Diskussionsdel i samtliga miniprojekt Diskussionsdelen i miniprojektet har syftet att vara en träning i att föra en vetenskaplig argumentation med användning av beräkningsvetenskapliga begrepp. När miniprojektuppgiften i övrigt är löst ska därför gruppens medlemmar gemensamt formulera minst tre beräkningsvetenskapliga frågeställningar i anslutning till miniprojektet och diskutera dessa frågeställningar. Exempel på frågor som kan fungera som utgångspunkt för diskussion: Finns det någon möjlighet att göra programmet effektivare och/eller generellare? Kan man säga något om noggrannheten i beräkningarna? Finns det någon typ av uppskattning som kan göras eller något som kan undersökas (t ex med Matlabs hjälp)? Vilken typ av fel har dominerande betydelse i detta problem? Har t ex datorns avrundningsfel någon betydande del i felet? Hur kommer diskretisering in i miniprojektets problemsställning? Kan man säga något om diskretiseringsfelet? OBS! Med diskussion avses här en vetenskaplig argumentation. Det räcker inte med lösa påståenden utan det ska vara så väl underbyggda argument som möjligt, gärna med stöd av formler, pseudokod, etc.
1 april 2008 Miniprojekt 1 (3) Beräkningsvetenskap I Institutionen för informationsteknologi Teknisk databehandling Besöksadress: MIC hus 2, Polacksbacken Postadress: 751 05 Uppsala Telefon: 018 471 0000 (växel) 018 52 30 49 Hemsida: Department of Information Technology Scientific Computing Visiting address: MIC bldg 2, Polacksbacken Postal address: SE-751 05 Uppsala SWEDEN Telephone: +46 18 471 0000 (switch) +46 18 52 30 49 Web page: Miniprojekt: Vattenledningsnätet i Lutorp 1 Du har blivit engagerad för ett konsultuppdrag åt Gaussby kommun. Kommunen planerar att bygga ett nytt stort bostadsområde i Lutorp. Ditt uppdrag gäller beräkningar av tryckförhållanden i vattenledningsnätet i Lutorp. Del 1 Före den planerade utbyggnaden består Lutorp av ett fåtal bostäder. De är anslutna till en egen del av det kommunala vattenledningsnätet. Hos Tekniska kontoret i Gaussby kommun finns en schematisk skiss över det lokala vattenledningsnätet i Lutorp före utbyggnaden. (Se bilaga. Beteckningarna i figuren förklaras nedan.) Knutpunkterna i nätet är numrerade med heltal: 1, 2, 3, 4. Tekniska kontoret vill att du till att börja med ska beräkna trycket i dessa knutpunkter. De sökta tryckvärdena betecknas med p 1, p 2, p 3, respektive p 4. Trycket anges som skillnaden mellan vattentrycket och det omgivande atmosfäriska trycket. I beräkningarna används därför en skala där det atmosfäriska trycket sätts till 0. För beräkningen av trycket används följande samband: 1. För rörledning nummer j kan vattenflödeshastigheten Q j (i m 3 /s) uttryckas: Q j = kl (p in p ut ). (1) Beteckningar: k är det hydrauliska motståndet i den aktuella rörledningen; L är längden hos samma rörledning; p in är trycket vid inloppet till rörledningen och p ut är trycket vid utloppet från samma rörledning. Motståndet mäts i m 2 /(bar s), trycket i bar och längden i meter. 2. Summan av flödena in till en knutpunkt är lika med summan av flödena ut från samma knutpunkt. Tekniska kontoret tillhandahåller en tabell över värdena på k och L för de rörledningar som ingår i Lutorps vattenledningsnät: rör k L rör k L rör k L 1 0.01 200 2 0.005 100 3 0.005 140 4 0.005 100 5 0.005 100 6 0.002 80 7 0.002 80 8 0.002 80 9 0.005 100 10 0.002 80 Vidare är trycket i vattenreservoaren 10 bar och trycket p vid avtappningsställena cirka 0 bar. 1 Del 1 baseras på Problem 5.1 i A. Quarteroni & F. Saleri, Scientific Computing with MATLAB, Springer-Verlag Berlin Heidelberg, 2003
2 (3) Samband 2 ovan ger följande ekvationer för de fyra knutpunkterna i Lutorps befintliga vattenledningsnät (se bifogad figur): Punkt1 : Q 1 = Q 2 + Q 3 + Q 4 Punkt1 : Q 2 = Q 9 + Q 10 Punkt1 : Q 4 = Q 5 + Q 6 Punkt1 : Q 3 + Q 5 + Q 9 = Q 7 + Q 8 Genom att i dessa ekvationer sätta in sambandet (1) och mätvärdena från Tekniska kontoret, får vi efter förenkling följande system av fyra ekvationer för de fyra sökta tryckvärdena p 1, p 2, p 3, p 4 : 3.70 0.50 0.50 0.70 0.50 1.16 0 0.50 0.50 0 1.16 0.50 0.70 0.50 0.50 2.02 p 1 p 2 p 3 p 4 = 20 0 0 0 Skriv i Matlab ett program som ställer upp detta system, löser det med Matlabs inbyggda backslash -operator samt skriver ut lösningen. Utskriften ska vara sådan att dina uppdragsgivare på Tekniska kontoret förstår den utan att du behöver ge någon kompletterande, muntlig information. (Kom ihåg att när du så småningom ska implementera programmet ska det skrivas in i en.m-fil) Del 2 När den planerade utbyggnaden av Lutorp genomförs kommer antalet bostäder i området att bli mer än hundra gånger större och det behövs en motsvarande utbyggnad av vattenledningsnätet. Man vill kunna beräkna trycket i knutpunkterna i det utbyggda nätet på motsvarande vis som för det ursprungliga nätet ovan. Det ska gå att göra beräkningarna för olika, tänkbara utformningar av vattenledningsnätet. Nästa del av ditt konsultuppdrag är därför att skriva ett program som ska kunna läsa in ett ekvationssystem från en.mat-fil (med Matlab-kommandot load), lösa ekvationssystemet, samt spara resultatet i en annan.mat-fil (med Matlabkommandot save). Indatafilen ska innehålla ekvationssystemets koefficientmatris och högerled, inga andra data. I utdatafilen ska du spara lösningsvektorn, inga andra data. Tanken är att programmet ska kunna användas av personal på Tekniska kontoret. När programmet körs ska användaren få mata in namnet på den.mat-fil där ekvationssystemet för det planerade vattenledningsnätet finns lagrat. Vidare ska användaren få välja namn på den.mat-fil där resultatet ska sparas. Slutligen ska användaren kunna välja att även få se en plot över resultatet, där man på x-axeln ska se knutpunkternas nummer och i y-led de beräknade tryckvärdena. För att förvissa dig om att programmet fungerar som avsett ska du testköra det för samma ekvationssystem som i Del 1. Del 3 Tekniska kontoret vill bland annat undersöka hur trycket i vattenreservoaren påverkar trycknivåerna i vattenledningsnätet. Därför vill man för ett och samma vat-
3 (3) tenledningsnät kunna göra upprepade beräkningar, för olika värden på trycket i vattenreservoaren. Låt oss numrera knutpunkterna så att den punkt där röret från vattenreservoaren ansluter till nätet får nummer 1. Vid den knutpunkten finns inga ytterligare inflöden. Effekten av att anta ett annat värde på trycket i vattenreservoaren kommer då att bli att värdet i första ekvationens högerled ändras. Inga andra delar av ekvationssystemet påverkas. (Värdet i första ekvationens högerled är klp r, där k- och L-värdena avser rör nummer 1 och p r är vattentrycket i reservoaren.) Nu ska du ändra programmet från Del 2, så att det blir möjligt för personal på Tekniska kontoret att göra upprepade beräkningar av tryckförhållandena i vattenledningsnätet. De indata som finns lagrade i.mat-filen ska vara koefficientmatrisen samt de värden k, L och p r som behövs för att bestämma högerledet. När programmet körs ska först ekvationssystemet läsas in från.mat-filen och lösas. När resultatet har presenterats, så ska användaren användaren ges möjlighet att i samma körning mata in ett nytt p r -värde, se lösningen till det nya systemet, mata in ytterligare ett p r -värde, etc. Detta upprepas tills användaren väljer att inte mata in ytterligare värden. Du ska föreslå ett effektivt sätt att utföra de upprepade beräkningarna (motivera!). Genomför de motsvarande ändringarna i programmet från Del 2. Använd även denna gång ekvationssystemet från Del 1 som testfall. Del 4 Skriv nu in en större matris, så stor att det vore orimligt att lösa ekvationssystemet för hand. Du behöver inte rita upp ett motsvarande vattenledningsnät, utan det räcker att du skapar en matris med samma egenskaper som hos matrisen i systemet i Del 1: negativa värden på huvuddiagonalen; positiva, mindre värden utanför huvuddiagonalen; i varje matrisrad blir summan av värdena mindre än eller lika med noll. Spara den nya, större matrisen i en.mat-fil. Kör programmet från Del 3 på detta större problem. Om du är van programmerare kan du försöka skriva ett Matlab-avsnitt som slumpar fram en matris av godtycklig storlek med ovan nämnda egenskaper. Om du är nybörjare i programmering får du istället hitta på lämpliga värden för hand och sätta in i matrisen. Om du är van programmerare kan du också lägga in tidtagning i programmet (med Matlab-kommandona tic och toc). Mät dels hur lång tid det tar att lösa det första ekvationssystemet, dels hur lång tid det tar att lösa de efterföljande systemen, där du bara har ändrat p r -värdet. Gaussby kommun tackar för dina insatser!
p=0 Q 10 Q 2 2 Q 9 Q 8 p=0 Q 1 1 4 Q 3 p=0 Q 4 3 Q 7 Q 5 p=0 Q 6 Schematisk skiss av vattenledningsnätet i Lutorp före den planerade utbyggnaden
1 april 2008 Miniprojekt 1 (2) Beräkningsvetenskap I Institutionen för informationsteknologi Teknisk databehandling Besöksadress: MIC hus 2, Polacksbacken Postadress: 751 05 Uppsala Telefon: 018 471 0000 (växel) 018 52 30 49 Hemsida: Department of Information Technology Scientific Computing Visiting address: MIC bldg 2, Polacksbacken Postal address: SE-751 05 Uppsala SWEDEN Telephone: +46 18 471 0000 (switch) +46 18 52 30 49 Web page: Miniprojekt: Dammen vid Newton s Mill Du tillbringar ett sabbatsår i England och kommer då i kontakt med The Newton s Mill Restoration Project. Du blir så intresserad av den gamla kvarnen med rötter i 1600-talet att du engagerar dig som volontär i projektet. Del 1 Dammen vid Newton s Mill är just nu fylld med vatten upp till nivån 20 fot. Vattnet i dammen utövar ett så kallat hydrostatiskt tryck på fördämningen. Din första uppgift i projektet blir att beräkna hur stort det trycket är. Låt y vara den koordinat som går från dammens botten, y = 0, och uppåt. Dammen är vattenfylld upp till y = 20. Dammens bredd på nivå y är w(y). Det hydrostatiska trycket kan då uttryckas 20 p (20 y) w(y)dy där p = 62.5 lb/ft 3. Följande värden på w(y) har uppmätts: y 0 5 10 15 20 w(y) 20.00 20.05 20.25 20.51 21.18 0 Skriv ett Matlab-program för att beräkna det hydrostatiska trycket med användning av dessa mätvärden. Om du är nybörjare i programmering får du använda Matlabs inbyggda kommando trapz för trapetsformeln. Om du är van programmerare kan du i stället göra en egen implementering av Simpsons formel. Del 2 Dammen vid Newton s Mill är i stort behov av renovering. Tanken är att förstärka dammens väggar. Detta kommer att göras på så vis att dammen får en mycket regelbunden form, så att bredden w(y) ges av formeln w(y) = 40 20e (0.01y)2 fot För att bedöma hur fördämningen ska dimensioneras ur säkerhetssynpunkt vill ni i restaureringsprojektet beräkna hur stort det hydrostatiska trycket kommer att bli när dammen fått sin nya, regelbundna form. Detta beror i sin tur på vattennivån i dammen, som varierar under året. Vattennivån D är vanligen mycket låg under sensommaren, medan den under våren kan komma upp till nära 100 fot. Det motsvarande hydrostatiska trycket betecknar vi med F (D): F (D) = D 0 p (D y) w(y)dy
2 (2) fortfarande med p = 62.5 lb/ft 3. Din uppgift är nu att numeriskt beräkna F (D) för ett givet värde på D. Du ska hitta på en algoritm som automatiskt ställer in diskretiseringsparametern h så att F (D) beräknas med minst cirka fyra korrekta decimaler. När du har formulerat algoritmen ska du implementera den i Matlab. Testkör sedan programmet. Hur skulle du kunna testa att programmet verkligen beräknar F (D) med fyra korrekta decimaler? Del 3 Nu när du kan beräkna F (D) med önskad noggrannhet, så går du vidare och gör en plot över F (D) för alla heltalsvärden på D från och med 10 fot till och med 100 fot. Denna figur blir underlag för bedömning av dimensioneringen av fördämningen. Ur beräkningsvetenskaplig synpunkt är det intressant att se hur h-värdena varierar med D. Använd kommandot subplot för att rakt under grafen över F (D) lägga in en plot över det använda h-värdet som funktion av D samt därunder en tredje plot som visar det uppskattade felet som funktion av D. The Newton s Mill Restoration Project gratefully acknowledges your contributions!
27 mars 2008 Miniprojekt 1 (2) Beräkningsvetenskap I Institutionen för informationsteknologi Teknisk databehandling Besöksadress: MIC hus 2, Polacksbacken Postadress: 751 05 Uppsala Telefon: 018 471 0000 (växel) 018 52 30 49 Hemsida: Department of Information Technology Scientific Computing Visiting address: MIC bldg 2, Polacksbacken Postal address: SE-751 05 Uppsala SWEDEN Telephone: +46 18 471 0000 (switch) +46 18 52 30 49 Web page: Miniprojekt: Kraftverket vid Fixed Point Falls Du blir engagerad som konsult åt det skotska energibolaget FPF som driver vattenkraftverket vid Fixed Point Falls. De har läst en rapport om projektet vid Newton s Mill och blivit imponerade av dina insatser där. Del 1 En anledning till att FPF intresserat sig för projektet vid Newton s Mill är att dammen där efter renoveringen fått precis samma form som kraftverksdammen vid Fixed Point Falls. De tror därför att du ska kunna återanvända din programvara från Newton s Mill i ditt nya uppdrag för FPF. Även vid Fixed Point Falls är dammen i behov av renovering. Fördämningen är gammal och man har konstaterat tendenser till sprickbildning som ökar sakta från år till år. Företagets ekonomi tillåter dock inte att förstärkningsarbeten genomförs just nu. I stället har FPF tänkt hantera säkerhetsrisken genom att regelbundet göra en bedömning av hur fördämningens status har förändrats och hur stort hydrostatiskt tryck den maximalt kan tåla. Detta kritiska tryck betecknar vi med C. Din uppgift är att skriva ett program i Matlab som personal vid FPF ska kunna använda för att bestämma maximalt tillåten vattennivå för att det kritiska trycket inte ska överskridas. Den som använder programmet ska mata in det aktuella värdet på C. Därefter ska programmet räkna ut hur hög vattennivån maximalt får vara och presentera resultatet för användaren. Del 2 - i mån av tid I kraftverket leds vatten in i rörledningar och vidare till turbiner. FPF är intresserade av att beräkna friktionsfaktorn i rörledningarna. De tänker sig att använda von Karmans ekvation: 1 = 4 log f 10 (Re ) f 0.4. I ekvationen uttrycks den dimensionslösa friktionsfaktorn f som en implicit funktion av den likaledes dimensionslösa konstanten Reynolds tal Re. Reynolds tal kan ses som en sammanfattande karakterisering av det aktuella flödets egenskaper och beror på flödeshastigheten, rörledningens diameter och vätskans tröghetsegenskaper. I vårt fall är det realistiskt att anta att Re är i storleksordningen 10 5. Skriv ett program som beräknar ett värde på f genom att använda von Karmans ekvation som en fixpunktsmetod. Idén är att införa variabeln x = 1/ f. Von Karmans ekvation blir då på formen x = g(x) och kan direkt användas som utgångspunkt för en fixpunktsiteration. (OBS! Uppgiften fortsätter på nästa blad.)
2 (2) För att testa att programmet ger rätt lösning kan du jämföra med det resultat du får om du använder Matlabs inbyggda kommando fzero för samma problem. När programmet fungerar kan du göra några beräkningsvetenskapliga undersökningar: Välj en startgissning som ger konvergens. Skriv ut resultaten av alla iterationer och försök att av dessa se hur stor konvergenshastigheten är. Experimentera med olika startgissningar. Kan du hitta startgissningar som inte leder till konvergens? Kan du experimentellt hitta ett lokalt konvergensområde kring lösningspunkten? Hitta gärna på flera saker att undersöka.