Uppgifter i simuleringskursen 10 december 2008 Uppgifter med (O) betecknar obligatoriska inlämningsuppgifter. För de uppgifter som är värda extra Ladok-poäng, prata med kursledning om bedömning, omfattning och hur mycket poäng uppgiften är värd. Alla är välkommna att föreslå egna mini-projekt eller undersökningar som ni vill göra och presentera för extra Ladok-poäng. 1 Simulering av ordinära differentialekvationer Uppgift 1.1. (O) Implementera följande integrationsmetoder i Matlab (eller ett annat favoritspråk): Euler-framåt, Euler-bakåt och trapetsmetoden. Verifiera stabilitetsgränserna och ordningen för metoderna på problemet y = 10y y(0) = 1 Uppgift 1.2. (O) Lös följande problem för hand. y = a(y cos(t)) y(0) = 0 Uppgift 1.3. (O) Applicera de tre metoderna från Övning 1.1 på problemet i Övning 1.2 med a = 10. Undersök stabilitetsgräns och vilken steglängd som behövs för att de olika metoderna skall ge en god approximation till lösningen. Kör Euler bakåt och trapetsmetoderna med och h = 0.01 på problemet med a = 1000 för t [0, 2]. Förklara beteendet. Uppgift 1.4. (O) Applicera de tre metodern på cirkelritaren lösningen skall bli en cirkel y = ( 0 1 1 0 ) y y(0) = använd steglängd h=0.02 simulera så lång tid att du kan se om metoderna ger en lösning som gör en spiral innåt, utåt eller om den beskriver en cirkel. Vilken egenskap hos metoderna är detta resultat kopplat till? Uppgift 1.5. Övning 3.1 i Ascher, Petzold. Uppgift 1.6. (O) Betrakta de explicita RK metoderna och valet av parametrarna c i, a ij och b i. Beskriv varifrån villkoren på parametrarna kommer för metoderna av ordningar åtminstone upp till 3 och gärna även ordning 4 (och 5). Vilken frihet har man att välja parametrar för de olika ordningarna och vilka val har man gjort i standardmetoderna? ( 1 0 ) 1
Uppgift 1.7. Uppgift 4.2 i Ascher, Petzold. Uppgift 1.8. Betrakta följande IVP y = 2ty 2, y(0) = 1 Bestäm y(1) med hjälp av Eulers metod samt med Taylors metod av tredje ordningen, använd steglängden h = 0.1. Jämför felen i lösningarna. Uppgift 1.9. Betrakta följande initialvärdesproblem y = γ y u(t) du(t), y( π) = y 0 dt du(t) u(t) = cos(t) + 1.1, = sin(t) dt Nominella parametervärden är y 0 = 1 och γ = 1.3 och det intressanta tidsintervallet är t [ pi,pi]. Gör en känslighetsanalys med avseende på y 0, γ. Plotta P i(t) φ i. Uppgift 1.10. (O) Kartlägg de två toleransparametrarna som finns i Simulink. Förklara hur varje enskild komponent i tillståndsvektorn hanteras och vilken tolerans den får utgående från parametervalen. Beskriv vad alternativet auto innebär. Vid vilken storleksordning på variablerna (eller inbördes förhållanden) måste man vara vaksam på noggrannheten i variablerna? Diskussionspunkter: Har du dragit någon lärdom av detta? Vilken grundinställning på toleransparametrarna kommer du att ha i framtiden? Uppgift 1.11. (O) a) Implementera en ODE-lösare med steglängdskontroll (och ev skalning). Välj ett av alternativen. 1. RK45 Dormand-Prince 2. BDF (valfri steglängdsändringsmetod, men gärna fixed leading coefficient) b) Verifiera att implementeringen fungerar genoma att beräkna y(1) i uppgift 1.2. c) Verifiera att algoritmen för tolerans och steglängdskontroll är korrekt. Uppgift 1.12. Uppgift 5.3 i Ascher, Petzold. Uppgift 1.13. Uppgift 5.4 i Ascher, Petzold. Uppgift 1.14. (O) Den välkända kemiska Belousov Zhabitinsky (BZ) reaktionen har ett oscillativt beteende som beskrivs väl av Oregonator modellen. Oregonator-modellens kan förenklas och i dess mest förenklade form ser differentialekvationen ut som följer ( ) ( ǫx x(1 x) + f q x z = q+x z ) x z Den kemiska reaktionen och modellen i sig har intressanta egenskaper. Systemets egenskaper ändras med parametrarna och bland annat så kan man hitta en Hopf-bifurkation i parametern ǫ. Vi skall dock inte titta på bifurkationen utan på styvheten. 2
Lös initialvärdesproblemen som ges av diffekvationen ovan samt x(0) = z(0) = 0.4231, på intervallet t [0,15] s med q = 8 10 4 och f = 2/3, för två olika värden på ǫ nämligen 4 10 2 och 4 10 3. Använd Matlab och lös båda problemen med två standardlösare som har steglängdskontroll, en explicit och en för styva system (i det ena fallet får du gärna använda din egen). Studera lösarnas lösningtid samt steglängderna i varje steg. Kan man säga att problemet är styvt? Uppgift 1.15. (O) Uppgift 5.5 i Ascher-Petzold. Uppgift 1.16. (O) Kartlägg ODE-lösarna som finns i Matlab/Simulink. Ange typ (vilken familj de tillhör), metodernas ordning och vilka egenskaper de har. Uppgift 1.17. Övning 7.1 i Ascher-Petzold. 2 Simulering av differential-algebraiska ekvationer Uppgift 2.1 (O). a) Ange index för differential-ekvationen ẏ = u b) Samma fråga fast för ẋ = u y = x c) Kommentera resultaten i a och b-uppgifterna. Uppgift 2.2 (O). Betrakta följande DAE: [ ] [ ] ( ) 0 0 1 ηt q ẏ + y = 1 ηt 0 1 + η 0 med η > 1 och q är en godtycklig funktion av t. a) Visa att DAEn har index 2. b) Verifiera att den exakta lösningen ges av y 1 (t) = q(t) + ηt q(t), y 2 (t) = q(t). c) Visa att en direkt användning av bakåt Euler ger en lösning som divergerar från den verkliga lösningen för η < 0.5, oavsett hur liten steglängd som används. d) För den intresserade, visa att DAEn ej har någon lösning då η = 1. Uppgift 2.3 (Ej färdig). En uppgift runt initialvärden och lösningar till [ ] [ ] 0 1 1 0 ẋ = x 0 0 0 1 3
Uppgift 2.4. För en ODE ẋ = f(x) är alla lösningar minst en gång deriverbar, detta gäller inte generellt för DAE:er. Konstruera en DAE vars lösning innehåller icke kontinuerliga lösningar. Uppgift 2.5 (Ej färdig). initialvärdesuppgift, känslighet Uppgift 2.6 (O). Att hitta konsistenta initialvillkor för en DAE kan vara en delikat uppgift och är ämnet för denna uppgift. a) Ange vilka ekvationer som måste lösas för att hitta konsistenta initialvillkor på x(0), ẋ(0), ẍ(0) etc. för följande två differentialekvationer. { { ẋ = x + y ẋ 1 + ẋ 2 = a(t) 0 = x + 2y + a(t) x 2 1 + x 2 2 = b(t) b) Antag en generell DAE F(ẋ,x,t) = 0 Förklara varför det inte nödvändigtvis är så att bara för att ẋ(0) och x(0) uppfyller F(ẋ(0),x(0),0) = 0 så är de giltiga initialvillkor. Använd nedanstående modell för att fundera runt ẋ 1 + x 3 = f 1 ẋ 2 + x 1 = f 2 x 2 = f 3 där f i är godtyckliga (oberoende från x i ) funktioner av t. c) Vad gäller för index 1 DAE:er? Förklara! Betrakta till exempel en semiexplicit DAE där g y har full kolumnrang. ẋ = f(x,y) 0 = g(x,y) d) Gäller slutsatsen från c-uppgiften även för generella index 1 DAE:er, dvs. på formen F(ẋ,x,t) = 0 Uppgift 2.7. Kort om index för en linjär DAE. För detta, betrakta en linjär tidsinvariant DAE Ax + Bx = f där A,B R m m och f är en C -funktion av t. Antag vidare att matrisknippet (eng. matrix pencil) λa + B har full rang. Detta antagande är nödvändigt och tillräckligt för att DAE:n ska ha en lösning (den intresserade får gärna visa detta). För att det ska bli lite intressant så antar vi att A är singulär. a) Antag att det existerar matriser P och Q så att [ ] [ ] I 0 C 0 PAQ =, PBQ = 0 N 0 I där N är nilpotent av ordning k, dvs. N k = 0 och N j 0 för j < k. Visa att indexet för DAE:n är lika med k. Kort fakta: Det existerar alltid matriser P och Q enligt ovan. 4
b) Vad är dimensionen på rummet för konsistenta initialvillkor? Uppgift 2.8 (O). I ett verktyg för simulering av ekvationsbaserade modeller så måste verktyget automatiskt räkna ut index för modellen. Detta görs genom att räkna ut det så kallade, strukturella indexet. Denna uppgift syftar till att illustrera frågeställningar runt detta. a) Betrakta följande lilla RC-krets 2 R 3 v(t) C 1 En slinganalys ger att följande ekvationer beskriver den elektriska kretsen C( v 1 v 3 ) = i C( v 1 v 3 ) + 1 R v 3 = 0 v 1 = v(t) Vad har modellen för index? Spelar det någon roll för indexet om jordpunkten istället hade varit i punkt 1 eller 3? b) Vad är det strukturella indexet för modellen? Kommentera! c) Spelar det någon roll för det strukturella indexet om jordpunkten istället hade varit i punkt 1 eller 3? d) Beräkna index och det strukturella indexet för modellen Uppgift 2.9 (O). Betrakta DAE:n ẋ + ẏ + x + y = cos t ẋ + ẏ + x + 2y = t F(y,y ) = y m Ny + y = 0 där y = (y 1,...,y m ) och N är en m m matrix på formen 0 1 0 0... 0 0 0 1 0... 0 N =.... 0 0 0... 0 1 0 0 0 0... 0 Beräkna differentiation index och perturbation index. Vad säger detta om relationen mellan de två indexena? 5
Uppgift 2.10. Ange och bevisa ett nödvändigt och tillräckligt villkor för att ẋ = f(x,y) 0 = g(x,y) har index 1. Uppgift 2.11 (O). Beskriv hur Pantelides algoritm kan användas för att bestämma det strukturella indexet på en DAE. Uppgift 2.12 (O). Betrakta en modell av en ideal pendel, en punktmassa längst ut på en viktlös arm, i kartesiska koordinater. Ekvationerna som beskriver rörelsen ges av mẍ = 2xλ mÿ = mg 2yλ 0 = x 2 + y 2 l 2 där m är pendels massa, l pendelarmens längd, x och y. a) Visa att ovanstående DAE har index 3 b) Utför indexreduktion på modellen genom att derivera modellekvationerna tills en delmängd av ekvationerna blir en index 1 DAE. Simulera denna DAE och kommentera de problem som uppstår. c) Gör en bättre indexreduktion för att undvika problemen i b-uppgiften. d) Skriv ursprungliga modellen på semi-explicit form och beteckna de algebraiska variablerna med z. Lägg till ǫz i vänsterledet på de algebraiska villkoren och simulera modellen med en ODE-lösare. Kommetera val av ǫ, val av ODE-lösare och den numeriska lösningen som fås. Kommentera och jämför med lösningen i b- och c-uppgiften. Uppgift 2.13 (O). Antag man vill använda ǫ-embedding tillsammans med en Runge-Kutta metod för att integrera index 1 ekvationer. Varför fungerar det endast med en implicit Runge-Kutta? Uppgift 2.14 (Ej färdig). simuleringsuppgift för att kolla ordning Uppgift 2.15 (Ej färdig). Uppgift om hur lösningsmängden förändras vid indexreduktion (jämför lite olika indexreduktionsmetoder) Uppgift 2.16. Antag att en ursprunglig DAE F(ẏ,y,t) = 0 (1) har indexreducerats, genom deriveringar och variabelbyten, till en ODE På vägen har man haft de algebraiska villkoren ẏ = f(t,y) (2) g(y,t) = 0 Ett sätt att återinföra de algebraiska villkoren är att återigen betrakta en DAE, nämligen ẏ = f(t,y) + g y (t,y)µ (3a) 0 = g(t,y) (3b) 6
Antag att g y (t,y) har full rad-rang, dvs. g innehåller inga linjärt beroende villkor. a) Visa att den nya DAEn har index 2. b) Visa att lösningsmängden till (3) inkluderar en lösning med µ = 0 och y som är en lösning till (2). c) För den intresserade. Antag vidare att g karakteriserar lösningar till (1), dvs. det finns en lösning y till (1) om och endast om g(y) = 0. Visa nu att lösningen från b-uppgiften är den enda lösningen till (3). Uppgift 2.17 (O). Denna uppgift betraktar en ODE med invariant, dvs. ẏ = f(t,y) 0 = ϕ(y) Notera skillnaden mot DAE-beskrivningen, ovanstående ekvationer är överbestämda. För att ha ett exempel, betrakta här cirkelritaren igen med radien hos cirkeln som invariant, dvs. ẏ = [ 0 1 1 0 0 = y 2 1 + y 2 2 1 ] y, y(0) = ( ) 1 0 a) Konstruera en ekvivalent, och exakt bestämd, DAE som har cirkeln som enda lösning. b) Vilket index har den DAEn? c) Simulera DAEn och undersök egenskaperna. Speciellt hur de bevarar invarianten. Jämför olika integratorer i Matlab, tex. ode15s och ode23t, och kommentera skillnader. Uppgift 2.18 (O). Följande uppgift ska illustrera bevarandet av olika invarianter. För detta, betrakta följandemodell av en kemisk reaktion ẋ 1 = 0.04x 1 + 10 4 x 2 x 3 ẋ 2 = 0.04x 1 10 4 x 2 x 3 3 10 7 x 2 2 ẋ 3 = 3 10 7 x 2 2 med följande (påhittade) initialvillkor x 1 (0) = 1, x 2 (0) = 2 10 4, x 3 (0) = 3 10 1 a) Visa att konserving av massa, x 1 (t)+x 2 (t)+x 3 (t) = x 1 (0)+x 2 (0)+x 3 (0) = M, är en invariant för reaktionen. b) Visa att invarianten är en linear first integral 1. Se Hairer-Wanner för definition. c) Man kan visa de flesta integrationsmetoder, exempelvis Runge-Kutta och flerstegsmetoder, konserverar linjära first integrals men i regel ej kvadratiska eller mer komplicerade invarianter. Verifiera via simulering att invarianten bevaras av en Runge-Kutta metod. 1 Jag får använda det engelska uttrycket då jag inte känner till en bra svensk översättning. 7
d) Verifiera att invarianten för cirkelritaren är en kvadratisk first integral. För att bevara en sådan krävs en så kallad symplectic Runge-Kutta. Uppgift 2.19 (O). a) Gör uppgift 2.4 i Ascher-Petzold b) Använd stabiliseringsmetoden (9.40) ifrån Ascher-Petzold på cirkelritaren. Kommentera simuleringsresultaten och val av γ. Uppgift 2.20. Undersök simuleringstid. Jämför simuleringstid för en DAE med index 1 och motsvarande ODE. Ta ett exempel där indexreduktionen är lätt att göra för hand. Uppgift 2.21. I Matlab finns två lösare som kan lösa DAE:er, de heter ode15s och ode23t. Använd kod och manualsidor för att ta reda på principerna för de två lösarna. Uppgift 2.22 (Ej färdig). sid 726 längst upp Gear/Petzold ODE methods..., BDF metod med fix steglängd för pendel. Uppgift 2.23 (O). Uppgift 9.11 i Ascher-Petzold Uppgift 2.24. Denna uppgift är värd extra Ladok-poäng och skall redovisas vid ett seminarium och leverera kod. DASSL (Differential-algebraic system solver) heter kod skriven av Petzold. En efterföljare heter DASKR. Källkoden och artiklarna som beskriver lösarna finns fritt tillgängliga. Uppgiften är att skriva kod, gärna i C/C++, som simulerar väl valt exempel med DASKR (skriven i Fortran). Prata med kursansvarig om du vill göra detta. Uppgift 2.25. För en ODE ẋ = f(x,t) så är ett Lipschitz-villkor på f tillräckligt för att säkerställa en unik lösning x till ett initialvärdesproblem. Hitta ett tillräckligt villkor, liknande Lipschitz för ODE, för att en index 1, semi-explicit DAE ẋ = f(x,y) 0 = g(x,y), g y full rang har en unik lösning. Uppgift 2.26 (O). Definiera en index 3 DAE och använd metoden indexreduktion med dummy-variables för att reducera index till 1. 8