Veeltermafbeeldingen Pim Heesterbeek, Edo van Veen 9 juli 2009
Inhoudsopgave 1 Inleiding
5
2 Theorie 2.1 Definitie veeltermafbeelding . . . . . . . . . . . . . . . . . . . . . 2.2 Definitie strikte driehoeksvorm . . . . . . . . . . . . . . . . . . . 2.3 Definitie driehoeksvorm . . . . . . . . . . . . . . . . . . . . . . .
7 7 7 8
3 Maple 12 3.1 Commando’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 3D-animaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 2D-animaties . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9 9 9 10
4 Voorbeelden 4.1 Het Nagata-automorfisme . . . . . . . . 4.2 Het Van Veen-Heesterbeek-automorfisme 4.3 Het Maubach-automorfisme . . . . . . . 4.4 Een optische illusie . . . . . . . . . . . .
13 13 13 14 14
3
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
4
1
Inleiding
Beste lezer, Voor je ligt het resultaat van het eerstejaarsproject “Plaatjes van veeltermafbeeldingen”, dat wij onder begeleiding van Stefan Maubach hebben uitgevoerd in het voorjaar van 2009. In dit project hebben wij onderzocht op welke manier(en) met Maple 12 2D- en 3D-animaties kunnen worden gemaakt bij verschillende veeltermafbeeldingen. Onderzoeksdoel was daarbij het leveren van een (korte) beschrijving, waarmee iemand die niet of weinig bekend is met Maple, snel een dergelijke animatie kan maken. Dit verslag begint met een stukje theorie over veeltermafbeeldingen, waarna snel wordt doorgegaan naar het deel waarin wordt uitgelegd hoe zo’n animatie tot stand komt. Tot slot geven we enkele voorbeelden die wij zelf hebben gemaakt, met de code erbij. Dit verslag gaat vergezeld van een Maple-bestand, waarin de daadwerkelijke animaties bij onze voorbeelden te zien zijn. Eventueel zou de code daaruit door een ge¨ınteresseerde kunnen worden overgenomen en aangepast, teneinde zelf een dergelijke animatie te maken. Wij wensen je veel plezier met het lezen van dit projectverslag. Met vriendelijke groet, Edo van Veen en Pim Heesterbeek
5
6
2 2.1
Theorie Definitie veeltermafbeelding
Een veeltermafbeelding (Engels: polynomial map) is een afbeelding van de vorm F = (F1 , . . . , Fn ) : Rn → Rn , met veeltermen Fi in n variabelen x1 , . . . , xn , met co¨effici¨enten in R. Zo’n afbeelding F heet een automorfisme als deze een inverse heeft. Een voorbeeld van een veeltermafbeelding is F = (x, y) 7→ (x+y 2 , y−2x+8). Een simpel voorbeeld van een automorfisme is G = (x, y) 7→ (x + y 2 , y), met de inverse G−1 : (x, y) 7→ (x − y 2 , y). We zullen ons in dit project vooral bezighouden met de gevallen n = 2 en n = 3.
2.2
Definitie strikte driehoeksvorm
Een automorfisme heeft een strikte driehoeksvorm (triangulaire vorm), als deze in het geval n = 3 van de vorm is F : (x, y, z) 7→ (x + f (y, z), y + g(z), z + d). We kunnen schrijven F = Fz ◦ Fy ◦ Fx met Fx : (x, y, z) 7→ (x + f (y, z), y, z);
(1)
Fy : (x, y, z) 7→ (x, y + g(z), z).
(2)
Fz : (x, y, z) 7→ (x, y, z + d).
(3)
Fx is inverteerbaar met de inverse Fx−1 : (x, y, z) 7→ (x − f (y, z), y, z), Fy is inverteerbaar met de inverse Fy−1 : (x, y, z) 7→ (x, y − g(z), z). en Fz is inverteerbaar met de inverse Fz−1 : (x, y, z) 7→ (x, y, z − d). De samenstelling van deze afbeeldingen geeft F , dus F is ook inverteerbaar met inverse F −1 = Fx−1 ◦Fy−1 ◦Fz−1 : (x, y, z) 7→ (x−f (y −g(z −d), z −d), y −g(z −d), z −d). In strikte driehoeksvorm blijven inhouden (of, in het geval n = 2, oppervlaktes) gelijk.
7
2.3
Definitie driehoeksvorm
In het algemeen is een triangulair automorfisme van de vorm F : (x, y, z) 7→ (ax + af (y, z), by + bg(z), cz + cd), met a, b, c 6= 0. Dit kunnen we weer schrijven met F = Fa ◦ Fz ◦ Fy ◦ Fx . Hierin worden de Fx , Fy en Fz uit formules 1, 2 en 3 gebruikt, en Fa : (x, y, z) 7→ (ax, by, cz). Deze vier afbeeldingen hebben allemaal weer een inverse, dus F heeft ook een inverse x y z−d z−d y z−d z−d F −1 : (x, y, z) 7→ −f −g , , −g , . a b c c b c c Twee samengestelde driehoeksvormen in verschillende richtingen geven al grillige vormen. We kunnen ook een bewegend plaatje maken, door een afbeelding F te gebruiken met F : (x, y, z) 7→ (x + λf (y, z), y + λg(z), z + λd) en vervolgens λ te laten lopen.
8
3 3.1
Maple 12 Commando’s
Onderstaande commando’s zijn nuttig bij het genereren van 2D of 3D-animaties in Maple 12. with(package) Laadt een package, zoals Plottools of Plot3d. transform(f) Genereert een procedure, die gebruikt kan worden om de procedure f op alle punten uit een plotstructuur toe te passen. Daarbij is f een afbeelding Rm → Rn , met m, n ∈ {2, 3}. De input van f moet bestaan uit m argumenten, en de uitput uit een lijst van n argumenten. animate(plotcommando, plotargumenten, t=a..b, opties) Genereert een animatie over ´e´en parameter, hierboven weergegeven met t. plotcommando moet daarbij een procedure zijn die een 2D of 3D-plot levert (zoals display, plot en plot3d ). plotargument(en) is/zijn de argumenten op welke het plotcommando moet worden toegepast. t is de parameter die gaat lopen in de animatie. a,b zijn de grenzen van de parameter options kunnen extra beperkingen opleggen aan het animate-commando of aan het plotcommando. (Bijvoorbeeld: axes=boxed, scaling=constrained of labels=[x,y,z].) restart Wist het tijdelijk geheugen van Maple. Het is zeer aan te bevelen dit commando te gebruiken aan het begin van elk programma, omdat anders misschien bepaalde variabelen nog ongewenste waarden zouden kunnen hebben van eerder uitgevoerde programma’s.
3.2
3D-animaties
In tabel 1 is de globale opzet van een 3d-animatie bij een veeltermafbeelding gegeven. Hierbij zijn f(x,y,z), g(x,y,z), h(x,y,z) en k(x,y) vrij te kiezen functies. Als er sprake is van een veeltermafbeelding op driehoeksvorm kunnen f:=(x,y,z)->f(x,y,z), g:=(x,y,z)->g(x,y,z) en h:=(x,y,z)->h(x,y,z) worden vervangen door respectievelijk f:=(y,z)->f(y,z), g:=z->g(z) en h:=C, waarbij C een constante is. xmin, xmax, ymin en ymax bepalen het venster waarin de animatie zal plaatsvinden, en Amin en Amax bepalen het verloop van de animatie. Deze opzet lijkt ons het meest overzichtelijk.
9
Toelichting Laden van packages
Code with(plottools): with(plot3d): f:=(x,y,z)->f(x,y,z); g:=(x,y,z)->g(x,y,z); h:=(x,y,z)->h(x,y,z); Q:=plot3d(k(x,y), x=xmin..xmax, y=ymin..ymax); V:=transform((x,y,z)-> [x+A*f(x,y,z),y+A*g(x,y,z), z+A*h(x,y,z)]); animate(display,[{V(Q)}], Amin..Amax,axes=boxed);
Defini¨eren van functies
Defini¨eren van de plot waarop de afbeeling gaat werken Defini¨eren van een transformatie, afhankelijk van een variabele A Genereren van de animatie
Tabel 1: format voor 3D-animaties op een plotstructuur
3.3
2D-animaties
In tabel 2 en 3 zijn de globale opzet van een animatie in het platte vlak, bij een veeltermafbeelding gegeven. Hierbij zijn f(x,y), g(x,y) en k(x) vrij te kiezen functies. Merk daarbij op dat, als het een triangulair automorphisme betreft, f slechts een functie van y is, en g een constante functie. xmin, xmax, ymin en ymax bepalen weer het venster waarin de animatie zal plaatsvinden; Amin en Amax bepalen het verloop van de animatie. In 2D kan, net als in 3D, een transformatie worden toegepast op een plotstuctuur, bijvoorbeeld op een grafiek van een functie x 7→ y. Daarnaast kan het soms wenselijk zijn om een transformatie toe te passen op een rooster, bestaande uit horizontale en verticale lijnen. Maple heeft1 , geen functie om dat gemakkelijk te doen. Daarom is een handige truc benodigd. Deze truc bestaat uit het maken van 2-dimensionale contourplots2 van de 3-dimensionale vlakken z = x en z = y. Dit doet de optie contourplot voor ons, waarbij als optie contours=[a,b,c,...] kan worden opgegeven, om de hoogtelijnen slechts op de x - danwel y-co¨ ordinaten a,b,c,... te plotten. Vervolgens kan de transformatie op beide contourplots tegelijk worden toegepast, en de resultaten daarvan leveren de gewenste animatie op. In tabel 2 wordt een format gegeven voor het maken van een animatie die werkt op een 2-dimensionale plot. In tabel 3 wordt een format gegeven voor een animatie op een rooster.
1 Voor
zover ons bekend, en we hebben goed gezocht.
2 Hoogtelijnenkaartjes.
10
Toelichting Laden van packages Defini¨eren van functies Defini¨eren van de plot waarop de afbeeling gaat werken Defini¨eren van een transformatie, afhankelijk van een variabele A Genereren van de animatie
Code with(plottools): with(plots): f:=(x,y)->f(x,y); g:=(x,y)->g(x,y); Q:=plot(k(x), x=xmin..xmax); V:=transform((x,y)-> [x+A*f(x,y),y+A*g(x,y)); animate(display,[{V(Q)}], Amin..Amax,axes=boxed);
Tabel 2: format voor 2D-animaties op de grafiek van een functie k : x 7→ y Toelichting Laden van packages
Code with(plottools): with(plots): f:=(x,y)->f(x,y); g:=(x,y)->g(x,y); Q:=contourplot(x, x=xmin..xmax, filled=false, colour=black, contours=[a,b,...]); P:=contourplot(y, x=xmin..xmax, filled=false, colour=black contours=[a,b,...]) V:=transform((x,y)-> [x+A*f(x,y),y+A*g(x,y)); animate(display,[V(Q),V(P)], Amin..Amax,axes=boxed);
Defini¨eren van functies Defini¨eren van contourplots waarop de afbeelding gaat werken
Defini¨eren van een transformatie, afhankelijk van een variabele A Genereren van de animatie
Tabel 3: format voor 2D-animaties op een x, y-rooster
11
12
4
Voorbeelden
De volgende voorbeelden kunnen allemaal worden bekeken in de Maple-bijlage, waarin ook de code te zien is.
4.1
Het Nagata-automorfisme
Het Nagata-automorfisme wordt als volgt gedefini¨eerd: N : (x, y, z) 7→ (x − 2ya∆ − z(a∆)2 , y + za∆, z) met ∆ = xz + y 2 en we laten a lopen. Dit levert de volgende plaatjes op:
Figuur 1: het Nagata-automorfisme
4.2
Het Van Veen-Heesterbeek-automorfisme
Het Van Veen-Heesterbeek-automorfisme wordt als volgt gedefini¨eerd: F : (x, y, z) 7→ (x + a(y 2 + yz), y + asin(z), z) Als we a laten lopen, levert dit de volgende plaatjes op:
Figuur 2: het Van Veen-Heesterbeek-automorfisme
13
4.3
De Maubach-veeltermafbeelding
De Maubach-veeltermafbeelding wordt als volgt gedefini¨eerd: 1 1 · A · y 2 , y + (1/6) · A · (x + · A · y 2 )2 ) 2 2 Als we A laten lopen, levert dit de volgende plaatjes op: M : (x, y) 7→ (x +
Figuur 3: de Maubach-veeltermafbeelding
4.4
Een optische illusie
Voor een leuke optische illusie defini¨eren we: I : (x, y) 7→ (x + Asin(y), y) Als we A laten lopen, levert dit de volgende plaatjes op:
Figuur 4: een optische illusie
In deze figuur zijn de horizontale lijnen allemaal evenwijdig aan elkaar, wat eenvoudig te zien is aan het functievoorschrift.
14
15