Matematiska Institutionen, K T H. B. Krakus Differential- och integralkalkyl, del. Maplelaboration 1.
Exempel 1. Vart tog den lilla sträckan vägen? Maple är utrustad med ett avanserat ritprogram. Programet öppnas med with(plots); [animate, animate3d, animatecurve, changecoords, complexplot, comp contourplot, contourplot3d, coordplot, coordplot3d, cylinderplo display3d, fieldplot, fieldplot3d, gradplot, gradplot3d, implic listcontplot, listcontplot3d, listdensityplot, listplot, listpl odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot polyhedra_supported, polyhedraplot, replot, rootlocus, semilogp spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, t och vill man veta vad tex implicitplot gör och hur det kan användas, skriver man? implicitplot; Det finns de som anser att det bästa med Maple är möjligheten att kunna rita kurvor och ytor som annars kan vara svåra att föreställa sig: En bild säger mer än tusen ord. Du kan ha mycket glädje av detta ritprogram, men du måste veta att det har mycket humor och ibland skojar med dig. Här kommer ett par exempel på detta tema. Inte en enda punkt i xy planet satisfierar ekvationen (x + y + 1) 10 = 0. Vi ber Maple plotta lösningsmängden (alltså den tomma mängden!) till denna ekvation, då 0 x 4, 0 x 4. Man förväntar sig antingen ett ERROR meddelande eller en tom figur. Men Maple är generös implicitplot((x^ + y^ + 1)^10 = 0, x = 0..4, y = 0..4); Ekvationen x y = 0 beskriver en rät linje i planet. Precis samma linje ges av (x = 0 och vi låter Maple rita linjen för 0 x 1, 0 y 1. Vi vet att Maple bör rita en sträcka mellan punkterna (0,0) och (1,1). Den här gången är Maple snål implicitplot((x - ^ = 0, x = 0..1, y = 0..1); vi får ingenting. Vart tog den lilla sträckan vägen? Ingen som vet, ingen som vet.
Plot, implicitplot, plot3d, implicitplot3d. För att plotta en kurva på formen f(x, = 0 används kommandot implicitplot medan en funktionsgraf y = f(x) kan plottas med hjälp av kommandot plot. T.ex. för att plotta kurvan x 3 xy + y 5 1 = 0, 0 < x <, 1 < y < 1 skriver man with(plots): implicitplot(x^3 - x*y + y^5-1, x = 0.., y = -1..1); medan kurvan y = x, 0 < x < antingen kan plottas med hjälp av plot(x^, x = 0..); eller implicitplot(y - x^, x = 0.., y = -1..1 ); På samma sätt kan ytan f(x,y,z) = 0 plottas med hjälp av implicitplot(f(x,y,z), x intervall, y-intervall, z-intervall); men för att plotta ytan z = f(x, använder man plot3d(f(x,, x-intervall, z-intervall); Exempel. Tayloruveckling. Har ekvationen sin (x 3 + y 3 ) ln (1 + x + xy sin (x + y ) = 0 någon lösning (x, (0,0) om (x, ligger nära origo? Betrakta funktionen f(x, = sin (x 3 + y 3 ) ln (1 + x + xy sin (x + y ). f := sin(x^3 + y^3)*ln(1 + x + - x*y*sin(x^ + y^); f := sin ( x 3 + y 3 ) ln ( 1 + x+ xy sin ( x + y ) Det gäller att f(0,0) = 0 och vi vill undersöka om f(x, kan vara lika med noll i någon annan punkt (x, som ligger nära (0,0). Vi kan skaffa oss mera information om detta genom att approximera f med dess Taylorpolynom i punkten (0,0) (dvs. MacLaurinpolynom). readlib(mtaylor): p:=mtaylor(f,{x=0,y=0},5); p := x 4 + y 4 Vi har p(x, = x 4 + y 4 > 0 för alla (x, (0,0) och f (x, p(x, nära punkten (0,0) alltså f(x, > 0 i någon omgivning av (0,0). Med andra ord: Det finns en omgivning till punkten (0,0) där (0,0) är den enda lösningen till ekvationen. Anmärkning: Hur visste man att utveckling av grad 4 kan vara användbar? Tja. Man får pröva sig fram. Försök med mtaylor(f,{x = 0, y = 0}, n); där n = 1,, osv så får du se. Vi kan roa oss med att beskåda graferna till f och p nära punkten (0,0). with(plots): plot3d({f,p}, x = -0.1..0.1, y = -0.1..0.1);
Exempel 3. Tangent. Bestäm ekvationen för den räta linje som tangerar kurvan x + y + xy 6x 1y + 0 = 0 i någon punkt p och kurvan x + y + xy 1x 18y + 53 = 0 i en annan punkt q. Kurvorna är givna på formen f(x, = 0, där f (x, = x + y + xy 6x 1y + 0 och g (x, = 0, där g(x, = x + y + xy 1x 18y + 53. Vi ritar de båda kurvorna i en bild (intervallen 0 x 5, 1 y 4 är valda efter några försök) implicitplot({f,g}, x = 1..5, y = 1..4); Vi kan skissera lösningen: I tangeringspunkten p är f kurvans normalvektor = grad f (p) = (f x(p), f ý (p)) och denna vektor är parallell med tangentens normalvektor = n. I tangeringspunkten q är g kurvans normalvektor = grad g (p) = (g x(p), g ý (p)) och denna vektor är parallell med tangentens normalvektor = n. Låt p = (r,s) och q = (u,v). Ekvationen för den sökta tangenten kan skrivas på formen ax + by + c = 0 tangent := a*x + b*y + c = 0; tangent := ax+ by+ c= 0 och denna ekvation satisfieras av punkterna p = (r,s) och q = (u,v) e1 := subs(x = r, y = s, tangent); e := subs(x = u, y = v, tangent); e1 := ar+ bs+ c= 0 e := au+ bv+ c= 0 Punkterna p och q satisfierar också f resp g kurvans ekvationer e3 := subs(x = r, y = s, f); e4 := subs(x = u, y = v, g); e3 := r + s + rs 6r 1 s + 0 e4 := u + v + uv 1 u 18 v + 53
I tangeringspunkten p är f kurvans normalvektor = grad f (p) = (f x(p), f ý (p)) och denna vektor är parallell med tangentens normalvektor n = (a,b). Detta innebär att det finns en konstant k sådan att f x(p) = ka och f ý (p) = kb (ekvationerna e5 och e6 nedan) fx := diff(f,x); fy := diff(f,; fx := x + y 6 fy := y + x 1 e5 := subs(x = r, y = s, fx = k*a); e6 := subs(x = r, y = s, fy = k*b); e5 := r + s 6 = ka e6 := s + r 1 = kb I tangeringspunkten q är g kurvans normalvektor = grad g (q) = (g x(q), g ý (g)) parallell med tangentens normalvektor n = (a,b). Alltså g x(q) = ta och g ý (q) = tb för någon konstant t. gx := diff(g,x); gy := diff(g,; gx := y + x 1 gy := y + x 18 e7 := subs(x = u, y = v, gx = t*a); e8 := subs(x = u, y = v, gy = t*b); e7 := v + u 1 = ta e8 := v + u 18 = tb Nu löser vi ekvationssystemet e1, e,, e8 med avseende på obekanta a,b,c,r,s,u,v,t,k abc:=solve({e1,e,e3,e4,e5,e6,e7,e8},{a,b,c,r,s,u,v,t,k}); abc := { a = 1, r =, b = 4 1, u = 4, s =, t= t, v = 3, k= t, c = 4 1 } t t t och substituerar de erhållna värderna i tangentens ekvation Svar := subs(abc, tangent); Svar := x 4 y + 4 1 = 0 t t t Ledvis multiplikation med t och förenkling ger slutligen Svar := simplify(t/*svar); Svar := x y + = 0 Anmärkning: Lösningen kan förenklas så att tangentens ekvation fås genom att lösa ett ekvationssystem bestående av fyra ekvationer. Vi illustrerar lösningen med en figur där vi plottar de båda kurvorna och deras gemensamma tangent i närheten av tangeringspunkterna p = (r,s) = (,) och q = (u,v) = (3,4), exempelvis för 0 x 5, 0 y 6. implicitplot({f,g,tangent},x=0..5,y=0..6);
Exempel 4. Närmaste punkten. Vilken punkt på parabeln x xy + y + 3x 6y = ligger närmast linjen x 5y = 5? f := x^ - *x*y + y^ + 3*x - 6*y - ; L := *x - 5*y - 5; f := x xy+ 3x+ y 6 y L := x 5 y 5 Vi ritar parabeln och linjen i samma figur för 4 x 4, 4 y 10 (intervallen valda efter några försök) implicitplot({f, L}, x = -4..4, y = -4..10); Det framgår av bilden att parabeln och linjen inte har några gemensamma punkter. Vi kontrollerar detta genom att lösa ekvationssystemet x xy + y + 3x 6y =, x 5y = 5. skarningspunkter := solve({f = 0, L = 0}, {x,y}); 5 skarningspunkter := { x = RootOf ( 47 + _Z 5 1 + 1 _Z) +, y = RootOf ( 47 + _Z + 1 _Z)} 6 3 Detta svårtolkade svar kan förenklas allvalues(skarningspunkter, 'dependent'); 1 { y = +, }, 3 I 11 x = 5 + 5 6 I 11 { y = 1 3 I 11, x = 5 5 6 I 11 } Ekvationssystemet har endast icke reella lösningar alltså parabeln och linjen har inga skärningspunkter. Om linjen L parallellförflyttas får vi så smånningom ett läge där linjen tangerar parabeln. Tangeringspunkten är just den punkt som ligger närmast L. Detta innebär att i den sökta punkten är parabelns normalvektor parallell med linjens normalvektor, dvs vektorerna grad f och (, 5) är parallella, alltså f x = t, f ý = 5t för något t. Vi beräknar f x och f ý fx := diff(f,x); fy := diff(f,; fx := x y + 3 fy := x + y 6 och löser ekvationssystemet f x = t, f ý = 5t, f = 0 (den sista ekvationen talar om att den sökta punkten ligger på parabeln) solve({fx = *t, fy = -5*t, f}, {x,y,t}); -13-19 { y =, t = 1, x = } 1 1 Den sökta punkten har koordinater ( 19/1, 13/1).
Exempel 5. Lokala extrempunkter. Bestäm eventuella lokala extrempunkter till funktionen f(x, = 4 cos (x y ) (x + y ). f := 4*cos(x^ - y^) - (x^ + *y^)^; f := 4 cos( x + y ) ( x + y ) Vi söker kritiska punkter till f fx := diff(f,x); fy := diff(f,; fx := 8 sin( x + y ) x 4( x + y ) x fy := 8 sin( x + y ) y 8( x + y ) y solve({fx = 0, fy = 0}, {x,y}); { x = 0, y = 0 },{ x = 0, y = 0 },{ x = 0, y = 0} Alltså en kritisk punkt (0,0). Vi undersöker punktens karaktär med hjälp av f xx, f xy, f yy. fxx := diff(fx,x); fxy := diff(fx,; fyy := diff(fy,; fxx := 16 cos( x + y ) x + 8 sin( x + y ) 1 x 8 y fxy := 16 cos( x + y ) yx 16 xy fyy := 16 cos( x + y ) y 8 sin( x + y ) 48 y 8 x Värdena av dessa derivator i den kritiska punkten (0,0) beräknas A := eval(subs(x = 0, y = 0, fxx)); B := eval(subs(x = 0, y = 0, fx); C := eval(subs(x = 0, y = 0, fy); A := 0 B := 0 C := 0 alltså AC B = 0. Vad göra? Vi undersöker tecknet av f(x, f (0,0) för (x, nära (0,0). Om det t.ex visar sig att f(x, f (0,0) > 0 för dessa (x, så är (0,0) en lokal minimipunkt. Teckenundersökning kan göras med hjälp av Tayloruvecklingen för f(x, f (0,0). Vi har f(0,0) = 4 och utvecklar f(x, 4 kring punkten x = 0, y = 0 t.o.m termer av grad 4: readlib(mtaylor): p := mtaylor(f - 4, {x = 0, y = 0}, 5); p := 3 x 4 6 y 4 Vi har p(x, = 3x 4 6y 4 < 0 för (x, (0,0) och f(x, f (0,0) p(x, nära (0,0) alltså f (x, f (0,0) < 0 i någon omgivning av (0,0) dvs (0,0) är en lokal maximipunkt till f. with(plots): plot3d(f, x = -1..1, y = -1..1, view = 3..4);
Exempel 6. Dubbelintegral. Beräkna dubbelintegralen y dxdy över det område som begränsas av kurvorna x D y = x 6 x 5 9x 3 x + 104 och y = x 3 39x + 146x 16. f := y/x; y1 := x^3-17*x + 9; y := x^5-10*x^4 + 38*x^3-66*x^ + 45*x + 5; y f := x y1 := x 3 17 x + 9 y := x 5 10 x 4 + 38 x 3 66 x + 45 x + 5 Vi bestämer skärningspunkterna mellan kurvorna y1 och y solve(y1 = y); 134,,, 1 + I, 1 I Man får tre reella lösningar x = 1, x = 3 och x = 4 vilket innebär att området D begränsas av y1 och y där 1 x 4. Vi kan plotta de båda kurvorna plot({y1, y}, x = 1..4); Vilken är den övre kurvan? Vi undersöker kurvornas inbördes läge. subs(x =, y1 - y); -4 För x = (och därmed för alla 1 < x < 3) är y1 y < 0 alltså kurvan y1 ligger under kurvan y då 1 < x < 3. subs(x = 3.5, y1 - y); 4.5315 På intervallet 3 < x < 4 ligger y ligger under kurvan y1. Sammanfattningsvis får vi att D 3 f(x, dxdy = 1 y dx y1 4 f(x, dy + 3 y1 dx y f(x, dy Svar := int(int(f,y=y1..y),x=1..3)+int(int(f,y=y..y1),x=3..4); 449977 Svar := 816 ln( 3) + 816 ln( ) 160
Exempel 7. Lokala extrempunkter approximativt. Vi söker lokala extrempunkter till funktionen f(x, = cos x 3 sin y + (x 4. f := *cos(x) - 3*sin(^ + *(x - ^4; f := cos( x) 3 sin( + ( x 4 Då f har partiella derivator i hela xy planet (inga sigulära punkter eller randpunkter) kan endast kritiska punkter vara lokala extrempunkter. Kritiska punkter fås ur ekvationssystemet f x = 0, f ý = 0 fx := diff(f,x); fy := diff(f,; fx := sin( x) + 8( x 3 fy := 6 sin( y ) cos( 8( x 3 Vi löser ekvationssystemet med hjälp av solve solve({fx = 0, fy = 0}, {x, y}); men vi får ingen lösning. Detta innebär att det antingen inte finns någon lösning eller att Maple ger upp. Vi kan försöka hitta en approximativ lösning med hjälp av fsolve (observera att även om det finns flera lösningar så kommer fsolve att svara med bara en approximativ lösning). solve({fx = 0, fy = 0}, {x, y}); { x = 3.14159654, y = 3.14159654} Det här svaret påminer om x = π, y = π. Visst! Om x = y = nπ (där n = 0, ±1, ±, ) så är f x = 0, f ý = 0. Vi har hittat oändligt många kritiska punkter (det kan finnas flera oupptäckta kritiska punkter). Vi kommer nu att undersöka punkternas karaktär. Observera först att tack vore att sin och cos är periodiska med perioden π, så räcker det att endast undersöka punterna x = y = 0 (samma beteende i ±π, ±4π, ±6π, ) och x = y = π (samma beteende i π, ±3π, ±5π, ). Vi kan först rita nivålinjer till f i närheten av dessa punkter. contourplot(f, x = -0.15..0.15, y = -0.1..0.1); Så här brukar nivålinjerna se ut i närheten av en extrempunkt.
contourplot(f,x = Pi - 0.15..Pi + 0.15, y = Pi - 0.1..Pi +0.1); Ett utseende som är typisk för nivålinjer kring en sadelpunkt. Vi skall dock inte förlita oss på bilderna ty i det första fallet kan det fortfarande vara en sadelpunkt och i det andra fallet en extrempunkt. Vi undersöker punktens karaktär med hjälp av f xx, f xy, f yy. fxx := diff(fx, x); fxy := diff(fx, ; fyy := diff(fy, ; fxx := cos( x) + 4 ( x fxy := 4 ( x fyy := 6 cos( + 6 sin( + 4 ( x och beräknar värderna av f xx f yy f xy och f yy punkterna (0,0) och (π,π). typ := [fxx*fyy - fxy^, fxx]; typ0 := eval(subs(x = 0, y = 0, typ)); typpi := eval(subs(x = Pi, y = Pi, typ)); typ0 := [ 1, -] typpi := [-1, ] vilket innebär att (0,0) är en lokal maximipunkt och (π,π) är en sadelpunkt. Vi kan upptäcka flera kritiska punkter om vi plottar kurvorna f x = 0, f ý = 0 i samma bild implicitplot({fx, fy}, x = 0..Pi + 0.3, y = 0..Pi + 0.);
Vi ser att kurvorna sker varandra i punkt (x, där < x < 3 och 1 < y <. Med hjälp av fsolve kan vi approximativt bestämma denna punkt punktappropximativt := fsolve({fx, fy}, {x =..3, y = 1..}); punktappropximativt := { x =.370785774, y = 1.8131784} ock punktens karaktär typ3 := eval(subs(punktappropximativt, typ)); typ3 := [ 58.13549637, 8.91997183] alltså en lokal minimipunkt.