Laboration 2 Ordinära differentialekvationer

Relevanta dokument
System av ordinära differentialekvationer

Ordinära differentialekvationer

Matlab övningsuppgifter

Ordinära differentialekvationer fortsättning

Ordinära differentialekvationer (ODE) 1 1

TMV151/181 Matematisk analys i en variabel M/Td, 2013 MATLAB NUMERISK LÖSNING AV ORDINÄRA DIFFERENTIALEKVATIONER

Föreläsningen ger en introduktion till differentialekvationer och behandlar stoff från delkapitel 18.1, 18.3 och 7.9 i Adams. 18.

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Laboration 4. Numerisk behandling av integraler och begynnelsevärdesproblem

Ordinära differentialekvationer,

Linjära system av differentialekvationer

ODE av andra ordningen, och system av ODE

Ordinära differentialekvationer,

Laboration 6. Ordinära differentialekvationer och glesa system

Matematisk analys för ingenjörer Matlabövning 3 Numerisk lösning av differentialekvationer

Teorifrågor. 6. Beräkna konditionstalet för en diagonalmatris med diagonalelementen 2/k, k = 1,2,...,20.

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Differentialekvationer. Repetition av FN5 (GNM kap 6.

LAB 4. ORDINÄRA DIFFERENTIALEKVATIONER. 1 Inledning. 2 Eulers metod och Runge-Kuttas metod

Linjära system av differentialekvationer

Laboration 1, M0039M, VT16

Numeriska metoder för ODE: Teori

Tentamen del 1 SF1546, , , Numeriska metoder, grundkurs

4 Numerisk integration och av differentialekvationer

Numeriska metoder för ODE: Teori

Repetitionsfrågor: 5DV154 Tema 4: Förbränningsstrategier för raketer modellerade som begynnelsevärdesproblem

Omtentamen i DV & TDV

Linjära system av differentialekvationer

Tentamen, del 2 Lösningar DN1240 Numeriska metoder gk II F och CL

Sammanfattning (Nummedelen)

0.31 = f(x 2 ) = b 1 + b 2 (x 3 x 1 ) + b 3 (x 3 x 1 )(x 3 x 2 ) = ( ) + b 3 ( )(

Matematisk analys, laboration I. Per Jönsson Teknik och Samhälle, Malmö Högskola

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Lösningsanvisningar till vissa av de icke obligatoriska workout-uppgifterna i Beräkningsvetenskap II

Grafritning och Matriser

TAIU07 Matematiska beräkningar med Matlab

Projekt Finit Element-lösare

(a) Skriv en matlabsekvens som genererar en liknande figur som den ovan.

Parametriserade kurvor

CTH/GU LABORATION 1 MVE /2013 Matematiska vetenskaper. Mer om grafritning

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Numeriska metoder för ODE: Teori

AUTONOMA DIFFERENTIALEKVATIONER

Laboration 2 M0039M, VT2016

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 20

f(x + h) f(x) h f(x) f(x h) h

Exempel ode45 parametrar Miniprojekt 1 Rapport. Problemlösning. Anastasia Kruchinina. Uppsala Universitet. Januari 2016

Tentamen i Beräkningsvetenskap II, 5.0 hp,

TENTAMEN I GRUNDKURS I NUMERISKA METODER - DEL 2

Linjära ekvationssystem

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Egenvärdesproblem för matriser och differentialekvationer

2D1250 Tillämpade numeriska metoder II

Inlämningsuppgift 4 NUM131

NUMPROG, 2D1212, vt Föreläsning 9, Numme-delen. Stabilitet vid numerisk behandling av diffekvationer Linjära och icke-linjära ekvationssystem

Sammanfattning av föreläsning 11. Modellbygge & Simulering, TSRT62. Föreläsning 12. Simulering. Föreläsning 12. Numeriska metoder och Simulering

Tentamen i Beräkningsvetenskap II, 5.0 hp, Del A

R LÖSNINGG. Låt. (ekv1) av ordning. x),... satisfierar (ekv1) C2,..., Det kan. Ekvationen y (x) har vi. för C =4 I grafen. 3x.

TMA226 datorlaboration

Laboration 3. Ergodicitet, symplektiska scheman och Monte Carlo-integration

Institutionen för Matematiska Vetenskaper TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1/TM1, TMA

Linjärisering, Jacobimatris och Newtons metod.

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

SF1633, Differentialekvationer I Tentamen, torsdagen den 7 januari Lösningsförslag. Del I

Mer om funktioner och grafik i Matlab

1.1 MATLABs kommandon för matriser

Tentamen del 1 SF1511, , kl , Numeriska metoder och grundläggande programmering

Laboration 1 i SF1544: Öva på Matlab och konstruera en optimal balk Avsikten med denna laboration är att:

DIFFERENTIALEKVATIONER. INLEDNING OCH GRUNDBEGREPP

Tentamen i Beräkningsvetenskap I, DV, 5.0 hp, OBS: Kurskod 1TD394

Institutionen för Matematik TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA DAG: Fredag 30 augusti 2002 TID:

2D1212 NumProg för P1, VT2006 PROJEKTUPPGIFT

Teknisk beräkningsvetenskap I 5DV154

Tentamen del 2 SF1511, , kl , Numeriska metoder och grundläggande programmering

Grafik och Egna funktioner i Matlab

Tentamen i Beräkningsvetenskap II, 5.0 hp,

SF1669 Matematisk och numerisk analys II Lösningsförslag till tentamen DEL A. r cos t + (r cos t) 2 + (r sin t) 2) rdrdt.

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Del I: Lösningsförslag till Numerisk analys,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

FMNF15 HT18: Beräkningsprogrammering Numerisk Analys, Matematikcentrum

Matematisk analys för ingenjörer Matlabövning 2 Numerisk ekvationslösning och integration

Mer om funktioner och grafik i Matlab

Laboration 3 Numerisk Analys

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Kapitel 8. Lösning av ordinära differentialekvationer

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Institutionen för Matematiska Vetenskaper TENTAMEN I LINJÄR ALGEBRA OCH NUMERISK ANALYS F1, TMA

Mer om geometriska transformationer

Omtentamen i DV & TDV

TANA17 Matematiska beräkningar med Matlab

Numeriska metoder, grundkurs II. Dagens program. Gyllenesnittminimering, exempel Gyllenesnittetminimering. Övningsgrupp 1

Kurs DN1215, Laboration 3 (Del 1): Randvärdesproblem för ordinära differentialekvationer

LABORATION 2. Trapetsregeln, MATLAB-funktioner, ekvationer, numerisk derivering

Denna föreläsning. DN1212 Numeriska metoder och grundläggande programmering FN Runge-Kuttas metoder. Repetition av FN6 (GNM kap 6.

= = i K = 0, K =

Funktioner och grafritning i Matlab

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Tentamen i Beräkningsvetenskap II, 5.0 hp,

Ordinära differentialekvationer, del 1

Transkript:

Matematisk analys i en variabel, AT1 TMV13-1/13 Matematiska vetenskaper Laboration Ordinära differentialekvationer Vi skall se på begynnelsevärdesproblem för första ordningens differentialekvation u = f(t, u), a t b u(a) = u a där f en given funktion och u a en given konstant. Som exempel tar vi problemet u = u(t) + sin(t) + cos(t), t 4 u() = u med analytisk (exakt) lösning u(t) = sin(t) + u e t. I den vänstra figuren nedan har vi ritat riktningsfältet och i den högra lösningskurvorna för några olika värden på u. Vi ser hur lösningskurvorna följer riktningsfältet. 1 1 u u(t) 1 1 1 3 4 t 1 3 4 t Metoder för att beräkna numeriska (approximativa) lösningar till differentialekvationer bygger på idéen att försöka följa riktningsfältet så noggrannt och effektivt som möjligt. Vi skall approximera lösningen u(t) till differentialekvationen på ett nät t n = a + nh för n =, 1,, N, med steglängden h = b a N. Låter vi u n beteckna approximationen av u(t n ) och ersätter u (t n ) med en framåt differenskvot D + u(t n ) så gäller D + u(t n ) = u(t n+1) u(t n ) h u (t n ) = f(t n, u(t n )) u(t n+1 ) u(t n ) + hf(t n, u(t n )) 1

Detta ger Eulers framåtmetod u n+1 = u n + hf(t n, u n ) Utgående från begynnelsevärdet försöker metoden följa riktningsfältet med korta steg. Metoden är explicit eftersom alla värden i högerledet är kända. Ersätter vi u(t n+1 ) med en bakåt differenskvot D u(t n+1 ) får vi D u(t n+1 ) = u(t n+1) u(t n ) h Detta ger Eulers bakåtmetod u (t n+1 ) = f(t n+1, u(t n+1 )) u(t n+1 ) u(t n ) + hf(t n+1, u(t n+1 )) u n+1 = u n + hf(t n+1, u n+1 ) Metoden är implicit eftersom u n+1, som är obekant, finns med även i f. För att ta ett steg måste man normalt lösa en icke-linjär ekvation med t.ex. Newtons metod. g(z) = z u n hf(t n+1, z) = Vi kan också integrera differentialekvationen från t n till t n+1 = t n + h och får u(t n+1 ) = u(t n ) + och kan sedan approximera integralen på olika sätt. tn+1 t n f(t, u(t)) dt Med vänster och höger rektangelregel får vi Eulers framåt- respektive bakåtmetod och med trapetsregeln får vi den implicita trapetsmetoden u n+1 = u n + h (f(t n, u n ) + f(t n+1, u n+1 )) Om vi i denna metod ersätter u n+1 i högerledet med en Euler framåt approximationen får vi Heuns metod som är en explicit metod. u n+1 = u n + h (f(t n, u n ) + f(t n + h, u n + hf(t n, u n ))) Metoderna vi sett på är alla konvergenta, dvs. tar vi tillräckligt liten steglängd kan vi få godtyckligt bra approximation på ett ändligt intervall. För Euler metoderna gäller att om vi halverar steglängden så (ungefär) halveras felet i approximationen. För trapetsmetoden och Heuns metod gäller att om vi halverar steglängden så delas felet i approximationen med (ungefär) fyra. Ett begynnelsevärdesproblem som beskriver förlopp eller processer vilka utspelas under tidsintervall av mycket olika storleksordning kallas för styvt. T.ex. inom kemisk reaktionsteknik är styva problem vanliga. För styva problem måste implicita metoder används, dvs. av typen Euler bakåtmetoden eller trapetsmetoden. Explicita metoder, som Euler framåtmetoden eller Heuns metod, blir mycket ineffektiva.

Rita riktningsfält Vi skall se hur man kan rita riktningsfält till differentialekvationen u = f(t, u), a t b u(a) = u a Ett riktningsfält består i en samling punkter (t i, u j ) i tu-planet (ett gitter) där vi i varje punkt ritar en liten pil i den riktning som en lösningskurva t (t, u(t)) genom punkten har precis i punkten, dvs. en pil i riktningen (1, u (t i )) = (1, f(t i, u j )). Vi skalar pilarna så att vi får en tydlig bild. (För korta pilar och inget syns, för långa pilar och bilden blir grötig.) Som exempel ritar vi riktningsfältet till det inledande begynnelsevärdesproblemet u = u(t) + sin(t) + cos(t), t 4 u() = u Först bildar vi ett gitter (grid) med meshgrid. I matriserna T och U kommer vi ha gittrets koordinater. Sedan bildar vi en matris DT med ettor, som är första koordinaterna i pilarna, och en matris DU, som är andra koordinaterna i pilarna. Slutligen ritar vi ut pilarna med quiver, där talet.9 är en skalfaktor (lagom långa pilar). >> f=@(t,u)-u+sin(t)+cos(t); >> a=; b=4; >> t=linspace(a,b,); u=linspace(-,,); >> [T,U]=meshgrid(t,u); >> DT=ones(size(T)); DU=f(T,U); >> quiver(t,u,dt,du,.9) Som resultat får vi vänstra figuren på första sidan. Uppgift 1. Rita riktningsfältet till följande begynnelsevärdesproblem u = cos(3t) sin(5t)u, t 5 Eget program i Matlab u() = u Vi skall nu beskriva hur man kan beräkna en numerisk lösning till begynnelsevärdesproblemet u = f(t, u), a t b u(a) = u a De metoder vi sett på går alla att använda men vi nöjer vi oss med Euler framåtmetoden, som är den enklaste av dessa metoder. Vi bildar först ett nät med nodpunkterna t n = a + nh, n =, 1,, N, och steglängden h = b a N. Detta ger en uppdelning av intervallet a t b i N stycken lika långa delintervall a = t < t 1 < t < < t n < t n+1 < < t N 1 < t N = b Vi beräknar sedan en approximativ lösning enligt U(t ) = u a U(t n+1 ) = U(t n ) + hf(t n, U(t n )). 3

Genom att förbinda punkterna (t n, U(t n )) med räta linjer får vi en graf och funktionen U(t) blir definierad också mellan beräkningsnoderna t n. I Matlab måste U(t n ) representeras av en vektor U med N komponenter. Med andra ord, U(n) skall innehålla approximationen av u(t n ) för beräkningsnoden (tidpunkten) t n. Vi ser på vårt inledande exempel och tar u() = 1. Så här enkel blir Matlab-koden >> f=@(t,u)-u+sin(t)+cos(t); >> a=; b=4; ua=1; >> N=1; h=(b-a)/n; >> t=a+(:n)*h; U=zeros(size(t)); >> U(1)=ua; >> for n=1:n U(n+1)=U(n)+h*f(t(n),U(n)); end >> plot(t,u) Uppgift. Vi ser återigen på begynnelsevärdesproblemet u = cos(3t) sin(5t)u, t 5 u() = Lös problemet med Euler framåtmetoden. Rita en graf av lösningen i en figur som dessutom innehåller riktningsfältet. Uppgift 3. Skriv en funktion min_ode med anropet [t,u]=min_ode(f,i,ua,h) som löser begynnelsevärdesproblemet med Euler framåtmetoden. Använd det progamskal du finner på kurshemsidan. Uppgift 4. Testa min_ode på följande begynnelsevärdesproblem. För varje exempel måste du skriva en funktionsfil av typen function y=funk(t,u). Lös först begynnelsevärdesproblemet analytiskt (dvs. som en formel med penna och papper). Rita både den analytiska lösningen u och den approximativa lösningen U i samma figur. (a). u (t) = t, 1 t 3 u(1) = 1 (b). u (t) = u(t), t u() = 1 (c). u (t) = t u(t), t 3 u() = 1 (d). u (t) = 5u(t), t 1 u() = Färdiga program i Matlab Det finns färdiga funktioner i Matlab för att lösa differentialekvationer, se Jönsson avsnitt 14.4. En sådan funktion är ode45 för vanliga begynnelsevärdesproblem, en annan är ode15s för styva problem. Med ode45 kan vi beräkna en lösning till vårt inledande exempel för t.ex. u() = 1 enligt >> a=; b=4; ua=1; >> [t,u]=ode45(@(t,u)(-u+sin(t)+cos(t)),[a b],ua); >> plot(t,u) 4

Här blir t en kolonnvektor, med t-värden mellan a och b, där lösningen är beräknad och U är en kolonnvektor med den beräknade lösningen för de olika t-värdena. Uppgift 5. För en sista gång ser vi på begynnelsevärdesproblemet u = cos(3t) sin(5t)u, t 5 u() = Lös problemet med ode45. Rita en graf av lösningen i en figur som även innehåller riktningsfältet och en approximation beräknad med Euler framåtmetoden. Använd olika färg för de olika graferna. System av differentialekvationer Med Matlab kan vi lika lätt lösa system av differentialekvationer u (t) = f(t, u(t)), a t b där u(t) = u 1 (t). u m (t) u(a) = u a, f(t, u) = f 1 (t, u 1 (t),, u m (t)). f m (t, u 1 (t),, u m (t)), u a = Skillnaden är att nu blir U en matris och vi finner u k (t) (för olika tidpunkter t i ) som kolonn U(:,k), dvs. kolonn nr k i U. Som exempel på ett system av ekvationer tar vi: Populationsdynamik Vi betraktar population av bytesdjur (kaniner) som lever tillsammans med en population rovdjur (rävar). Låt u 1 (t) respektive u (t) beteckna antalet kaniner respektive rävar vid tiden t. En enkel matematisk modell för populationernas utveckling ges av Volterra-Lotka-ekvationerna: u 1 (t) = a u 1 (t) bu 1 (t) u (t) u (t) = c u (t) + d u 1 (t) u (t) Koefficienterna a, b, c, d är positiva. Termen a u 1 (t) representerar netto-födelse-dödstalet i en ensam kaninpopulation. Termen c u (t) är motsvarande för rävarna. Termen bu 1 (t) u (t) är antalet kaniner som blir uppätna per tidsenhet. Termen d u 1 (t) u (t) är antalet rävar per tidsenhet som överlever på grund av tillgång på föda. Observera teckenkombinationen i ekvationerna. Vad blir lösningen om populationerna är ensamma (b = d = )? Vi beskriver högerledet i differentialekvationen med en funktion function f=volterra(t,u) a=.5; b=.3; c=.; d=.1; f=[ a*u(1)-b*u(1)*u() -c*u()+d*u(1)*u()]; Vi löser sedan med funktionen ode45 och ritar upp enligt >> u=[.5;.3]; >> [t,u]=ode45(@volterra,[ 8],u); u a1. u am 5

>> plot(t,u(:,1),t,u(:,), r-- ) >> legend( Bytesdjur, Rovdjur ) >> xlabel( Tiden ), ylabel( Population ) >> title( Volterra-Lotka ) 1 Volterra Lotka Population 1 8 6 4 Bytesdjur Rovdjur 1 3 4 5 6 7 8 Tiden Uppgift 6. Lös Volterra-Lotka-ekvationerna med ode45. Ändra koefficienterna till a =.5, b =.3, c =., d =.5. Högre ordningens differentialekvationer Högre ordningens differentialekvationer kan skrivas om som system av första ordningen. Dessa system kan sedan lösas numeriskt. Som exempel tar vi åter igen den matematiska pendeln. En masspunkt med massan m hänger i en viktlös smal stav av längden l. Med beteckningarna i figuren och Newtons andra lag får vi rörelseekvationen ml θ(t) = mg sin(θ(t)) Vi vill bestämma lösningen för olika begynnelseutslag θ, dvs. θ() = θ, då vi släpper pendeln från vila, dvs. θ() =. θ l m mg Om vi låter ϕ = θ, dvs. inför vinkelhastigheten, kan ekvationen skrivas θ = ϕ, θ() = θ ϕ = g sin(θ), ϕ() = l 6

För att komma till standardform låter vi u 1 = θ och u = ϕ och får u 1 = u, u 1 () = θ u = g l sin(u 1), u () = Nu har vi standardformen [ u = f(t, u) u1, u = u() = u u ] [ u, f(t, u) = g sin(u l 1) ] [ θ, u = ] Vi beskriver differentialekvationen i Matlab med funktionen function f=pendel(t,u,g,l) f=[u() -g/l*sin(u(1))]; Följer lösningskurvorna med ode45 för några olika begynnelseutslag och ritar en bild som visar lösningarna t (t, θ(t)) och fasporträtten t (θ(t), θ(t)) för de olika begynnelseutslagen. g=9.81; l=.1; theta=[3::11]*pi/18; tspan=linspace(,1,); for k=1:length(theta) u=[theta(k);]; [t,u]=ode45(@(t,u)pendel(t,u,g,l),tspan,u); subplot(1,,1), plot(t,u(:,1)), hold on subplot(1,,), plot(u(:,1),u(:,)), hold on end subplot(1,,1), hold off xlabel( $t$, interpreter, latex, fontsize,1) ylabel( $\theta(t)$, interpreter, latex, fontsize,1), subplot(1,,), hold off xlabel( $\theta(t)$, interpreter, latex, fontsize,1) ylabel( $\dot\theta}(t)$, interpreter, latex, fontsize,1) 1 1 θ(t) θ(t) 1 1..4.6.8 1 t 1 1 θ(t) Från figuren ser vi att periodlängden ökar med ökande begynnelseutslag. 7

Uppgift 7. En dämpad matematisk pendel beskrivs av ml θ(t) = mg sin(θ(t)) cl θ(t), t θ() = θ, θ() = där c är dämpningskonstanten. Lös problemet för l =.1, m =.1 och c =. och några olika begynnelseutslagsvinklar. Använd ode45. När vi gjorde figuren ovan i Matlab skrev vi formlerna med s.k. L A TEX-kod. Så brukar matematiker skriva formler för att de skall bli snygga. Men vi får vi se det som överkurs. 8