CTH/GU STUDIO 6 MVE6 - /6 Matematiska vetenskaper Inledning Linjära system av differentialekvationer Vi har i studioövning sett på allmäna system av differentialekvationer med begynnelsevillkor u (t) = f(t,u(t)), a t b u(a) = u a Vi har också lärt oss att lösa dem i Matlab med Euler framåtmetoden eller t.ex. ode. I den här studioövningen kommer vi se på allmänna linjära system av differentialekvationer u (t) = Au(t), a t b u(a) = u a () där A är en konstant n n-matris. Sambandet mellan f och matrisen A ges av f(t,u) = Au Det är enkelt att lösa system () i Matlab enligt >> f=@(t,u)a*u >> t,u=ode(f,a,b,ua) Till skillnad från de flesta icke-linjära system så kan vi lösa de linjära analytiskt (dvs. exakt) med egenvärdesmetoden, se Lay kapitel.7. Riktningsfält och fasporträtt För att få en lite bättre uppfattning av vilka egenskaper systemet () har så skall vi titta närmare på högerledet: f(u) = Au. Funktionen f är exempel på en vektorvärd funktion och kallas vektorfält (dessa kommer att studeras mer i kursen i flervariabelanalys). För varje initialvärde till () så har vi en (okänd) lösning u(t). Från differentialekvationen har vi u = Au = f(u) () Vektorfältet f ger oss i varje punkt u den riktning i vilken lösningen förändras och dess längd ger förändringstakten. Genom att i ett lämpligt antal punkter u markera styrka och riktning för vektorn f(u) med en pil så får vi ett riktningsfält. Genom att rita upp detta riktningsfält får vi ungefärlig information om hur lösningen u(t) till ekvationen beter sig för samtliga möjliga startvärden. Vi kan alltså skapa kurvan u(t) genom att sätta pennan på den startpunkt u a vi önskar och sedan följa pilarna.
För att rita vektorfält i planet använder vi kommandot quiver. Men först måste vi skapa ett gitter (grid) med de punkter i vilka vi vill sätta ut pilar (som beskriver vektorfältets storlek och riktning i respektive punkt). Som exempel tar vi (från studioövning ): Volterra-Lotka-ekvationerna u (t) = f(u(t)) med au (t) bu f(u(t)) = (t)u (t) cu (t)+du (t)u (t) där a,b,c,d är konstanter. Vi ritar riktningsfältet enligt >> a=.; b=.; c=.; d=.; >> u=linspace(,,); u=linspace(,6,); >> U,U=meshgrid(u,u); >> f=@(u,u)a*u-b*u.*u; f=@(u,u)-c*u+d*u.*u; >> s=; % s - skalfaktor som förlänger pilarna. >> quiver(u,u,f(u,u),f(u,u),s) >> axis( 6), hold on och får en bild där pilarnas riktning visar fältets riktning. 6 6 u u 6 8 u 6 8 u Vi kan också lägga till några strömlinjer (lösningsbanor) med funktionen streamline, som bygger på approximationen u(t+h) u(t)+hf(u(t)) vilket vi känner igen som Euler framåtmetoden på systemet(). Vi väljer dock att följa noggrannare med ode enligt >> f=@(t,u)f(u(),u()); f(u(),u()); >> T=; tspan=linspace(,t,); >> U=.;.; >> t,u=ode(f,tspan,u); >> plot(u(:,),u(:,), g, LineWidth,) Vi löser för några ytterligare startvärden och får figuren ovan till höger.
Tidigare har vi främst ritat ut graferna för koordinatfunktionerna u (t) och u (t), men det är också naturligt att visualisera lösningen i ett så kallat fasporträtt där vi ritar u (t) mot u (t). Det blir extra intressant att rita in en sådan kurva (bana) i ett riktningsfält. Som exempel på ett linjärt system tar vi (Lay, Exempel, kapitel.7) u (t) = Au(t), t T där Vi ritar riktningsfältet A = u() = u >> A= -;- ; >> u=linspace(-,,);u=linspace(-,,); >> U,U=meshgrid(u,u); >> F=A(,)*U+A(,)*U; >> F=A(,)*U+A(,)*U; >> quiver(u,u,f,f,.) >> axis(- - ), hold on.9, u =.6.... u u.... u u En (numerisk) lösning får vi enligt följande: >> f=@(t,u)a*u; >> u=.9;.6; >> t,u=ode(f,,u); >> plot(u(:,),u(:,), r, LineWidth,) Vi ser hur lösningen u(t) följer fältets riktning i figuren ovan till höger. Där har vi även ritat ut lösningar för några andra begynnelsevillkor. Uppgift. Betrakta begynnelsevärdesproblemet: u (t) = Au(t), t T Rita riktningsfält och fasporträtt då u() = u
(a). A = (b). A =, u = och u =., u =, T = 7.. Egenvärdesmetoden, T =. Antag att A är en diagonaliserbar -matris med en bas av egenvektorer v och v och med tillhörande egenvärden λ respektive λ. Då ges lösningen till u (t) = Au(t), t T av formeln u() = u u(t) = c v e λ t +c v e λ t, där koefficienterna c och c bestäms av startvärdena u. Vi sätter t = och får Detta visar att u() = c v +c v = v v c c c c = V u, (u() = u ), där matrisen V = v v (kolonnerna är egenvektorerna till matrisen A). Som exempel ser vi åter på där A = u = Au, t T u() = u.9, u =.6 Med Matlab löser vi egenvärdesproblemet och ritar lösning enligt >> A= -;- ; u=.9;.6; T=; >> V,D=eig(A) >> t=linspace(,t); >> c=v\u; >> U=c()*V(:,)*exp(D(,)*t)+c()*V(:,)*exp(D(,)*t); >> plot(u(,:),u(,:), r ) Vi beräknar alla egenvärden och egenvektorer med eig enligt V,D=eig(A). Egenvärdena för matrisen A hamnar längs diagonalen i D och egenvektorerna blir kolonner i V. Lägg märke till hur vi bygger upp U, vektorn t är en radvektor och t.ex. V(:,) är en kolonn så att V(:,)*exp(D(,)*t) blir en matris. Längs första raden i U, dvs. U(,:), kommer u (t)-värden finnas för de olika t-värden i vektorn t och på andra raden, dvs. U(,:), finner vi motsvarande u (t)-värden..
Uppgift. Undersök systemet u (t) = Au(t) för matriserna A nedan. Rita i samma graf egenvektorerna till A och jämför riktningfältets egenskaper med egenvektorerna och motsvarande egenvärden. Förklara sambandet mellan riktningsfältet och matrisens egenvärden och egenvektorer. Matriserna nedan har reella egenvärden. När utgör origo en källa (alla lösningar strömmar från origo), en sänka (alla lösningar strömmar till origo) eller en sadelpunkt (lösningarna går mot origo men avviker sedan)? Rita också lösningen till differentialekvationen för några startvärden som ni hittar på själva. Använd ett lagom långt t-intervall. (a). A = (b). A = (c). A = När egenvärdena är reella har egenvektorerna en speciell betydelse (förutom att de bygger upp lösningarna). Om vi ritar linjer genom origo i egenvektorernas riktning får vi en uppdelning av fasplanet i sektorer ut från origo. En lösningskurva kan aldrig korsa en uppdelningslinje, den blir alltid kvar i samma sektor. Här ovan har vi ritat dessa egenvektorslinjer, som delar upp i sektorer, för matriserna från uppgiften ovan. Uppgift. Undersök systemet u (t) = Au(t) för matriserna A nedan. Nu har vi komplexa egenvärden så origo kommer vara en spiralpunkt (lösningarna går i spiral kring origo). Rita riktningfältet tillsammans med lösningen till differentialekvationen för några startvärden som ni hittar på själva. (a). A = (b). A = 9 8