V2/2001 Harj. 1 ohjeita
../H/ohjeita1.html      25.1.01

Harj. 1 ohjeita

Loppuviikko


Yleistä tekniikkaa: Koska piirtelemme ympyröitä ja säännöllisiä monikulmioita, haluamme saman skaalan akseleille. Voimme sen asettaa "once and for all":
> with(plots): setoptions(scaling=constrained): # Sama skaala akseleilla

Teht. 1

1. Onko tarpeen määritellä funktioksi ?
   w:= (k,n) ->exp(I*2*k*Pi/n);
Ei ole, voidaan yhtä hyvin käsitellä lausekkeena:
   w:= exp(I*2*k*Pi/n);
Edellisessä tapauksessa seq-kutsu on
   seq(w(k,n),k=0..n-1);
ja jälkimmäisessä
   seq(w,k=0..n-1);
Missä sitten funktiomääritystä tarvitaan? Jos haluaisimme laskea vaikkapa w(7,11), niin edellisessä se kävisi kirjoittamalla w(7,11); kun taas jälkimmäisessä subs(k=7,n=11,w);

2. Jälkiosaan liittyvä huomio

Tehtäväpaperissa on ehkä hiukan harhaanjohtavasti

   juuret:=seq(w(k,n),k=0..n-1);
Tehtävää kannattaa lähestyä kirjoittamalla ensin syötteeksi tarkoitettu yleinen kompleksiluku muotoon
   z:=r*exp(I*Theta);
ja soveltamalla ihan normaalia n:nnen juuren kaavaa.

Toisaalta w(k,n)- lukuja voi mukavasti hyödyntää. Mietipä, miksi nuo juuret saadaan myös näin:

   W1wkn ,
missä W1 on jokin n:s juuri z:sta.

Maplella ilmaistuna:

   seq(W1*w(k,n),k=0..n-1);

Tehtävä 2

Tässä on taas sikäli harhaanjohtavasti, että kompluv.html- viite ei oikein sisällä sitä, mitä luvattiin.

No tämä kiteytyi harjoituksen kuluessa, erityisesti sen pienemmän luokan puolella:

Otetaan ensin yleinen kompleksiluvun esitys, pidetään se muuttujana (ei ole tarpeen käsitellä funktiona):

Seuraavat Maple-rivit on otettu soveltamalla työarkkiin FILE -> EXPORT -> Maple text .
Maple-kehotteella (>) alkavat rivit ovat syötteitä ja kehotteella alkamattomat vastaavia tuloksia.

> z:=r*exp(I*Theta);
Kun tarkastelemme sädeparvea, jossa siis Theta saa valittuja vakioarvoja, niin muodostetaan
> sateet:=seq(z,Theta=[0,Pi/3,2*Pi/3,Pi]);
   sateet := r, r (1/2 + 1/2 I sqrt(3)), r (- 1/2 + 1/2 I sqrt(3)), -r
Tässä ovat nämä sädeviivat näkyvillä, z:n itseisrvo r on kullakin säteellä käyräparametrina. Piirto tapahtuu näin:
> grasateet:=complexplot([sateet],r=1..3,axes=framed):
Käytännön työskentelyssä piirrämme ensin tyyliin complexplot([sateet],r=1..3,axes=framed); ja sitten, kun olemme kuvaan tyytyväisiä, annamme sille nimen ja muistamme muuttaa lopussa sen (;) een (:) ksi..

Kaariparvi saadaan vaihtamalla vain r:n ja Theta:n roolit. Nyt haluamme vakiosäteisiä viivoja, joissa Theta on muuttujana. Muodostetaan 1-,2- ja 3-säteiset kaarilausekkeet:

> kaaret:=seq(z,r=[1,2,3]);

        kaaret := exp(I Theta), 2 exp(I Theta), 3 exp(I Theta)
ja piirretään ensin erikseen ja sitten yhdessä:
> grakaaret:=complexplot([kaaret],Theta=0..Pi,color=blue):
> display([grasateet,grakaaret]);
Näin meillä on uskomattoman kaunis z-tason parvi.

Sitten w-taso

Tämä on jo pelkkää huvittelua:

> w:=z^2:
> sadekuvat:=seq(w,Theta=[0,Pi/3,2*Pi/3,Pi]);

                2   2                      2
  sadekuvat := r , r  (1/2 + 1/2 I sqrt(3)) ,

         2                        2   2
        r  (- 1/2 + 1/2 I sqrt(3)) , r

> grasadekuvat:=complexplot([sadekuvat],r=1..3,axes=framed):
> kaarikuvat:=seq(w,r=[1,2,3]);

                              2                2                2
    kaarikuvat := exp(I Theta) , 4 exp(I Theta) , 9 exp(I Theta)

> grakaarikuvat:=complexplot([kaarikuvat],Theta=0..Pi,color=blue):
> display([grasadekuvat,grakaarikuvat]);


Alueiden vastaavuudet

Tätä ei kannattane yrittää tehtäväpaperissa ehdotetulla tavalla, vaan täyttämällä alue vaikka tiheämmällä kaarijoukolla tähän tapaan:
> h:=0.1:rrr:=seq(1+k*h,k=0..10);alue:=seq(z,r=[rrr]);
> graalue:=complexplot([alue],Theta=0..Pi/3):
> display([grasateet,grakaaret,graalue]);
Näiden täyttökaarien kuvat saadaan sitten
> aluekuva:=seq(w,r=[rrr]):

Suorakulmainen koordinaattihila (xy-hila)

Voitaisiin tehdä aivan vastaavasti kuin edellä, nyt otettaisiin
   z:=x+I*y;
Tehtäisiin aivan samat seq-hommat, nyt x:n ja y:n suhteen.

Jotta ei tule liikaa toistoa, pääsemme vielä helpommalla ja tutustumme uuteen funktioon (oliko riittävästi motivoitu), teemme näin:

conformal(z,z=-1-I..1+I,grid=[20,20]);
conformal(z^2,z=-1-I..1+I,grid=[20,20]);
conformal on erinomainen väline, jos kyseessä on tällainen xy-hila. (Muuten, conformal(z,...); on kenties helpoin tapa piirtää tuollainen koordinaattihilaviivasto, joka usein on hyödyllinen.) (No, Matlabin grid on kyllä siihen tarkoitukseen vielä helpompi, mutta tämä nyt ei ole Matlab.)

Teht. 3

On hyvä aloittaa exp-homma conformal-piirrolla. Eksponenttifunkiolle luonteva on xy-hila. (Miksi?)

Tässä on näitä 3d-visualisointeja. Selvittele, vaihtele alueita, tulkitse näkemääsi.

> ztaso:=plot3d(0,x=-2..5,y=0..2*Pi,color=argument(z),grid=[21,21]):
> katto:=plot3d(10,x=-2..5,y=0..2*Pi,color=argument(z),grid=[21,21]):
> absezpinta:=plot3d(abs(exp(z)),x=-2..5,y=0..2*Pi,color=argument(exp(z)),
grid=[21,21]):
> argezpinta:=plot3d(argument(exp(z)),x=-2..5,y=0..2*Pi,color=abs(exp(z)),
grid=[21,21]):
> display3d(ztaso);
> display3d(absezpinta,axes=box,orientation=[-50,35]);
> display3d(argezpinta,axes=box,orientation=[-50,35]);

Teht. 4

...........

Harjoituksissa vastaan tulleita Maple-ongelmia ja neuvoja