2. peatόkk Funktsiooni graafiku joonestamine
Mathematica'l on tööks graafikaga küllaltki avarad võimalused. Käesolevas peatükis on tähelepanu pööratud sellele, kuidas võimalikult kiiresti ja lihtsalt joonestada funktsioonide graafikuid. Seejuures ei tutvustata joonestamiskäskude kõiki valikuparameetreid, vaid piirdutakse üksikute näidetega.

§1. ÜHE MUUTUJA FUNKTSIOONI GRAAFIKU JOONESTAMINE

1.1. Funktsiooni y = f(x) graafik

Plot[f(x),{x,xmin,xmax}] Joonestab funktsiooni y = f(x) graafiku piirkonnas [xmin ; xmax].
Näide 1. Joonestame kuupfunktsiooni y = x3 – 3x graafiku piirkonnas [ – 3; 3].
In[1]:=  Plot[x^3-3 x,{x,-3,3}]
 
 
Ühe korraga võib joonestada mitu graafikut. Selleks tuleb f(x) asendada funktsioonide loendiga {f(x), g(x),…}.
Näide 2. Joonestame funktsioonide y = sin x ja y = sin 2x graafikud piirkonnas [ 0 ; 2p ].
In[2]:=  Plot[{Sin[x],Sin[2 x]},{x,0,2 Pi}]
 
 
Parameetrid. Joonise ilmet saab muuta valikuparameetritega (options). Parameetrid kui käsu mittekohustuslik osa kirjutatakse kohustuslike osade järele. Parameetrid eraldatakse komadega.  Nooleke parameetri ja tema väärtuse vahel moodustatakse miinusmärgist ja range võrratuse märgist. Plot-käsu üldkuju koos parameetriga oleks:
Plot[f(x),{x,xmin,xmax}, param1-> väärtus1, param2-> väärtus2,…]
Paljude joonise omaduste, näiteks formaadi, graafiku värvi jms. muutmiseks on oma parameeter. Sisendreal parameetrile omistatud väärtust arvestatakse joonise tegemisel. Igal parameetril on olemas vaikimisi kehtiv väärtus (default value), mida kasutatakse siis, kui talle käsureal väärtust antud ei ole. Järgmistel lehekülgedel tutvustame mõningaid Plot-käsu parameetreid, nende täielik loetelu on toodud lisas A.
 
AspectRatio->arv
Vaikimisi — 1/GoldenRatio. (See on arv, mis võrdub ligikaudu 1/1,61803… .)
Selle parameetri abil on võimalik muuta joonise formaati. Arv näitab joonise kõrguse ja laiuse suhet. Kui näiteks määrata AspectRatio väärtuseks 3, siis joonis surutakse kokku (venitatakse välja) nii, et tema kõrgus oleks 3 korda suurem laiusest.
Vaikimisi väärtuse 1/1,61803… korral saame põikiformaadis joonise, mille küljed suhtuvad kuldlõikes. S. t. et kui joonise kõrgus on 1 pikkusühik, siis joonise laius on 1,61803 … pikkusühikut. Vt. näiteid 1 ja 2.
AspectRatio->Automatic Niisuguse väärtuse korral valitakse joonise formaat nii, et ühikud oleksid mõlemal teljel võrdse pikkusega. Joonis ei ole deformeeritud.
Näide 3. Joonestame veel kord eelmises näites toodud siinuste graafikud, kuid nüüd juba õiges mõõtkavas, nii, et joonis ei oleks x-telje suunas kokku surutud.
In[3]:=   Plot[ {Sin[x],Sin[2 x]}, {x,0,2 Pi},
             AspectRatio->Automatic]
 

 
GridLines->Automatic
Vaikimisi — None.
Koordinaatjoonte võrgu kandmine joonisele. Väärtuse Automatic korral valitakse koordinaatjoonte asukohad, nende värv, jämedus jms. automaatselt, kuid põhimõtteliselt on kasutajal võimalik kõiki neid omadusi ise määrata. Vaikimisi kehtiva väärtuse None korral koordinaatjooni ei joonestata.
Näide 4. Joonestame funktsiooni y = ln x graafiku ja ühtlasi kanname joonisele koordinaatjoonte võrgu. Piirkonna valimisel tuleks arvestada, et logaritmfunktsiooni määramispiirkond on ]0; ¥ [. Kui püüda graafikut joonestada piirkonnas, kus funktsioon ei ole määratud, trükitakse ekraanile hoiatavad teated ja graafik joonestatakse ainult selles piirkonna osas, kus funktsioon on määratud.
In[4]:=  Plot[ Log[x], {x,0.001,6},
            GridLines->Automatic,
            AspectRatio->Automatic]
 
 
Axes-> (True või False)
Vaikimisi — True.
Määrab, kas koordinaatteljed joonestatakse või mitte. Vaikimisi kehtiva väärtuse True korral teljed joonestatakse. Kui aga parameetri väärtuseks anda False, siis joonestatakse ainult graafik ilma telgedeta.
 
PlotRange->{{xmin ,xmax},{ymin ,ymax}}
Vaikimisi — Automatic.
Võimaldab täpsustada, milline koordinaattasandi piirkond joonisel kujutatakse.
Ülaltoodud väärtuse {{xmin ,xmax},{ymin ,ymax}}  korral tehakse joonis ristkülikust [xmin ; xmax] × [ymin ; ymax]. Väärtuse Automatic korral valitakse piirkond nii, suurem osa graafikust joonisele ära mahuks.
PlotRange->{ymin ,ymax}. See on lühem kirjaviis ainult piirkonna y-koordinaatide määramiseks.
Näide 5. Joonestame funktsiooni y = tan x graafiku piirkonnas [ – 2p ; 2p ].  Sisestades Plot-käsu ilma parameetriteta, saame mõnevõrra ootamatu tulemuse:
In[5]:=  Plot[ Tan[x], {x,-2 Pi,2 Pi}]
 
 
Joonisel on graafik tugevasti y-telje sihis kokku surutud. Põhjus seisneb selles, et Mathematica püüab võimaluse piires kogu graafikut joonisele mahutada, kuid tangensfunktsiooni väärtused katkevuskohtade ümbruses on väga suured. Parema tulemuse saame, kui parameetri PlotRange abil y-telje alumine ja ülemine osa ära lõigata. Parameetriga AspectRatio määrame ühikute pikkuse mõlemal teljel võrdseks.
In[6]:=  Plot[ Tan[x], {x,-2 Pi,2 Pi},
           PlotRange->{-5,5},
           AspectRatio->Automatic]
 
 
PlotPoints->arv
Vaikimisi — 25.
Arv määrab, kui palju punkte graafiku joonestamiseks minimaalselt arvutatakse. Seal, kus graafik muutub kiiresti, valitakse alajaotuspunkte täiendavalt juurde, et saada siledamat joont. Seega on tegelik alajaotuspunktide arv enamasti suurem kui parameetriga PlotPoints antud on. Tavaliselt on vaikimisi kasutatav 25 punkti piisav ilusa graafiku saamiseks, kuid keerulisemate kõverate korral (vt. näide 8) tuleb punktide arvu suurendada.
 
PlotStyle->stiil
Vaikimisi — Automatic.
Parameeter PlotStyle lubab graafiku joonestamiseks kasutada värvilist joont, kriipsjoont (katkendlikku joont) ja muuta joone jämedust. Neid omadusi — värvus, katkendlikkus ja jämedus — nimetame edaspidi ka joone stiiliks. Joone stiili defineerimist käsitleme pikemalt järgmises peatükis. Siinkohal vaatame, kuidas joonestada värvilisi graafikuid. Selleks anname parameetrile PlotStyle väärtuse RGBColor[r,g,b], kus r, g ja b on arvud 0 ja 1 vahelt. Graafiku värv määratakse arvude
r – red – punane,
g – green – roheline ja
b – blue – sinine alusel.
Mida suurem on arv, seda rohkem vastavat värvikomponenti lisatakse. Näiteks
RGBColor[0,0,1] sinine;
RGBColor[1,0.5,0] orandzh;
RGBColor[0,0,0] must;
RGBColor[1,1,1] valge.
Segavärvide korral võib konkreetsele värvitoonile vastava arvukolmiku leidmine nõuda rohkesti katsetamist. Probleem on lahendatud värviselektori abil. Selektori avab klahvikombinatsioon [Shift] + [Ctrl] + R või hiireklõps nupul  . Ekraanile ilmub värvipalett, kust saab hiirega valida sobiva värvi. Vajutus nupule OK kirjutab direktiivi käsureale kursori asukohta.
Näide 6. Joonestame punase joonega funktsiooni y graafiku piirkonnas [ 0; 4 ].
In[7]:=  Plot[ Exp[-(x-2)^2] Cos[20(x-2)], {x,0,4},
          AspectRatio->Automatic,
          PlotStyle->RGBColor[1,0,0]]
 
 
Joonestades korraga mitu graafikut, võib neile määrata erinevad värvid. Selleks tuleb parameetrile väärtuseks anda värvide loend, kus elemente on sama palju kui graafikuid. Näiteks PlotStyle -> {RGBColor[0,1,0], RGBColor[0,0,1]} värvib ühe graafiku roheliseks ja teise siniseks.
 
DisplayFunction->funktsioon
Vaikimisi — $DisplayFunction.
Joonise kuvamisega seotud erifunktsioonide kasutamine.
DisplayFunction->Identity  Teostatakse kõik graafiku esitamiseks vajalikud arvutused, kuid joonist ekraanile ei kuvata. Mathematicaga käsurea tasemel jooniseid tehes ei oma selline parameeter mingit mõtet, kuid käesolevas töös on seda mõnes kohas kasutatud järgmisel põhjusel: Sageli tuleb ühe keerukama joonise kujundamiseks teha mitu lihtsamat ja lõpuks kanda kõik detailid ühele joonisele. Teksti kompaktsuse huvides on antud töös mõnikord nn. komponentjoonised esitamata jäetud ja toodud ära ainult lõpptulemus. Et käsuread ja joonised oleksid vastavuses, on komponentjooniste kuvamine keelatud parameetriga DisplayFunction->Identity.

1.2. Parameetriliste võrranditega antud funktsiooni graafik

ParametricPlot[{x(t),y(t)},{t,tmin,tmax}]  Joonestab parameetriliste võrranditega  määratud funktsiooni graafiku piirkonnas t Î [tmin ; tmax]. Koos käsuga ParametricPlot võib kasutada samu valikuparameetreid, mis käsuga Plot.
Näide 7. Joonestame võrranditega  antud funktsiooni graafiku, kui t Î [0; 2p ]. Seda tüüpi jooni tuntakse ka Lissajous’ kujundite nime all.
 
In[8]:=  ParametricPlot[ {Cos[t], Sin[3t]}, {t,0,2 Pi},
           AspectRatio->Automatic]
 
Näide 8. Joonestame parameetriliste võrranditega  antud funktsiooni graafiku, kui t Î [ – 4p ; 6p ]. Kuna graafik on küllalt keerukas, suurendame alajaotuspunktide arvu 100-ni.
 In[9]:=  ParametricPlot[{
          t-3.5 Sin[7t] Cos[2t],
          1-3.5 Cos[4t]}, {t,0,10Pi},
          AspectRatio->Automatic,
          Axes->False,
          PlotPoints->100]
 
 

Näide 9. Olgu joon antud polaarvõrrandiga r = sin 6t, t Î [0; 2p ]. Mathematica võtmesõnade hulgas ei ole spetsiaalset korraldust polaarkoordinaatides antud võrrandiga joonte joonestamiseks. Graafiku joonestamiseks läheme üle parameetrilistele võrranditele: r = sin 6t, kus t Î [0; 2p ].
In[10]:=  ParametricPlot[
          {Sin[6t] Cos[t], Sin[6t] Sin[t]},
          {t,0,2 Pi}, AspectRatio->Automatic]
 

1.3. Joonise teistkordne joonestamine

Show[joon1,joon2,…] Käsk Show võimaldab uuesti ekraanile tuua varem valmistehtud jooniseid. Show abil saab kanda ühele joonisele mitu varem eraldi valmis joonestatud graafikut. Joonist uuesti Show’ga ekraanile tuues on võimalik muuta enamuse parameetrite väärtusi.
Näide 10. Joonestame uuesti eelmises näites saadud roseti, kuid ilma koordinaatelgedeta.
In[11]:=  Show[%10, Axes->False]
 
Näide 11. Risthüperbooli parameetrilised võrrandid on . Hüperbooli vasakpoolse haru saame, kui võtame x väärtuse miinusmärgiga ja parempoolse haru, kui võtame x plussmärgiga. Kuna Mathematicas puudub sümbol  , tuleb hüperbool joonestada kahest eraldi osast koosnevana.
In[12]:=  ParametricPlot[{
           {Cosh[t],Sinh[t]},
           {-Cosh[t],Sinh[t]} }, {t,-1.5,1.5},
           AspectRatio->Automatic]
 
 
Selle hüperbooli asümptoodid on y = x ja y = – x. Joonestame asümptoodid ja seejärel kanname nad hüperbooliga ühele joonisele.
In[13]:=  Plot[{-x,x},{x,-2,2}, AspectRatio->Automatic]
 
 
In[14]:=  Show[%12, %13]
 

1.4. Andmetabeli graafiline esitus

ListPlot[punktid] Joonestab koordinaatteljestiku ja märgib sinna loetletud punktid. Punktide loetelu esitatakse kujul
    {{x1, y1},{x2, y2},…} või kujul
    {y1, y2, …}, kui x1 = 1, x2 = 2, jne.
Koos ListPlot’iga saab kasutada enamust Plot-käsu juures loetletud valikuparameetritest. Lisaks on mõistlik kasutada ühte kahest järgmisest parameetrist:
PlotJoined->True Punktid ühendatakse murdjoonega.
PlotStyle->PointSize[0.03] Määrab punktide suuruse joonisel. Parameetri sellise väärtuse korral tehakse punktid piisavalt suured, et neid ekraanil näha oleks.
Hoiatus: sisestades käsu ListPlot ilma parameetriteta, saame joonise, kus on näha vaid koordinaatteljed.

Näide 12. Olgu meil sagedustabel, kus x omandab väärtusi 1 — 6.
      x    1      2      3       4        5        6
      y   15    17    18    17,5    16     25,5

        In[15]:=  andmed = {15, 17, 18, 17.5, 16, 15.5}
        Out[15]=  {15, 17, 18, 17.5, 16, 15.5}
Kui parameetri PlotJoined väärtuseks määrata True, ühendatakse punktid murdjoonega. Nii saame joonestada sagedustabelile vastava jaotuspolügooni.
        In[16]:= ListPlot[ andmed, PlotJoined->True]

        In[17]:=  ListPlot[ andmed, PlotStyle->PointSize[0.03]]

 

§2. KAHE MUUTUJA FUNKTSOONI GRAAFIKU JOONESTAMINE

2.1. Funktsiooni z = f(x; y) graafik

Plot3D[f(x; y),{x,xmin,xmax},{y,ymin,ymax}] Joonestab võrrandiga z = f(x; y) määratud pinna piirkonnas
[ xmin ; xmax] ´ [ ymin ; ymax]. Erinevalt Plot-käsust ei saa Plot3D-ga joonestada mitut graafikut korraga. Selleks, et ühel joonisel kujutada kaks või rohkem pinda, tuleb need pinnad enne eraldi valmis joonestada ja seejärel korralduse Show abil ühele joonisele kanda.

Näide 1. Joonestame pinna, mille võrrand on z = sin(xy), kui x Î [0; 2p ] ja y Î [0; p ].
        In[1]:=  Plot3D[Sin[x*y] ,{x,0,2 Pi},{y,0,Pi}]

Koos käsuga Plot3D saab kasutada ka parameetreid. Mõned neist on analoogilised vastavate kahemõõtmelise graafika parameetritega, mõned aga on tarvitusel üksnes ruumigraafika korral. Parameetrite täielik loetelu on toodud lisas B.

HiddenSurface-> ( True või False )
Vaikimisi — True.
Väärtuse False korral joonestatakse pind sõrestikmudelina. Kuna värve ei kasutata, toimub joonestamine kiiremini.
Näide 2. Joonestame uuesti eelpool toodud pinna, andes parameetrile HiddenSurface väärtuseks False.
        In[2]:=  Plot3D[ Sin[x*y] ,{x,0,2 Pi}, {y,0,Pi},
                 HiddenSurface->False]

AxesLabel->{"x-nimi","y-nimi","z-nimi"}
Vaikimisi — None.
Koordinaattelgede juurde nimetuste kirjutamine. Analoogiline parameeter on olemas ka kahemõõtmelise jooniste jaoks. Ruumijooniste korral on telgede tähistamine olulisem, sest pinda võib vaadata suvalise nurga alt ja iga kord ei ole lihtne aru saada, milline on x-telg ja milline y-telg.

PlotPoints->{nx ,ny }
Vaikimisi — {15,15}.
Määrab, mitu alajaoutuspunkti arvutatakse pinna joonestamiseks x- ja y-telje suunas.
Näide 3. Joonestame võrrandiga  z = sin x sin 3y  määratud pinna, kui x Î [ – 2; 2] ja y Î [ – 2; 2]. Alajaotuspunkte võtame mõlemas suunas 25. Parameetriga AxesLabel kirjutame koordinaattelgede juurde tähised.
        In[3]:=  Plot3D[ Sin[x] Sin[3y], {x,-2,2}, {y,-2,2},
                PlotPoints->{25,25},
                AxesLabel->{"x","y","z"}]

ViewPoint->{vpx,vpy,vpz}
Vaikimisi — {1.3,-2.4,2} .
Määrab punkti, millest pinda vaadatakse. Vaatepunkti valikut lihtsustab selektor, mille avab klahvikombinatsioon [Ctrl] + [Shift] + V või hiireklõps koordinaatteljestikuga nupul  . Selektoril olev kuubik pööratakse liugurite abil sobivasse asendisse, vajutus nupule Paste kirjutab valitud vaatepunkti käsureale kursori asukohta.
Näide 4. Teeme eelmises näites antud pinnast veel ühe joonise, kuid teise nurga alt vaadatuna.
        In[4]:=  Plot3D[ Sin[x] Sin[3y], {x,-2,2}, {y,-2,2},
               PlotPoints->{25,25},
               AxesLabel->{"x","y","z"},
               ViewPoint->{-2.5,-1,2}]

PlotRange->{{xmin ,xmax},{ymin ,ymax},{zmin ,zmax}}  Võimaldab täpsustada, milline ruumi osa joonisel kujutatakse. Oluline erinevus võrreldes vastava kahemõõtmelise graafika parameetriga on see, et ruumigraafika korral lühike kirjaviis
PlotRange->{zmin ,zmax annab piirid z-telje jaoks. Teiste sõnadega, nii saab määrata, milliseid z-telje punkte läbivad joonise „põrand” ja „lagi”.

2.2. Parameetriliste võrranditega antud funktsiooni graafik

Lisaks kahe muutuja funktsiooni graafikule on võimalik joonestada ka keerukamaid pindu ja ruumijooni. Selleks kasutatakse käsku ParametricPlot3D.
ParametricPlot3D[ {x(u; v),y(u; v),z(u; v)}, {u,umin,umax}, {v,vmin,vmax}] Joonestab ruumilise pinna parameetriliste võrranditega
,  kus u Î [umin ; umax] ja v Î [vmin ; vmax].
ParametricPlot3D’ga kasutatavad parameetrid erinevad mõnel määral Plot3D juures nimetatutest. Näiteks puudub parameetrid HiddenSurface, samuti tuleb arvestada, et PlotPoints määrab alajaotuste arvu u ja v jaoks.
Näide 5. Joonestame toori parameetriliste võrranditega
, kui u Î [0;2p ] ja v Î [0;2p ].
        In[5]:=  ParametricPlot3D[
               {(3+Cos[u])Cos[v], (3+Cos[u])Sin[v], Sin[u]},
               {u,0,2 Pi},{v,0,2 Pi}]

ParametricPlot3D[ {x(t),y(t),z(t)}, {t,tmin,tmax}] Joonestab ruumijoone parameetriliste võrranditega
, kus t Î [tmin ; tmax].
Ruumijoone joonestamisel võetakse alajaotuspunkte vaikimisi 75, kuid seda arvu saab muuta parameetri PlotPoints abil.
Näide 6. Joonestame kruvijoone, mille võrrandid on x = cos t, y = 0,2 t ja z = sin t, ning t Î [0; 2p ]. Ilusama joonise saamiseks muudame parameetri ViewPoint väärtust.
        In[6]:=  ParametricPlot3D[ {Cos[t], 0.2 t, Sin[t]},
                {t,0,7 Pi},
                ViewPoint->{2.15,-1.99,1.68}]

    Eelmine peatükk     Järgmine peatükk     Sisukord