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 CH4 (g) + H2 O(g) CO(g) + 3H2 (g) Man låter CH4 och H2 O med vardera partialtrycken pCH4 = pH2 O = 1 bar reagera i en reaktionskammare. Man kan räkna ut partialtrycken av de olika ämnena vid jämvikt från ekvationen x(3x)3 pCO pH2 3 1 = 26 2 = o pCH4 pH2 O p (1 − x)2 där pCO /po = x, pH2 /po = 3x, pCH4 = pH2 O = 1 − x och po = 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.2085593x2 −7.2196556x3 +4.84728(1−x)1.70 x där x = T /Tc och den kritiska temperaturen för bensen Tc = 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 = L1 cos θ1 + L2 cos (θ1 + θ2 ) y = L1 sin θ1 + L2 sin [θ1 + θ2 ) där L1 och L2 ä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) + a1 t3 + a2 t4 Θ2 (t) = θ2 (0) + b1 t3 + b2 t4 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 θ1 (0,0) a Ställ upp ett linjärt ekvationssystem för bestämning av parametrarna a1 , a2 , b1 och b2 , 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 L1 = 4 m och L2 = 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): Kond., k, (W/cmK): 100 1.32 200 0.94 300 0.835 400 0.803 500 0.694 600 0.613 700 0.547 800 0.487 900 0.433 1000 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 po som definierar gasens aktivitet a och aktivitetskoefficient γ och där po = 1 bar. Aktivitetskoefficienten kan beräknas från följande samband Z p z−1 dp ln γ = p 1 där z(p) är kompressibilitetsfaktorn. Man har uppmätt z vid olika tryck vid 100o C enligt följande tabell p/atm z 1 0.9976 50 0.877 100 0.749 150 0.638 200 0.592 300 0.647 400 0.755 500 0.873 600 0.993 800 1.228 1000 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 2C3 H6 (g) C2 H4 (g)+C4 H8 (g) har bestämts experimentellt vid olika temperaturer enligt nedanstående tabell. T K 300 0.0503 350 0.0542 400 0.0598 450 0.0664 500 0.0734 550 0.0805 600 0.0877 Jämviktskonstantens temperaturberoende ges av van’t Hoffs ekvation ( ∆H o ∂lnK ) =− ∂(1/T ) 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(φ)), surf l(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 x1 till xn , 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!