HT2/2016 LINJE+ÅK+KLASS : TANA19 NUMERISKA METODER Laboration 4. Differentialekvationer Namn : Personnummer : E-post : @student.liu.se Namn : Personnummer : E-post : @student.liu.se Godkänd datum : Sign : Retur : 1
7 december 2016 LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER 1 Inledning Vi skall studera begynnelsevärdesproblem, både med avseende på stabilitet och konvergensens beroende av steglängden. Vi studerar i detalj ett exempel av första ordningen och tar upp ett praktiskt problem med ett system av differentialekvationer av första ordningen. Sist i laborationen finns tre exempel på tillämpningar där begynnelsevärdesproblem behöver lösas. 1.1 Mål Målet med denna laboration är att du skall få övning i att använda Eulers metod, Runge-Kuttas klassiska metod och trapetsmetoden. få insikt i hur man praktiskt kan analysera konvergenshastighetens beroende av steglängden. få insikt i vad stabilitet innebär. få övning i att hantera system av differentialekvationer. 1.2 Förkunskaper Kapitel 10 (spec. kap 10.1 10.5 och 10.7) i läroboken. Avsnitt 3 i Komplettering till kursboken. Exempel 7.1, 7.3, 7.11 och 7.14 i exempelsamlingen. 1.3 Teoretisk bakgrund Vi ska studera ett första ordningens begynnelsevärdesproblem. Vi skall använda Eulers metod, Runge-Kuttas klassiska metod och trapetsmetoden för att lösa problemet Förberedelseuppgift 1.1 Eulers metod y = f(x,y), x x 0, y(x 0 ) = y 0. Skriv upp rekursionsformeln för Eulers metod tillämpad på ekvationen ovan. Hur många beräkningar av f(x,y) behövs i ett steg? Förberedelseuppgift 1.2 Runge-Kuttas klassiska metod Rekursionsformeln för Runge-Kuttas klassiska metod är k 1 = h f(x n,y n ) k 2 = h f(x n +h/2,y n +k 1 /2) k 3 = h f(x n +h/2,y n +k 2 /2) k 4 = h f(x n +h,y n +k 3 ) y n+1 = Hur många beräkningar av f(x,y) behövs i ett steg? 2
Förberedelseuppgift 1.3 Trapetsmetoden, explicit uttryck Den implicita formeln för trapetsmetoden är y n+1 = y n + h 2 (f(x n,y n )+f(x n+1,y n+1 )). Eftersom den givna differentialekvationen i avsnitt 2 är linjär går det att ta fram ett explicit uttryck för y n+1. Lös alltså ut y n+1, då trapetsmetoden tillämpas vår testekvation y = 5y +2.5. Ange rekursionsformeln som erhålls. 1.4 Att komma igång Öppna ett terminalfönster. Skriv: TANA79setup (vilket definierar kursbiblioteket och sökvägar) cp $kursbib/odemetoder.m. matlab & (kopierar odemetoder.m till din egen area) (vilket gör att MATLAB startas i egna fönster) 2 Första ordningens begynnelsevärdesproblem Vi skall tillämpa tre metoder på testekvationen: y = 5y+2.5 = f(x,y), 0 x x final, y(0) = 1. (Exakt lösning: y = (e 5x +1)/2) Exakta lösningen till denna differentialekvation finns på ode1.m på kursbiblioteket. Förberedelseuppgift 2.1 Skriv program Utgå från det justerade programmet sinus.m från den första labben och skriv tre Matlab-funktioner som beräknar lösningen till testekvationen med Eulers metod, Runge-Kuttas metod resp trapetsmetoden. (Döp Euler-funktionen till något annat än euler eftersom det redan finns i Matlab.) Programmet ska i varje steg skriva ut x-värde, y-värde, exakt värde (ode1(x)) samt beloppet av trunkeringsfelet, R T, ( abs(y-ode1(x))). Tänk på att y måste beräknas innan x stegas upp om programmet ska fungera för godtycklig f(x,y). Dessutom ska lösningen plottas. Man kan skriva ut varje lösningspunkt som en stjärna i varje steg. 3
2.1 Stabilitet Eulers och Runge-Kuttas metoder är exempel på explicita metoder. Dessa kräver i regel relativt korta steglängder för att kunna fungera. Om steglängden (h) är större än en viss kritisk gräns (som är olika för olika differentialekvationer) så avlägsnar sig den numeriska approximationen alltmer från den exakta lösningen då n växer. Vi säger då att metoden är instabil för detta h. I motsatt fall sägs metoden vara stabil. Förberedelseuppgift 2.2 Teoretisk stabilitetsgräns för Eulers metod Tag teoretiskt fram den största steglängd, h stabil, som kan användas för att vår testekvation ska få en stabil lösning. Redovisa beräkningarna. [Boken, sid. 331] Uppgift 2.3 Datorexperiment h stabil = Undersök vad som inträffar i dessa metoder för h = 0.1, h = 0.45 och h = 0.6. För vilka steglängder är respektive metod stabil? h Euler Runge-Kutta Trapets Sätt x final = 5 0.1 0.45 0.6 Vad är fördelen med trapetsmetoden jämfört med de båda andra metoderna? Jämför och kommentera h stabil för Euler med det praktiska resultatet. 4
2.2 Undersökning av felets beroende av steglängden Uppgift 2.4 Bestämning av maximalt trunkeringsfel Väljh = 0.1(allametodernaärdåstabila)ochx final = 1ochtittapådetmaximala felet. Notera för vilket x-värde det erhölls. Halvera sedan steglängden två gånger och för in felen för samma x-värde i tabellen. (Använd format short e) Maximalt trunkeringsfel i intervallet [0, 1] då h = 0.1 fås för x-värdet: i h i maxfel, Euler maxfel, Runge-Kutta maxfel, Trapets Sätt x final = 1 1 0.1 2 0.05 3 0.025 Uppgift 2.5 Analys av felets uppförande Vi vet att trunkeringsfelet beror på steglängden enligt: R T c h p, där p är ett heltal och c beror av x, men är oberoende av steglängden h. För att enkelt kunna bestämma p är det lämpligt att först bestämma kvoterna mellan felen. För in dessa i den vänstra tabellen. Bestäm sedan p och ett ungefärligt värde på c (använd minsta h-värdet) för resp. metod. i h i /h i+1 Euler Runge-K. Trapets Euler Runge-K. Trapets 1 2 p c Uppgift 2.6 Effektivitet Antag att vi vill bestämma lösningen till testekvationen på intervallet [0, 1] med ett största tillåtet trunkeringsfel på 10 8. Totala antalet funktionsberäkningar, dvs beräkningar av f(x, y) enligt formlerna på sidan 2, kan användas som ett mått på det räknearbete en metod kräver. Beräkna med hjälp av resultaten i uppgift 2.5 vilken steglängd vi behöver för att få önskad noggrannhet. Beräkna sedan antalet funktionsberäkningar per steg, antalet steg samt totala antalet funktionsberäkningar. Gör till sist en testkörning med den effektivaste metoden och den beräknade steglängden, samt ange erhållet maximalt trunkeringsfel. Erfordrad steglängd, h Euler Runge-Kutta Trapets Antal funk.ber per steg 1 Antal steg Totala antalet funk.ber. Testresultat: maximalt trunkeringsfel med effektivaste metoden. 5
3 Ett regulatorproblem Vi skall nu studera en numerisk simulering av en regulator för en vattentank. Frågor som vi skall svara på är: Hur kan vi välja en lämplig numerisk metod? Vilka slutsatser kan man dra av en numerisk simulering? En tank är fylld med vatten enligt figuren nedan. Vid tidpunkt t är vattennivån x(t). Vattentillförseln y(t) styrs av en regulator. Dess egenskaper beror på förstärkningsfaktorerna K P och K I. Målet för regulatorn är att hålla x(t) så nära noll som möjligt. regulator y(t) + x(t) 0 tank Vi inför också en hjälpvariabel z(t) = t 0 x(s)ds. Sambanden kan beskrivas med ett system av ordinära differentialekvationer 1 (1) x (t) = 5 10 5 x(t)+y(t) 10 3, y (t) = K P x(t) y(t) K I z(t)+10 3, t > 0, z (t) = x(t). Vi använder begynnelsevillkoret x(0) = 1, y(0) = 0.001, z(0) = 0. Förstärkningskoefficienterna är K P = 0.1 och K I = 0.001. 3.1 Program Programmet odemetoder är förberett för att lösa problemet med Eulers metod (= Eulers explicita metod), Runge-Kutta och Eulers implicita metod. Om differentialekvationen är y = f(x,y) är formeln för Eulers implicita metod: y n+1 = y n +hf(x n+1,y n+1 ) 1 För en härledning hänvisas till Torkel Glad och Lennart Ljung, Reglerteknik, Studentlitteratur, 1989. 6
Uppgift 3.1 Eulers explicita metod för ett system av differentialekvationer (a) Systemet kan skrivas på formen v = Av+b, där vi har infört vektorn v = v(t) enligt: x(t) v = y(t). Ange A och b. z(t) (b) För att approximera lösningen, v(t), används en numerisk metod. Hur lyder Eulers explicita metod, då steglängden h används? Ledning: Formeln får samma formella utseende som den fått om A och b hade varit reella tal. (c) Ange begynnelsevektorn v 0. (d) Programmet odemetoder ska kompletteras med Eulers explicita metod. Redovisa ändringen i programmet på sidan 17. Uppgift 3.2 Eulers explicita metod, testkörning Komplettera programmet odemetoder med Eulers explicita metod. Kör sedan programmet med h = 0.2 och slut t = 100. Får vi en rimlig lösning? Skissa lösningskurvorna. Uppgift 3.3 Stabilitet i Eulers explicita metod Använd slut t = 500. och h = 1.5, 2.1, 2.24 och 2.26 och studera figurerna. Vilken var den största steglängd, där vi hade stabilitet? Förberedelseuppgift 3.4 Teoretisk stabilitetsgräns Tag fram ett uttryck för den största steglängd som kan användas för att systemet av differentialekvationer ska få en stabil lösning. [Kompl., avsnitt 3] Uppgift 3.5 Stabilitet, jämförelse Beräkna teoretiskt vilken steglängd som krävs för stabilitet och jämför med den praktiska bestämningen i uppgift 3.3. 7
Uppgift 3.6 Noggrannhet i Eulers explicita metod Vi ska studera noggrannheten i x(100). Trunkeringsfelet i approximationen med steglängden h kan uppskattas som skillnaden mellan approximationerna med steglängderna 2h och h. Använd format short e. Börja med steglängden h = 0.2 och halvera den tills trunkeringsfelet i x(100) är högst 10 5. Vid vilken steglängd uppfylldes noggrannhetskravet? Ange värdet av x(100). Ange värdet av trunkeringsfelet för x(100). Uppgift 3.7 Runge-Kuttas klassiska metod Hur lyder Runge-Kuttas klassiska metod, tillämpad på v = Av +b? [Ingegerd] Programmet odemetoder ska kompletteras med Runge-Kuttas klassiska metod. Redovisa ändringen i programmet på sidan 17. Uppgift 3.8 Runge-Kuttas klassiska metod, testkörning Kör sedan programmet med h = 0.2 och slut t = 100. Får vi en rimlig lösning? Uppgift 3.9 Stabilitet i Runge-Kuttas klassiska metod Använd slut t = 500. och h = 2, 3.12 och 3.15 och studera figurerna. Vilken var den största steglängd, där vi hade stabilitet? Uppgift 3.10 Noggrannhet i Runge-Kuttas klassiska metod Vi ska studera noggrannheten i x(100) på samma sätt som vid Eulers metod. Använd format long e. Börja med steglängden h = 2.5 och halvera den tills trunkeringsfelet i x(100) är högst 10 5. Vid vilken steglängd uppfylldes noggrannhetskravet? Ange värdet av x(100). Ange värdet av trunkeringsfelet för x(100). 8
Uppgift 3.11 Eulers implicita metod Tillämpa Eulers implicita metod på v = Av+b. Hur beräknas v n+1? Redovisa alla steg i uträkningarna. Programmet odemetoder ska kompletteras med Eulers implicita metod. Redovisa ändringen i programmet på sidan 17. Uppgift 3.12 Stabilitet i Eulers implicita metod Komplettera programmet odemetoder med Eulers implicita metod. Använd slut t = 500 och h = 5, 10, 50. Jämför med resultaten från Eulers explicita metod och Runge-Kuttas metod. Behövs ett villkor på h för att approximationerna skall vara stabila, dvs begränsade? Uppgift 3.13 Noggrannhet i Eulers implicita metod Ange approximationen av x(100) med h = 5. Ange felet i detta värde. (Jämför med tidigare Runge-Kutta-värde som är en bra approximation.) Kommentera noggrannheten. Uppgift 3.14 Förstärkningsfaktorn K I ökas Sätt nu K I = 0.2. Kör programmet med Eulers explicita metod. Använd h = 1 och slut t = 20. Vad händer? Skissa kurvorna. Är detta en egenskap hos regulatorn eller hos Eulers metod? Uppgift 3.15 Kör programmet även med Eulers implicita metod. Ta h = 0.1 och slut t = 20. Ta även slut t = 100. Stämmer slutsatsen i uppgift 3.14? Hur inser du det? 9
3.2 Undersökning av trunkeringsfelets beroende av steglängden Vi återvänder till fallet K P = 0.1, K I = 0.001. Förberedelseuppgift 3.16 Lokalt trunkeringsfel Vi använder Eulers explicita metod. Gör vi ett steg med steglängd 2h erhålls en approximation, α, till värdet x(2h). Gör vi ett nytt steg, nu med steglängd h, erhålls en approximation, β, till värdet x(h). Antag att det lokala felet är proportionellt mot h p. Då fås (2) α x(2h) C(2h) p, β x(h) Ch p. Angehurpkanuppskattasmedhjälpavα,β,x(2h)ochx(h).Redovisauträkningarna! Uppgift 3.17 (a) Använd format short e och kör programmet med Eulers explicita metod och h 1 = 0.5, slut t = h 1. Ta sedan h 2 = 0.25, slut t = h 2. Vad blir approximationerna α, respektive β? Använd format long (b) Vi känner inte värdena x(0.5) och x(0.25). Vi vet dock att Runge-Kuttas klassiska metod är mycket noggrannare än Eulers metod. Därför kan vi ersätta det exakta värdet x(0.5) med approximationen till x(0.5) som vi fått med Runge- Kuttas metod. På samma sätt för x(0.25). Approximera nu x(0.5) med Runge-Kuttas metod med steglängd h 1 = 0.5. Approximera x(0.25) med Runge-Kuttas metod med steglängd h 2 = 0.25. Vad blir x(0.5) och x(0.25)? (c) Uppskatta p. 10
Förberedelseuppgift 3.18 Globalt trunkeringsfel Låt 4h vara en steglängd. Låt oss beräkna en approximation α till x(100) med någon numerisk metod. Sedan tas steglängderna 2h och h, och beräknas approximationer β respektive γ till x(100). Antag att det globala felet är proportionellt mot h p. Då fås ekvationssystemet (3) α x(100)+c(4h) p, β x(100)+c(2h) p, γ x(100)+ch p. Härled ett uttryck för att bestämma p med hjälp av α, β och γ. [Ex.saml. 3.2] Uppgift 3.19 (a) Kör programmet med Eulers explicita metod och h 1 = 2, slut t = 100. Ta sedan h 2 = 1 och h 3 = 0.5. Vilka värden får approximationerna α, β och γ? (b) Uppskatta p. (c) Stämmer resultatet överens med svaret i Uppgift 3.17? Motivera ditt svar! 11
4 Jämförelse med Matlab-rutinen ode23 I Matlab finns det flera rutiner som löser begynnelsevärdesproblem. Några bygger på Runge-Kutta metoder med olika noggrannhet och varierar steglängden beroende på lösningens utseende. Till exempel behöver man ta kortare steg där lösningen varierar kraftigt. En av dessa rutiner är ode23. Högerledet i differentialekvationen, f(t, y), måste specificeras och detta kan göras i ett inline-uttryck eller i en fil. Eftersom f ska vara en funktion med två parametrar måste uttrycket skrivas som dessa exempel: fkn=inline( -5*y+2.5, t, y ) eller fkn=inline( [1 2;3 0]*y+[2;1], t, y ) Om f(t,y) definierats med inline blir anropet [t,y] = ode23(fkn, [t0 tfinal], y0 ) Om f(t,y) definieras i filen fkn.m blir anropet [t,y] = ode23(@fkn, [t0 tfinal], y0 ) Om ode23 anropas utan utparametrar kommer lösningen att plottas. Uppgift 4.1 Experiment med ode23 Använd ode23 för att approximera lösningen till regulatorproblemet fram till t = 100. Kontrollera så lösningen ser riktig ut genom att först anropa utan utparametrar och kör sedan med utparametrar. Använd size(t) för att ta reda på hur många steg ode23 har tagit. vilket motsvarar ett konstant h = Det går även att köra ode23 med en konstant steglängd, t.ex 2, om man skriver h = 2; options = odeset( AbsTol, 1, RelTol, 1, MaxStep, h); ode23(@fkn, [t0 tfinal], y0, options ) I detta fall (anrop utan utparametrar) kommer lösningen att plottas. Uppgift 4.2 Stabilitet hos ode23 Undersök vilken steglängd som ungefär behövs för att lösningen ska vara stabil. h S = 4.1 Konvergensordning hos ode23 Konvergensordningen hos en numerisk metod kan uppskattas mha datorexperiment även om vi inte känner den exakta lösningen. Undersök konvergensordningen för ode23 med hjälp av approximationer till x(100). (Använd format long.) Uppgift 4.3 Praktisk bestämning av p Uppskatta p för ode23. Redovisa nedan vilka värden och vilka h du använder. p = 12
5 Tillämpningar Nu följer tre exempel som alla ska lösas med ode23 och/eller annan metod. Exemplen är lånade från Lars-Åke Lindahl och Ulf Lindh, Kvantitativ biologi - matematik, statistik, modeller. 5.1 Populationsvariation med Lotka-Volterras modell X är en insekt som gör stor skada på grödan och det är därför viktigt för lantbrukare att populationsstorleken är så liten som möjligt. X har en naturlig fiende, insekten Y, och sambandet mellan populationsstorlekarna x respektive y (angivna i miljoner insekter) beskrivs av Lotka-Volterra-ekvationerna där tiden t mäts i år. dx dt = 2x 0.2xy dy dt = 0.01xy y Ett år, när antalet skadeinsekter är 200 miljoner och antalet nyttiga insekter 8 miljoner, beslutar en lantbrukare att som en engångsåtgärd använda kemiska bekämpningsmedel. Hen lyckas på så sätt utrota 99% av skadeinsekterna. Tyvärr försvinner också 50% av de nyttiga insekterna på kuppen. Uppgift 5.1 Undersökning av max-storleken a) Hur stor skulle populationen av skadeinsekter varit när den varit maximalt stor, om hen inte gjort den kemiska bekämpningsinsatsen? b) Hur många skadeinsekter får man som mest efter insatsen? c) Vilka x och y ger jämvikt i systemet? Uppgift 5.2 Undersökning av periodiciteten Gör ett xy-diagram för fallet a) i förra uppgiften. (Plotta x(t), y(t) över en längre tidsperiod.) Blir lösningen periodisk? Uppgift 5.3 Lös med Runge-Kutta Upprepa experimentet i förra uppgiften men lös nu systemet med Runge-Kuttas metod. Vilken steglängd behövs för att få en periodisk lösning?(använd programmet rk.m.) 13
5.2 SIR-modellen för sjukdomsspridning En enkel modell för spridningsförloppet i en epidemi, som fungerat förvånansvärt bra i många fall, är SIR-modellen (Susceptible, Infected och Recovered). I modellen indelas populationen i tre grupper: mottagliga, S(t), infekterade, I(t), och tillfrisknade, R(t). Till de tillfrisknade räknas också de personer som dött av sjukdomen. Populationen (inklusive de som dött) förutsätts ha en konstant storlek N. Infektionsparametern β är ett mått på sjukdomens smittsamhet. Den hastighet varmed antalet infekterade personer minskar är direkt proportionell mot antalet infekterade individer, med en sjukdomsspecifik proportionalitetskonstant γ. Antalet personer i varje grupp ges av differentialekvationerna ds dt = βsi di = βsi γi dt dr dt = γi där tiden t mäts i dygn. Vi förutsätter till att börja med att antalet immuna individer när sjukdomen startar är lika med noll, dvs. att R(0) = 0 och därför är S(0)+I(0) = N 5.3 En influensaepidemi En influensaepidemi på en internatskola startade med en infekterad och 762 mottagliga personer. Använd parametervärdena β = 0.00218 och γ = 0.44036. Studera de första två veckorna. Uppgift 5.4 Maximalt antal sjuka Avgör under vilket dygn antalet sjuka är som störst och hur många som då är sjuka. Uppgift 5.5 Timma för kulmen Undersök under vilken timma som flest personer är sjuka. Använd möjligheterna för utskrifter i ode23. Uppgift 5.6 Undersök N Stämmer det att antalet personer hela tiden är det samma? Uppgift 5.7 Öka tidsintervallet Hur många personer totalt blev sjuka? En epidemi kan inte starta om antalet mottagliga individer från början är mindre än tröskelvärdet τ = γ/β. Tillfrisknandeparametern γ kan vi inte påverka men parametern 14
β skulle genom diverse försiktighetsåtgärder gå att minska. Ett mer radikalt grepp är att sänka antalet mottagliga individer genom vaccinering. Då flyttar vi direkt individer från gruppen av mottagliga till gruppen av tillfrisknade. Det räcker att vaccinera en så stor andel att antalet mottagliga individer understiger tröskelvärdet. Uppgift 5.8 Effekten av vaccinering Hur många blir sjuka om individer vaccerinas så att gruppen mottagliga är 250? När nås kulmen? Hur många är då sjuka? När kan epidemin anses vara över? 15
5.4 Enzymkinetik Ett enzym är ett protein som katalyserar (förändrar reaktionshastigheten hos) en kemisk reaktion. I det första steget av en enzymkatalyserad reaktion känner enzymet igen den molekyl som ska förändras, kallad substrat. Enzymet och substratet reagerar för att bilda ett komplex. Detta bryts sedan ned för att bilda det fria enzymet plus en eller flera produkter. Vi inför beteckningar där E är enzymet, S substratet, C enzym-substratkomplexet och P reaktionsprodukten. Vi låter e, s, c och p beteckna koncentrationerna hos E, S, C och P och k 1, k 1 och k 2 är proportionalitetskonstanter. En kompartmentsmodell ger oss systemet av differentialekvationer ds dt = k 1c k 1 es de dt = (k 1 +k 2 )c k 1 es dc dt = k 1es (k 1 +k 2 )c dp dt = k 2c Vid starten av reaktionen finns det bara substrat och enzym i koncentrationerna s 0 och e 0. Övriga koncentrationer är noll. Begynnelsevärdena är därför s(0) = s 0, e(0) = e 0, c(0) = 0, och p(0) = 0. Tidsskalan är okänd. Prova att använda k 1 = 10, k 1 = 3000 och k 2 = 111.5. Uppgift 5.9 Lös systemet Använd givna värden och lös systemet. Kontrollera att e(t)+c(t) = e 0 Reaktionshastigheten, V, dvs den hastighet varmed produkten bildas, fås som derivatan av p med avseende på t. Det innebär att V = dp/dt som enligt systemets fjärde ekvation ger V = k 2 c. Uppgift 5.10 Studera hastigheten Plotta reaktionshastigheten som funktion av t. Visa en skiss. 16
6 Programmet odemetoder % program för att approximera lösningen till % % v (t) = A v(t) + b, 0 < t < slut_t, % % v(0) = v_0. % % Anrop: % % v_slut_t = odemetoder(a,b,v_0,h,slut_t,m) % % Här är A en 3x3 matris, b är en 3x1 vektor. % Begynnelsevillkoret är kolumnvektorn v_0. % Programmet approximerar lösningen v(t) i R^3 % på intervallet 0 < t < slut_t. % Approximationen till v(slut_t) är v_slut_t. % Approximationen beräknas med Eulers explicita metod (m=1), % med Runge-Kuttas klassiska metod (m=2), % eller med Eulers implicita metod (m=3). % Steglängden är h. function [v_slut_t] = odemetoder(a,b,v_0,h,slut_t,m) N=round(slut_t/h); slut_t=n*h; % lagra sista approximationen i vektorn v: v=v_0; % lagra approximationerna i 3*(N+1) matrisen w: w(1:3,1)=v; if m==1 % Eulers explicita metod for i=1:1:n % v= ; %%%%%%%% Fyll i %%%%% w(1:3,i+1)=v; end nodes=[0:h:slut_t]; plot(nodes,w(1,:), b,nodes,w(2,:), r,nodes,w(3,:), k ); title([ approximation med Eulers explicita metod. Blått=x(t),,... rött=y(t), svart=z(t) ]) elseif m==2 % Runge-Kuttas klassiska metod for i=1:1:n % k_1 = ; %%%%%%%% Fyll i %%%%% % k_2 = ; %%%%%%%% Fyll i %%%%% % k_3 = ; %%%%%%%% Fyll i %%%%% % k_4 = ; %%%%%%%% Fyll i %%%%% % v = ; %%%%%%%% Fyll i %%%%% w(1:3,i+1)=v; end nodes=[0:h:slut_t]; plot(nodes,w(1,:), b,nodes,w(2,:), r,nodes,w(3,:), k ); 17
title([ approximation med Runge-Kuttas metod. Blått=x(t),,... rött=y(t), svart=z(t) ]) elseif m==3 % Eulers implicita metod % matrisen C = I - h*a, där I är enhetsmatrisen C = eye(3) - h*a; for i=1:1:n % v = ; %%%%%%%% Fyll i %%%%% w(1:3,i+1) = v; end nodes=[0:h:slut_t]; plot(nodes,w(1,:), b,nodes,w(2,:), r,nodes,w(3,:), k ); title([ approximation med Eulers implicita metod. Blått=x(t),,... rött=y(t), svart=z(t) ]) end v_slut_t=v; 18