Technology Management Mapleövning 3 Namn: Personnummer: Allmänt Denna andra övning kommer huvudsakligen att handla om funktioner av mer än en variabel. Inledningen av dagens pass att ägnas dock åt resonans (högst ytligt). Resonans Vanliga ekvationer, t.ex. x 2 3x+2 = 0 har du stött på ett otal gånger. Lösningen är då tal. En annan typ av ekvationer är differentialekvationer. De utgörs av ett samband mellan en funktion y och vissa av dess derivator. I gymnasiet kan du eventuellt ha stött på vissa sådana ekvationer. Exempel. Betrakta begynnelsevärdesproblemet y (t) + 3y (t) + 2y(t) = x 2, y(0) = 2, y (0) = 1. Utöver själva differentialekvationen finns här också krav på funktionen då t = 0. Om t uppfattas som tiden så är dessa krav på funktionen y i begynnelsen (t = 0). Maple kan naturligtvis lösa dylika problem. I detta fall kan det ske på följande sätt dsolve, rhs eq:=diff(y(t),t$2)+3*diff(y(t),t)+2*y(t)=0,y(0)=2,d(y)(0)=1; dsolve({eq},{y(t)}); simplify(expand(")); Det första begynnelsekravet y(0) = 2 innebär att funktionsgrafen ska gå genom punkten (0, 2). Det andra begynnelsekravet D(y)(0) = 1 innebär att derivatan ska vara 1 då t = 0. Det är alltså ett krav på funktionsgrafens lutning i punkten (0, 2). Lösningen blir t.ex. med kommandot plot(rhs( ),t=0..2,scaling=constrained);. Du kan lätt rita lösningen (Kommandot rhs är en förkortning av right hand side.) Notera att kurvan startar i punkten (0, 2). Vilken lutning har den där? En källa till differentialekvationer är Newtons kraftekvation enligt vilken massan gånger accelerationen = kraften. Bekant?
Betrakta exempelvis ekvationen y (t) = F (t) 0.2y (t) 16.01y(t). Här skulle en möjlig tolkning kunna vara att y (t) betyder massan 1 gånger accelerationen, 0.2y (t) kommer från en bromskraft, 16.01y(t) är en återförande fjäderkraft och F (t) är en yttre kraft. Om den yttre kraften varierar med en viss frekvens kan lösningen y(t) uppnå stora värden. Det har uppstått resonans. Mera längre ner. Repetition. I optimeringskursen har de trigonometriska funktionerna ej behandlats. En kort resumé finns dock i appendix C. Vad som behövs för stunden känner du dock från gymnasiet. Först en påminnelse om definitionen av sinusfunktionen. Betrakta en punkt P = (x, y) på enhetscirkeln. Se figuren nedan till vänster! Vinkeln AOP mäts i radianer (180 motsvarar π radianer). Eftersom cirkelns radie är 1 blir längden av den feta cirkelbågen AP också t. Nu definieras sin t som den andra koordinaten för punkten P. Alltså är y = sin t. I ett rätvinkligt ty-koordinatsystem avsätts nu punkten (t, y). Om detta sker för varje t i intervallet 0 t 2π fås sinusfunktionens graf på detta intervall. Efter 2π startar funktionen om på 0. y 1 P = (x, y) y (t, sin t) O t A x t t y y = sin t t 2π t En animation av förloppet kan du hämta i form av ett worksheet på nätet. Ikonisera Maple och starta Netscape. Gå till adressen http://www.maths.lth.se/matematiklth/datorstodd/kvantmetod/ kvantmetod.html Spara filerna sinmovie.mws och resonans.mws på c:\temp\ Stäng Netscape. 2
Återgå till Maple. Gå till File och Open. Välj c:\temp\ och där filen sinmovie.mws. Klicka på figuren och sedan på play -knappen. Då periodiska (ekonomiska) förlopp skall beskrivas kan sinus och cosinusfunktionen komma till pass. (cosinus definieras analogt. Den ges av punkten P :s förstakoordinat, dvs. x = cos t.) I detta sammanhang kan du använda sinus för att modellera en periodisk yttre kraft. Mera precist skall du studera hur lösningen till begynnelsevärdesproblemet y (t) + 0.2y (t) + 16.01y(t) = 10 sin(ωt), y(0) = 0, y (0) = 1 beror av ω. Läs från c:\temp\ in filen resonans.mws. Du får då tillgång till kommandosviten omega:=1; eq:=diff(y(t),t$2)+1/5*diff(y(t),t)+1601/100*y(t)=10*sin(omega*t), y(0)=0,d(y)(0)=1; f:=rhs(dsolve({eq},{y(t)})); f:=combine(expand(f),trig); plot(f,t=0..20); Du får en lösning då ω = 1. Vi är närmast intresserade av att i grafen - efter en stund - avläsa det största värde som lösningen till begynnelsevärdesproblemet har. I lösningen ingår ett par exponentialtermer som med ökande t snabbt går mot 0. Genom att vänta en stund innan du avläser maxvärdet hinner inverkan från exponentialfunktionerna att försvinna. Praktiskt kan du uppnå detta genom att ändra plot-kommandot till plot(f,t=100..120);. Du ser nu att lösningens maxvärde blir ungefär 0.64. Din närmaste uppgift är nu att upprepa dessa beräkningar för ω = 2, 3, 3.5, 4, 4.5, 5, 6, 7 och för varje ω-värde avläsa lösningens maxvärde. Fyll i dina värden i följande tabell ω 1 2 3 3.5 4 4.5 5 6 7 maxvärde 0.64 Samla i Maple alla värdepar i en lista enligt mönstret l:=[[1,0.64], [2, ], [3, ], [3.5, ], [4, ], [4.5, ], [5, ], [6, ], [7, ]]; Sammanbind alla dessa punkter med räta linjer enligt plot(l); För vilket värde på ω verkar lösningen ha störst maxvärde ω =? För detta ω-värde föreligger alltså resonans. Ett exempel på hur resonans kan påverka byggnader kan du se på nätet. Gå till adressen dsolve, rhs, combine 3
http://instruction.ferris.edu/loub/media/bridge/bridge.htm Om du läser texten finner du att bron först visade upp transversella svängningar med en frekvens omkring 36 Hz. Senare tillkom torsionssvängningar. Med vilken frekvens Hz? Därmed stänger resonansavdelningen. Funktioner Funktionsvärden. Genom tilldelningen f:=(x,y)->(x^2-y^2)*exp(-x^2-y^2); definieras funktionen f. Funktionsvärdet i punkten (1, 2) beräknas via f(1,2);. Värdet blir. Effekten blir alltså densamma som av subs(x=1,y=2,(x^2-y^2)*exp(-x^2-y^2));. Derivation Ett sätt att derivera känner du sedan tidigare. Den partiella derivatan f kan du beräkna via diff((x^2-y^2)*exp(-x^2-y^2),x);. Men du kan också x använda operatorn D. Då skriver du D[1](f)(x,y);. Om du i stället vill derivera med avseende på y så skriv D[2](f)(x,y);. Bestäm den partiella derivatan med avseende på x då (x, y) = ( 3, 1) 2 Maple känner till formel [15.8], ty vad blir D[1,2](g)-D[2,1](g);? Här är g en funktion utan några speciella egenskaper. Alltså räknar Maple fel i vissa fall. Jämför Youngs sats sidan 515. spacecurve Funktionsgrafer. Som ett modellexempel kan du titta på funktionen f, som du kom i kontakt med ovan. Om du i f(x, y) sätter y = 0 får du kvar en funktion av enbart en variabel. Du kan rita den via plot(f(x,0),x=-2..2); För att få kurvan i ett rymdperspektiv så skriv with(plots): spacecurve([x,0,f(x,0),x=-2..2],axes=normal); Det är inget speciellt med just kurvan då y = 0. Du kan med kommandona plot1:=spacecurve([x,0,f(x,0),x=-2..2],axes=normal): plot2:=spacecurve([x,2,f(x,2),x=-2..2],axes=normal): plot3:=spacecurve([x,-2,f(x,-2),x=-2..2],axes=normal): display({plot1,plot2,plot3}); lägga till de två kurvorna då y = 2 resp y = 2. Givetvis kan du i stället fixera x och låta y variera. Skapa några kurvor i y-led med 4
plot4:=spacecurve([0,y,f(0,y),y=-2..2],axes=normal): plot5:=spacecurve([2,y,f(2,y),y=-2..2],axes=normal): plot6:=spacecurve([-2,y,f(-2,y),y=-2..2],axes=normal): display({plot1,plot2,plot3,plot4,plot5,plot6}); Det som börjar ta form är en bild av f:s graf. Men det blir det ganska jobbigt på detta sätt. Dessutom ser du behovet av att ta bort dolda delar av kurvan. Som tur är finns lösningen redan i Maple. Använd plot3d(f(x,y),x=-2..2,y=-2..2,axes=normal); så får du en 3D-bild uppritad ovanför rektangeln 2 x 2, 2 y 2. Studerar du?plot3d finner du att det finns en mängd optioner. Klicka på figuren! Du kan nu uppe till vänster hitta värden på två vinklar. De är i default-läget lika: θ = ϕ = 45. Den box i vilken figuren försvann kan du nu lätt snurra på. Peka på boxen med musen. Med vänster knapp nedtryckt kan du nu snurra på boxen genom att röra på musen. Notera hur vinklarna θ och ϕ ändras. Vrid boxen så att θ = 45 och ϕ = 120. Dubbelklicka nu på boxen så kommer figuren fram igen. Bilden skall nu vara upp och ner. Vrid tillbaka (ungefär). Du kan också rita om ytan med kommandot plot3d(f(x,y),x=-2..2,y=-2..2,axes=normal,orientation=[45,45]); Klicka på figuren. Högt uppe hittar du Style. Klicka där och välj Patch. Gå sedan in under Color och välj Z(Hue). Dubbelklicka på boxen. Experimentera gärna med ytterligare optioner. Titta t.ex. under Axes och Projection, Constrained. Tangentplan. I xz-planet är linjen z = f (0.7, 0)(x 0.7) + f(0.7, 0) en tangent x i punkten (0.7, 0, f(0.7, 0)) till kurvan z = f(x, 0). Du kan rita in den som en röd linje tillsammans med funktionsgrafen. Använd kommandona plot1:=plot3d(f(x,y),x=-2..2,y=-2.5..2.5,axes=normal, orientation=[-90,90]): z1:=f(0.7,0)+d[1](f)(0.7,0)*(x-0.7): plot2:=spacecurve([x,0,z1,x=-0.2..2],color=red,thickness=2): display({plot1,plot2}); Klicka på bilden och sedan på knappen 1:1. Gå in under View och välj där Zoom Factor, t.ex 300 %. Ta nu fram bilden igen. Avläs den röda linjens lutning. Den blir. Beräkna också D[1](f)(0.7,0). Jämför innehållet i de två senaste rutorna. Med kommandona plot1:=plot3d(f(x,y),x=-2..2,y=-2.5..2.5,axes=normal, orientation=[-120,40]): z2:=f(0.7,0)+d[2](f)(0.7,0)*y: plot3:=spacecurve([0.7,y,z2,y=-2..2],color=blue,thickness=2): display({plot1,plot2,plot3}); orientation thickness 5
ritar du en blå tangent som går genom (0.7, 0, f(0.7, 0)) och är parallell med yzplanet. Den röda och den blå tangenten spänner tillsammans upp ett plan genom punkten (0.7, 0, f(0.7, 0)). Detta plan är tangentplanet. Som bekant är dess ekvation (se sidan 512) z f(0.7, 0) = f 1 (0.7, 0)(x 0.7) + f 2 (0.7, 0)(y 0) Rita detta plan i den förra figuren. Använd plot4:=plot3d(f(0.7,0)+d[1](f)(0.7,0)*(x-0.7)+d[2](f)(0.7,0)*y, x=-0.2..2,y=-2..2,orientation=[-120,40]): display({plot1,plot2,plot3,plot4}); Byt vinklarna till θ = 60, ϕ = 70 och Color, Z(Greyscale). Notera hur de röda och blå tangenterna löper i tangentplanet. contourplot Nivåkurvor. Ett komplement till funktionsgrafen kan nivåkurvor vara. (En nivåkurva till en funktion f av två variabler är en sammanbindning av punkter (x, y), där f har samma funktionsvärde. Om f exempelvis beskriver en orts höjd över havet så utgör nivåkurvorna en sammanbindning av orter, som ligger på samma höjd. Om f beskriver lufttrycket så utgör en sammanbindning av orter med samma lufttryck kurvor, som på meteorologiska kartor brukar kallas isobarer.) Använd?contourplot för att lära dig hur contourplot fungerar. Rita sedan nivåkurvor till funktionen f ovan. Arbeta i området 2 x 2, 2 y 2. Ta med title= Nivåkurvor ritade av... där du ersätter... med ditt namn. (Apostroferna skall luta åt nordväst.) Klicka på knappen 1:1. Tryck ut bilden och tag med den i din rapport. I Maple finns också möjlighet att samtidigt visa den tvådimensionella bilden med nivåkurvorna och funktionens graf. Maple måste då fås att inhämta mera kunnande. Gör det med with(plottools);. Du kan börja med att rita om funktionsgrafen. Skriv plot2:=plot3d(f(x,y),x=-2..2,y=-2.5..2.5,style=patchcontour, axes=normal,grid=[50,50]): Genom det nya kommandot transform sänker du nivåkurvorna från xy-planet till i detta fall nivån z = 0.5. Skriv in plottools, transform, grid, numpoints, contourplot plot5:=contourplot(f(x,y),x=-2..2,y=- 2..2,numpoints=300,grid=[50,50]): g:=transform((x,y)->[x,y,-0.5]): display({plot2,g(plot5)}, orientation=[50,66]); Stationära punkter och extrempunkter. De stationära punkterna till funktionen f hittar du på följande sätt 6
f1:=d[1](f)(x,y); f2:=d[2](f)(x,y); solve({f1=0, f2=0},{x,y}); Vilka stationära punkter hittade du? Jämför dina fynd med funktionsgrafen och nivåkurvorna. Vilka som är lokala maximieller minimipunkter kan du nog gissa med stöd av grafen. Men om du vill räkna på det så kan du först bilda en kvadratisk form Q. Om (a, b) är en stationär punkt blir Q = f 11 (a, b)x2 + 2f 12 (a, b)xy + f 22 (a, b)y2 Om du specialiserar dig på punkten (1, 0) och funktionen ovan så bestämmer Maple Q om du skriver Q:=D[1,1](f)(1,0)*x^2+2*D[1,2](f)(1,0)*x*y+D[2,2](f)(1,0)*y^2; Denna kvadratiska form är uppenbarligen negativt definit, varför ( 1, 0) är en lokal maximipunkt. I detta fall var det mycket enkelt att undersöka Q. Betrakta därför i stället en annan funktion f. Skriv i Maple? En av dem är (0, 0). Be- Vilka stationära punkter får den stäm det Q som hör ihop med origo. f:=(x,y)->3*x^2+3*x*y+y^2+y^3; Q:=D[1,1](f)(0,0)*x^2+2*D[1,2](f)(0,0)*x*y+D[2,2](f)(0,0)*y^2; Vilket Q fick du? Här behöver du kanske kvadratkomplettera. Då behöver Maple ånyo utbildas. Denna gång med with(student);. Bland de nya kommandona finns completesquare. Skriv completesquare(q,x); och Maple framställer Q på en sådan form att du direkt kan avläsa karaktären hos Q. Den blir definit. Alltså är (0, 0) en lokal punkt. Maple tillhandhåller också funktionerna maximize och minimize.i Maple V Release 4 (som du kör just nu) är dessa kommandon vanskliga. I Release 5, som nu är släppt, beter sig maximize och minimize bättre. VARNING! Betrakta funktionen f(x, y) = x 2 + y 2, 0 x 1, 0 y 1. Uppenbarligen är minsta värdet 0 och största värdet 1. Men både maximize(x^2+y^2,{x,y},{x=0..1,y=0..1}); och minimize(x^2+y^2,{x,y},{x=0..1,y=0..1}); student completesquare maximize, minimize 7
ger värdet 0. Om det vore rätt skulle ju funktionen vara konstant lika med 0. Funktioner av flera variabler beter sig i många avseenden på sätt som du känner igen från envariabelfunktioner. Men ibland uppträder nya fenomen. För en kontinuerlig funktion f(x), som då x = a och då x = b har lokala minimivärden, gäller att det mellan a och b finns minst en punkt c, där f har ett lokalt maximum. Betrakta nu i stället funktionen f(x, y) = (x 2 4) 2 + (x 2 y x 2) 2. Denna funktion har den egenskapen att alla stationära punkter är lokal minimipunkter. Använd samma metod som ovan för att bestämma alla stationära punkter och för att visa att de är lokala minimipunkter. De stationära punkterna är Motsvarande kvadratiska former är Efter kvadratkomplettering får formerna utseendet coords, cylindrical Extremvärden med bivillkor. Betrakta funktionen f(x, y) = x 2 + y 2. Dess graf är en paraboloid. Du kan rita den medelst cylindriska koordinater f:=(x,y)->x^2+y^2; plot3d(sqrt(z),t=0..2*pi,z=0..20,coords=cylindrical, orientation=[33,65],axes=normal,style=patch,color=gray); Lagra bilden i variabeln a1 via a1:=plot3d(sqrt(z),t=0..2*pi,z=0..20,coords=cylindrical, orientation=[33,65],axes=normal,style=patch,color=gray): Funktionens minsta värde är uppenbarligen 0 medan största värde saknas. Det är då underförstått att definitionsmängden är hela planet. Begränsa nu definitionsmänden till de punkter i planet där g(x, y) = (x 2) 2 + (y 2) 2 = 2. Denna punktmängd blir en cirkel med medelpunkt i (2, 2) och radie 2. Du kan rita den via g:=(x,y)->(x-2)^2+(y-2)^2; implicitplot(g(x,y)=2,x=0..5,y=0..5,axes=normal,color=blue, thickness=2,numpoints=500, scaling=constrained); 8
Spara även den kurvan i en variabel, säg a2. (Ta bort scaling=constrained innan du sparar). a2:=implicitplot(g(x,y)=2,x=0..5,y=0..5,axes=normal,color=blue, thickness=2,numpoints=500): Att bestämma största och minsta värdet av f(x, y) under bivillkoret g(x, y) = 2 innebär alltså att hitta de blå punkter där f är störst respektive minst. För att rita de två bilderna i en enda tredimensionell bild och dessutom lyfta upp de blå punkterna på paraboloiden så skriv in with(plots): with(plottools): h:=transform((x,y)->[x,y,0]): k:=transform((x,y)->[x,y,f(x,y)]): display({k(a2),h(a2),a1}); Här placerar funktionen h den blå kurvan i xy-planet som tidigare men nu i en tredimensionell miljö. Funktionen k lyfter upp den blå kurvan till paraboloiden. Hur högt upp kan de blå punkterna på paraboloiden komma? När du vet det har du hittat det största värdet. I detta fall råder betydande symmetri. Linjen y = x skär cirkeln (x 2) 2 + (y 2) 2 = 2 i punkterna (1, 1) och (3, 3). Du ser att i (1, 1) blir f(x, y) minst och i (3, 3) störst. Med röd färg skall du nu sammanbinda punkterna (1, 1, 0) och (1, 1, f(1, 1)). Analogt drar du en grön linje mellan (3, 3, 0) och (3, 3, f(3, 3)). Innan du gör detta så ställ om så att bilden hamnar i ett separat fönster (Options, Plot Display, Window). Skriv sedan a3:=spacecurve([1,1,z,z=0..f(1,1)],color=red,thickness=2): a4:=spacecurve([3,3,z,z=0..f(3,3)],color=green,thickness=2): display({k(a2),h(a2),a1,a3,a4}); Tryck bilden (med ditt namn på) och lämna in den! Vad blir minsta respektive största värdet? Bilden kan även kompletteras med nivåkurvor till f. Skriv a5:=contourplot(f(x,y),x=-4..4,y=-4..4,contours=15): display({k(a2),h(a2),a1,a3,a4,h(a5)}); Som du ser tangerar nivåkurvorna till f den blå kurvan g(x, y) = 2 i punkterna (1, 1) och (3, 3). Detta ger villkoren i rutan sidan 655 (Lagranges metod). Sätt L(x, y) = f(x, y) λg(x, y). Enligt rutan gäller L 1 (x, y) = 0 L 2(x, y) = 0 g(x, y) = 2 contours Översätt till Maple via 9
L:=(x,y)->f(x,y)-lambda*g(x,y); solve({diff(l(x,y),x)=0,diff(l(x,y),y)=0,g(x,y)=2},{x,y,lambda}); extrema Vilken lösning fick du? I Maple finns en snabbare metod. När du tidigare utökade Maples kunnande med with(student); fick du bl.a. tillgång till funktionen extrema; I det nu aktuella fallet ger den extrema(f(x,y),{g(x,y)=2},{x,y}); Vad blir minsta och största värdet med denna metod? Om du i stället utför kommandot extrema(f(x,y),{g(x,y)=2},{x,y}, s ); och sedan s; så får du via s information om de punkter, där största och minsta värdena antas. Vad är dessa punkter i detta fall? Som vanligt bör du kritiskt ifrågasätta de resultat som Maple levererar. Vad blir minsta och största värdet av f(x, y) = x 2 y under bivillkoret g(x, y) = x + y = 1 om du använder extrema?? Om du i stället ur bivillkoret löser ut y så kan du använda minimize och maximize. Gör så här minimize(x^2*(1-x),{x}, infinite ); maximize(x^2*(1-x),{x}, infinite ); Vad blev största och minsta värdet? Vad fann extrema? Jo, de lokal maximi- och minimivärdena. Extrema kan även hantera flera bivillkor. I övning 18.5:6 söks max och min av funktionen f(x, y, z) = x + y + z under bivillkoren g 1 (x, y, z) = x 2 + y 2 + z 2 = 1, g 2 (x, y, z) = x y z = 1. Med extrema löser du problmet via extrema(x+y+z,{x^2+y^2+z^2=1,x-y-z=1},{x,y,z}); Största och minsta värdet blev. Avslutande uppgifter Uppgift 3. Gå till File och klicka på New. Dina kommande räkningar, som hör till uppgift 3, skall tryckas ut och lämnas in. Börja med textmod och skriv ditt namn. Betrakta funktionen f(x, y) = 1 + x y xy 2 + x 2 + y 2. Definiera funktionen f. Bestäm alla stationär punkter till f. (Utför solve({d[1](f)(x,y)=0,d[2](f)(x,y)=0},{x,y});) 10
Använd andraderivator och kvadratkomplettering för att avgöra vilka av de stationära punkterna som är lokala extrempunkter. (Det kan vara praktiskt att definiera den kvadratiska formen Q:=(a,b)-> D[1,1](f)(a,b)*h^2+2*D[1,2](f)(a,b)*h*k+D[2,2](f)(a,b)*k^2; Då (a,b) är en stationär punkt kommer Q(a,b) att vara den kvadratiska form som du genom kvadratkomplettering kan använda för att avgöra om (a,b) är en lokal extrempunkt. Använd gärna with(student); och completesquare;. Kvadratkompletteringen görs med avseende på h eller k.) Ange i textmode vilka de lokala extrempunkterna är och om de är lokala maxeller minimipunkter. Rita grafen genom kommandot plot3d(f(x,y),x=-4..4,y=-4..4,style=patchcontour,axes=boxed, orientation=[-106,59],shading=zhue); Rita grafen igen men nu med orientation=[-90,0];. Använd contourplot för att i en separat figur rita upp minst 40 nivåkurvor till funktionen. Arbeta i samma område som vid grafritningen. Uppgift 4. Bestäm största och minsta värdet av f(x, y) = 10 + 2x y under bivillkoret g(x, y) = x 2 xy + 2y 2 = 1. För vilka x och y antas största respektive minsta värdet? 11 JG 2000-06-22