Matematisk analys, laboration I Per Jönsson Teknik och Samhälle, Malmö Högskola
Viktig information om laborationerna Ianalyskurseningårtreobligatoriskalaborationer.UnderlaborationanvändsMatlab/GNU Octave och under laboration 2 och 3 datoralgebrasystemet Maxima. För att bli godkänd krävs att alla tre laborationerna har redovisats på ett godtagbart sätt. Vid laborationerna gäller följande: Laborationsuppgifterna (och eventuella förberedelseuppgifter) skall vara gjorda innan man kommer till laborationen (du är alltså tvungen att sitta hemma eller i datorsal före laborationen och göra uppgifterna samt förbereda dig). Har du stött på problem med uppgifterna kan du komma till frågetimmarna innan laborationen. Under laborationen skall uppgifterna redovisas. Under laborationen kan du även få hjälp med något moment du inte har lyckats få rätt på hemma. Studenter som inte har förberett uppgifterna när de kommer till laborationen underkänns. Vid laborationstillfälle redovisas laboration, vid laborationstillfälle 2 redovisas laboration 2. Man kan t.ex. inte utebli under laboration och sedan redovisa laboration och 2 vid laborationstillfälle 2.Det går inte att byta laborationsgrupp under kursens gång. Om man inte kan närvara på en laboration på grund av sjukdom så måste detta anmälas snarast till kursledaren. För de som har anmält frånvaro på grund av sjukdom till kursledaren finns ett reservtillfälle i slutet av kursen då man kan redovisa laborationer man missat. Endast studenter som har meddelat frånvaro till kursledaren på grund av sjukdom bereds plats vid reservtillfällena. Reglerna ovan tolkas strikt och är till för att få laborationsmomentet att fungera praktiskt och underlätta er egen planering Användning av GNU Octave Du kan använda gratisprogrammet GNU Octave istället för Matlab för att göra laborationsuppgifterna. Alla kommandon är precis lika i de två programmen. För att ladda ner Octave gå till programmets hemsida www.gnu.org/software/octave/ och klicka på download. För mera information om nedladdning och hur Matlab och Octave fungerarsekompendiet Introduktion till Matlab och GNU Octave av Per Jönsson. Kompendiet finns att ladda ner på kurshemsidan. För att alla kommandona i denna laboration skall fungera är det viktigt att ni vid nedladdningen av programmet kryssar i att tilläggspaketen odepkg, optim och statistics också skall installeras. Vid oklarheter fråga kursledaren. För att installera GNU Octave på MAC se instruktionsfilm på it slearning. Användning av Maxima Maxima är ett så kallat datoralgebrasystem (computer algebra system CAS). För att ladda ner Maxima går man in på http://maxima.sourceforge.net/. Påsidanfinnsävenomfattande dokumentation till programmet på flera olika språk. Installationen på Windows självförklarande. För MAC finns instruktionsfilm på it slearning. 2
Idatoralgebraprogramutförmanoperationerpåsymbolersomrepresenterarmatematiskaobjekt. De matematiska objekten kan vara formler, ekvationer, funktionerochsåvidare.operationerna sker i enlighet med kända algebraiska lagar och regler. Exempel på datoralgebraiska operationer är sådana som beräknar derivatan av en funktion d sin x ex dx eller som löser en differentialekvation y + y = te t, y(0) =. Repetition av Matlabuttryck Vi börjar med att repetera hur Matlab hanterar kolonnvektorer För att definiera kolonnvektorn v = 3 4 skriver vi Matlab v = [ ; 3 ; 4] där ; talar om för Matlab att det är nya rad. För att mata in matrisen 2 A = 3 5 4 3 skriver vi Matlab A = [ 2 ; 3 5 ; 4 3] Om vi vill ta fram elementen i första kolonnen är kommandot A(:,) och Matlab svarar ans = 2 3 För att ta fram elementen i andra kolonnen skriver vi A(:,2) och Matlab svarar ans = 2 5 3 3
2 Första ordningens differentialekvationer En ordinär differentialekvation (ODE) anger ett samband mellan en funktion och dess derivator. En allmän ODE av första ordningen kan skrivas y = f(x, y), där f är en känd funktion. Med en lösning till en differentialekvation menar vi en funktion y(x) som uppfyller ekvationen. I samtliga fall av praktiskt intresse finns en, och endast en, lösning som går genom en given punkt i (x 0,y 0 ) i xy-planet. En differentialekvation tillsammans med ett villkor på lösningen kallas ett begynnelsevärdesproblem (jmf. Analysboken sid 368). Exempel. Begynnelsevärdesproblemet { y = 5y y(0) = 3 har lösningen y(x) =3e 5x,tyderivationgeratt y (x) = 5e 5x = 5y(x). Insättning av x =0ger vidare att y(0) = 3e 0 =3. 2. Geometrisk tolkning Differentialekvationer av första ordningen har en enkel geometrisk tolkning. Vi uppfattar y som riktningskoefficienten för lösningen genom punkten (x, y). Funktionenf(x, y) associerar därmed en riktning till varje punkt i xy-planet, det så kallade riktningsfältet. Genom att studera riktningsfältet är det ofta möjligt att få en kvalitativ uppfattning on lösningarna till differentialekvationen (jmf. Analysboken sid 369). Exempel 2. Vi betraktar differentialekvationen y = x y. Ipunktenx =, y =har f(x, y) =x y värdet 0, vilketvimarkerarixy-planet med ett litet streck med riktningskoefficient 0. Ipunktenx =, y =2har f(x, y) =x y värdet, vilket vi på samma sätt markerar med ett litet streck med riktningskoefficient osv. Genom att markera riktningen för ett antal punkter i xy-planet får vi till slut en god bild av riktningsfältet. Riktningsfältet till differentialekvationen är ritat i figur. I samma figur har vi också ritat in den exakta lösningen till ekvationen som går genompunkten(0, ), dvssom uppfyller villkoret y(0) =. 2.2 Numerisk lösning Riktningsfältet kan tas som utgångspunkt för numeriska lösningar av differentialekvationer med begynnelsevillkor. Antag att vi söker en lösning till ekvationen { y = f(x, y) y(x 0 )=y 0. 4
3 2.5 2 y.5 0.5 0 0 0.2 0.4 0.6 0.8.2.4.6.8 2 x Figur : Riktningsfält och lösning till differentialekvation y = x y. Som approximation till lösningskurvan nära (x 0,y 0 ) använder vi dess tangent. Ett approximativt värde y på lösningskurvan i en punkt x = x 0 + h ges alltså av y = y(x 0 )+y (x 0 )h = y 0 + f(x 0,y 0 )h. Detta närmevärde kan i sin tur utnyttjas för att konstruera ett närmevärde y 2 ipunkten x 2 = x 0 +2h och vi har y 2 = y + f(x,y )h. Genom att fortsätta på samma sätt får vi y n+ = y n + f(x n,y n )h, vilket ger en följd av närmevärden y n+ till den exakta lösningen y(x) ipunkternax n+ = x 0 +(n +)h. Ovanståendemetodattbestämmanumeriskalösningartillförsta ordningens differentialekvationer kallas Eulers metod. Det är klart att ju mindre steglängd h vi använder desto bättre approximation till lösningen får man. Eulers metod är enkel men inte särskilt effektiv. Eulers metod beskrivs i Analysboken på sid. 370-37. 2.3 Matlab kommandon Matlab/Octave har ett antal färdiga rutiner för att lösa första ordningens begynnelsevärdesproblem. Den vanligaste och mest användbara rutinen är ode45,vilkenärbetydligteffektivare än Eulers metod. Vi visar användandet av denna rutin genom ett antal exempel. 5
Exempel 3. För att lösa { y = y y(0) = i intervallet[0, 3] inför vi funktionen i högerledet som en anonym funktion f = @(x,y) -y Observera att vi låter f bero på både x och y även om x inte ingår explicit. Sedan anropar vi ode45 [x,y]=ode45(f,[0 3],); som beräknar lösningen till differentialekvationen i ett antal punkter. Dessa punkter lagras som kolonnvektorer i x och y. Förattplottalösningengervikommandot plot(x,y); xlabel( x ) ylabel( y ) och vi får figuren nedan. 0.8 0.6 y 0.4 0.2 0 0 0.5.5 2 2.5 3 x Figur 2: Lösning till differentialekvation y = y med begynnelsevillkor y(0) =. Exempel 4. För att lösa { y = x y y(0) = 2 i intervallet[0, 5] inför vi funktionen i högerledet som en anonym funktion f = @(x,y) x-y Sedan anropar vi ode45 och ritar lösningen 6
[x,y]=ode45(f,[0 5],2); plot(x,y); xlabel( x ) ylabel( y ) och vi får figur 3. 4.5 4 3.5 3 y 2.5 2.5 0 2 3 4 5 x Figur 3: Lösningar till differentialekvationen y = x y med begynnelsevillkor y(0) = 2. 3 Andra ordningens differentialekvationer En andra ordningens differentialekvation kan allmänt skrivas som y = f(x, y, y ). För att få en entydig lösning måste två villkor ställas y(x 0 )=y 0 och y (x 0 )=y.enandra ordningens differentialekvation är ekvivalent med ett system av två första ordningens differentialekvationer. Sätt y = y och y = y 2 och differentialekvationen ovan övergår i systemet { y = y 2 y 2 = f(x, y,y 2 ). System av ekvationer är lätta att arbeta med och används ofta vid numeriska beräkningar. 3. Matlab kommandon Matlabs rutin ode45 klarar att även att lösa system av ekvationer. Vi visar användandet av denna rutin med följande exempel. Exempel 5. Förattlösaekvationen y +2y +5y =0 y(0) = 2 y (0) =. 7
iintervallet[0, 0] börjar vi med att skriva om ekvationen som ett system av första ordningens ekvationer. Genom att sätta y = y och y = y 2 får vi y = y 2 y 2 = y 2 5y y (0) = 2 y 2 (0) = Vi inför funktionen i högerledet som en anonym funktion f = @(x,y) [y(2) ; -y(2)-5*y()] Notera hur vi skrev in högerledet som en kolonnvektor (jämför avsnitt).vianroparode45 med [x,y]=ode45(f,[0 0],[2; ]); % Begynnelsevillkor y(0)=y(0)=2, y2(0)=y (0)= Idettafalletlagrasvärdenapåy = y och y = y 2 som kolonn respektive kolonn 2 i en matris med namn y. Förattplottalösningeny som funktion av x ger vi kommandot plot(x,y(:,)) xlabel( x ) ylabel( y ) % plottar första kolonnen av y, dvs den sökta lösningen och vi får figur 4. 2.5 2.5 y 0.5 0 0.5 0 2 4 6 8 0 x Figur 4: Lösningar till differentialekvationen y +2y +5y =0med begynnelsevillkor y(0) = 2 och y (0) =. 8
Exempel 5. För att lösa ekvationen x +2x + x =2cost x(0) = 0 x (0) = 0. iintervallet[0, 6π] börjar vi med att skriva om ekvationen som ett system av första ordningens ekvationer. Genom att sätta x = x och x = x 2 får vi x = x 2 x 2 = 2x 2 x +2cost x (0) = 0 x 2 (0) = 0 Vi inför funktionen i högerledet som en anonym funktion (notera att vi nu har t och x som variabler istället för x och y som vi har haft tidigare) f = @(t,x) [x(2) ; -2*x(2)-x()+2*cos(t)] Notera hur vi skrev in högerledet som en kolonnvektor (jämför avsnitt).vianroparode45 och ritar lösningarna [t,x]=ode45(f,[0 6*pi],[0; 0]); plot(t,x(:,)) % Begynnelsevillkor x(0)=x(0)=0, x2(0)=x (0)=0 och vi får figuren nedan..5 0.5 0 0.5.5 0 5 0 5 20 Figur 5: Lösningar till differentialekvationen x +2x + x =2cost med begynnelsevillkor x(0) = x (0) = 0. 9
4 Randvärdesproblem En differentialekvation tillsammans med villkor på lösningen i en punkt (vanligtvis begynnelsepunkten) av lösningsintervallet sägs vara ett begynnlesevärdesproblem. I många tillämpningar inom hållfasthetslära och konstruktion har vi istället villkor i både början och slutet av lösningsintervallet. Sådana problem kallas randvärdesproblem. Vi ska titta på nedböjningen av en balk med längd L som är upphängd i sina ändpunkter. Med en jämn transversell last w och en spänning T får vi en differentialekvation för nedböjningen y(x) som ges av y T EI wx(x L) y =, 0 x L. 2EI Eftersom balken är upphängd i ändpunkterna gäller att nedböjningen är noll då x =0och x = L, dvs y(0) = y(l) =0. Ett sätt att lösa randvärdesproblemet är med inskjutningsmetoden. Gissaettvärdey gissa på y (0) och använd detta för att med någon av de tidigare metoderna för begynnelsevärdesproblem beräkna y(l). Omy(L) råkar bli 0, vilket det naturligtvis inte blir, så är vi nöjda, annars försöker vi med nya värden på y (0). Omvipåettsystematisktsättgissarnyavärdenkommer vi till slut att hitta den sökta lösningen som går uppfyller randvärdena y(0) = y(l) =0 Vi illustrerar metoden genom att beräkna nedböjningen för en balkmed L =00, w =00, E =0 7, T =500, I =500. Som tidigare börjar vi med att skriva om ekvationen som ett system av första ordningens ekvationer y = y 2 y 2 = T EI y + y (0) = 0 y 2 (0) = y gissa wx(x L) 2EI Vi inför högerledet som en anonym funktion L = 00; w = 00; E = 0^7; T = 500; I = 500; f = @(x,y) [y(2); y()*t/(e*i) + w*x*(x-l)/(2*e*i)]; 0
Vi anropar ode45 och ritar lösningarna L =00; ygissa = 0.00; [x,y]=ode45(f,[0 L],[0; ygissa]); % Begynnelsevillkor y(0)=y(0)=0 plot(x,y(:,)) % och y2(0)=y (0)=ygissa grid on xlabel( x ) ylabel( nedbojning ) och vi får figur 6. 0.035 0.03 0.025 nedbojning 0.02 0.05 0.0 0.005 0 0 20 40 60 80 00 x Figur 6: Nedböjning av balk med ygissa =0.00 Från figuren ser vi att balkens ändpunkt vid x = L inte går ner till noll, dvs den gissade derivatan var för stor. Vi anropar på nytt ode45 men nu med ett mindre värde på ygissa L =00; ygissa = 0.0008; [x,y]=ode45(f,[0 L],[0; ygissa]); % Begynnelsevillkor y(0)=y(0)=0, plot(x,y(:,)) % och y2(0)=y (0)=ygissa grid on xlabel( x ) ylabel( nedbojning ) varvid vi får figur 7.
0.025 0.02 nedbojning 0.05 0.0 0.005 0 0.005 0 20 40 60 80 00 x Figur 7: Nedböjning av balk med ygissa =0.0008 Från figuren ser vi att balkens ändpunkt vid x = L går under noll, dvs den gissade derivatan var för liten. Genom att fortsätta att är det uppenbart att vi kan hitta ett värde på derivatan som gör att lösningen blir noll vid x = L och vi har fått fram balkens nedböjningsprofil! 5 Uppgifter att redovisa Nedanstående uppgifter skall redovisas under laborationstillfället. Observera att uppgifterna skall göras hemma innan laborationen och att det är redovisning som gäller under laborationen. Matlab (eller Octave) kommandona som behövs för att lösa uppgifterna kopierar du till ett Worddokument eller liknande så att det går att följa vad du gjort.klippäveninmatlabs svarsutskrifter och eventuella plottar eller figurer. Du skall visa upp dokumentet med kommandon och svarsutskrifter för din laborationshandledare i samband med redovisningen.du skall också vara beredd på att svara på frågor kring hur du har löst uppgifterna. Se till att svara på alla uppgifterna.. En fallskärmshoppare med massan m = 00 kg faller med farten v 0 = 20 m/s när han utlöser skärmen. Väl utlöst ger skärmen upphov till en bromsande kraft som är proportionell mot hopparens fart i kvadrat (proportionalitetskonstant k =40Ns 2 /m 2 ). Om vi väljer referensriktningen så att krafter och hastigheter blir positiva då de är riktade nedåt blir nettokraften på hopparen F (t) =mg kv(t) 2 Kombinerat med Newtons andra lag F (t) = ma(t) = mv (t) ger detta upphov till begynnelsevärdesproblemet v = g k m v2 v(0) = v 0 =20 2
Använd Matlabs rutin ode45 och lös begynnelseproblemet i tids intervallet [0, 0]. Plotta lösningen och skriv ut lämplig text på axlarna. Bestäm hopparens fart då t blir stort (gränsfarten). 2. Betrakta en pendel med längden L och massan m. y(t) L m Beteckna vinkelutslaget med y(t) och anta att pendeln påverkas av gravitationskraften samt av en dämpande kraft F (t) = cy (t), därc är dämpningskonstanten. Detta ger upphov till begynnelsevärdesproblemet y + y(0) = a y (0) = b c ml y + g sin y =0 L, där y(0) = a är vinkelutslaget och y (0) = b vinkelhastigheten vid t =0. (a) Skriv om ekvationen som ett system av första ordningens differentialekvationer. (b) Sätt g/l =, c/(ml) =0.3, a = π/2, b =0och använd Matlabs rutin ode45 för att lösa differentialekvationen i tidsintervallet [0, 30]. Plotta lösningen och skriv ut lämplig text på axlarna. 3. Betrakta balken i avsnitt 3. (a) Fortsätt körningarna och bestäm ett värde på ygissa sådant att lösningen uppfyller y(l) =0.Hurstorärnedböjningenvidx =20respektive x =50?Användgärna zoom funktionen för att få fram noggranna värden. (b) Ändra w från 00 till 200 och bestäm ett värde på ygissa sådant att lösningen uppfyller y(l) =0.Hur stor är nu nedböjningen vid x =20respektive x =50? 4. Vi har en fjäder med en masspunkt enligt figuren. 3
k = fjaderkonstant m x(t) Då vi försummar dämpningen får vi differentialekvationen (jmf. Analysboken sid. 393-394). kx(t) }{{} F (t) = mx (t) x (t)+ k x(t) =0 }{{} m ma(t) där x(t) är avståndet, med tecken, till fjäderns jämviktsläge och k fjäderkonstanten. Karakteristiska ekvationen är r 2 + k m =0 r = ±i k m och ekvationen har lösningen x(t) =C sin (µt + δ) k där µ = är systemets egenfrekvens. m Vi applicerar nu en extern kraft F (t) =A cos(ωt), vilketledertilldifferentialekvationen kx(t)+a cos(ωt) =mx (t) x (t)+ k m x(t) = A m cos(ωt) (a) Skriv om ekvationen som ett system av första ordningens differentialekvationer. (b) Låt m = k = a =och tag x(0) = x (0) = 0. AnvändMatlabsrutinode45 och lös differentialekvationen i tidsintervallet [0, 30] för några olika värden på den yttre frekvensen ω. Plottalösningenochskrivutlämpligtextpåaxlarna.Hurser lösningen ut då ω är lika med systemets egenfrekvens? Hur ser lösningen ut då ω ligger nära egenfrekvensen? 4