1 Beatrice Frock KTH Matematik 4 juli 2013 SF1513 NumProg för Bio3 HT2013 LABORATION 4 Ekvationslösning, interpolation och numerisk integration Enkel Tredimensionell Design Efter den här laborationen skall du känna igen problemtyperna linjära och icke-linjära ekvationer, överbestämda linjära ekvationer och minst ett sätt att lösa varje problemtyp samt att kunna uppskatta lösningsnoggrannheten. Du skall också lära dig att interpolera, integrera numeriskt och förstå begreppet noggrannhetsordning. Vidare, du ska kunna utföra enklare tredimensionell design med rotationsfigurer. 1. Icke-linjär skalär ekvation a) Metan reagerar med vattenånga och bildar kolmonoxid och vätgas enligt reaktionen CH 4 (g) + H 2 O(g) CO(g) + 3H 2 (g) Man låter CH 4 och H 2 O med vardera partialtrycken p CH4 = p H2O = 1 bar reagera i en reaktionskammare. Man kan räkna ut partialtrycken av de olika ämnena vid jämvikt från ekvationen p CO p H2 3 p CH4 p H2O 1 p o2 = x(3x)3 (1 x) 2 = 26 där p CO /p o = x, p H2 /p o = 3x, p CH4 = p H2O = 1 x och p o = 1 bar. Lös ekvationen numeriskt och beräkna partialtrycken av de olika komponenterna i jämviktsblandningen. Kontrollera även kvadratiska konvergensen. b) Bensens ångtryck ges av följande empiriska uttryck ln(p/bar) = 10.655375 +23.941912 22.388714x+20.2085593x 2 7.2196556x 3 +4.84728(1 x) 1.70 x där x = T/T c och den kritiska temperaturen för bensen T c = 561.75 K. Lös ekvationen numeriskt och beräkna bensens normala kokpunkt, dvs T vid p = 1 atm = 1.013 bar.
2 2. Linjär algebra: robotarm Figuren visar en robotarm med två länkar. Ledvinklarna ges av θ 1 och θ 2. Koordinaterna för robothanden blir x = L 1 cos θ 1 + L 2 cos (θ 1 + θ 2 ) y = L 1 sin θ 1 + L 2 sin [θ 1 + θ 2 ) där L 1 och L 2 är länklängderna. Vinklarna θ 1 och θ 2 som bestämmer robothandens rörelse kontrolleras tidsmässigt av följande polynomuttryck: θ 1 (t) = θ 1 (0) + a 1 t 3 + a 2 t 4 Θ 2 (t) = θ 2 (0) + b 1 t 3 + b 2 t 4 där θ 1 (0) och θ 2 (0) är startvärden för vinklarna vid tiden t = 0. Vinklarna anges i enheten grader och tiden i sekunder. Robothand L2 θ2 L1 (0,0) θ1 a Ställ upp ett linjärt ekvationssystem för bestämning av parametrarna a 1, a 2, b 1 och b 2, givet startvärdena θ 1 (0) = 10, θ 2 (0) = 20 samt vinklarnas värden då t = 3: θ 1 (3) = 50.5, θ 2 (3) = 28.6 och då t = 4: θ 1 (4) = 131.6, θ 2 (4) = 140.0. Lös ekvationssystemet i MATLAB. b Använd dina resultat i a) för att plotta robothandens svep när tiden t går från 0 till 4 sekunder, med värdena L 1 = 4 m och L 2 = 3 m.
3 3. Interpolation och minstakvadratanpassning Givet är följande tabell över termisk konduktivitet som funktion av temperaturen för elementet järn Temperatur, T, (K): 100 200 300 400 500 600 700 800 900 1000 Kond., k, (W/cmK): 1.32 0.94 0.835 0.803 0.694 0.613 0.547 0.487 0.433 0.38 a) Utnyttja de fyra värdena vid temperaturen 100, 400, 700 och 1000 och interpolera genom dem med ett tredjegradspolynom. Rita de fyra givna punkterna och polynomkurvan med fin diskretisering (100:20:1000). Hur stor är konduktiviteten, k när temperaturen T = 300K? Jämför med det uppmätta värdet. Varför använder vi inte alla punkterna och interpolerar med ett niondegradspolynom? b) Anpassa ett andragradspolynom i minstakvadratmening till givna data. Plotta på samma sätt som ovan och ange konduktiviteten för temperaturen T = 300K enligt denna modell. Jämför med det uppmätta värdet. Beräkna även felkvadratsumman. c) Gör om samma beräkningar som i b) för ett tredjegradsploynom. Är anpassningen bättre än i b)? 4. Numerisk integration För reala gaser beskriver man den kemiska potentialens tryckberoende med ekvationen µ(p) = µ o + RT ln a = µ o + RT ln γ p p o som definierar gasens aktivitet a och aktivitetskoefficient γ och där p o = 1 bar. Aktivitetskoefficienten kan beräknas från följande samband ln γ = p 1 z 1 p dp där z(p) är kompressibilitetsfaktorn. Man har uppmätt z vid olika tryck vid 100 o C enligt följande tabell p/atm 1 50 100 150 200 300 400 500 600 800 1000 z 0.9976 0.877 0.749 0.638 0.592 0.647 0.755 0.873 0.993 1.228 1.453 Plotta (z 1)/p mot p och beräkna aktivitetskoefficienten γ vid trycken p =50, 500 respektive 1000 atm genom att numeriskt beräkna integralen för de tre värdena på den övre integrationsgränsen.
4 5. Numerisk derivering Jämviktskonstanten K för reaktionen 2C 3 H 6 (g) C 2 H 4 (g)+c 4 H 8 (g) har bestämts experimentellt vid olika temperaturer enligt nedanstående tabell. T 300 350 400 450 500 550 600 K 0.0503 0.0542 0.0598 0.0664 0.0734 0.0805 0.0877 Jämviktskonstantens temperaturberoende ges av van t Hoffs ekvation ( lnk (1/T ) ) = Ho p R Plotta ln K mot 1/T och bestäm H o vid 450 K genom att numeriskt bestämma derivatan i punkten T = 450 K. Gaskonstanten R = 8.314 J/K mol. 6. Tredimensionell design a) Skapa en kolumnvektor z med element från 14 till 5 med något lämpligt antal steg, och definiera funktionen x = 2 arctan(z). Konstruera nu en radvektor φ med element från 0 till 2π. Med satserna X = x cos(φ), Y = x sin(φ), Z = z ones(size(φ)), surfl(x, Y, Z), axis equal skapas en tredimensionell rotationsfigur. Vad föreställer figuren du nu har konstruerat? Prova gärna kommandona axis off, shading flat och colormap hot. b) Skriv ett Matlab-program där värdet n = antalet punkter matas in, och därefter n stycken (x, y) koordinatpar, med hjälp av [x,y]=ginput(n). Ett interpolationspolynom (gradtal n 1) ska läggas genom dina inmatade punkter. Ditt program ska beräkna koefficienterna i detta polynom. Kör programmet och rätta till eventuella fel innan du fortsätter. Konstruera nu en radvektor φ med element från 0 till 2π, t.ex. med 20 steg. Designa rotationsfiguren där ditt interpolerande polynom roterar kring x axeln: Först definiera en kolumnvektor X med elementen som löper från x 1 till x n, med samma antal komponenter som radvektorn φ. Definiera sedan en kolumnvektor Y med interpolationspolynomets värden för alla element i X. Med satserna Xplot=X*ones(size(fi)) Yplot=Y*cos(fi) Zplot=Y*sin(fi) surfl(xplot, Yplot, Zplot) kan en figur nu plottas. Använd gärna axis off, och vänd på figuren.
5 Alternativ beräkning: I stället för att använda ginput, får du rita en personlig rotationsfigur som skapas med hjälp av ditt personnummer, om du föredrar. Använd i så fall X=[1:10] och siffrorna i ditt personnummer som 10 stycken element i vektorn Y. Lägg ett interpolationspolynom genom punkterna, och rita en rotationsfigur enligt ovan. Uppstår Runges fenomen? Om du vill, kan du experimentera med olika steglängder och färgskalor. Hur många timmar ungefär har den här laborationen tagit? En fråga på kursutvärderingen i slutet av kursen kommer att gälla tidsåtgång och laborationsomfång. Tänk redan nu igenom vad som är bra och vad som kan förbättras!