3D grafika v Mathematici 8.0

3D grafika v Mathematici 8.0

Avtor: Nina Novak

Uvod

Graf funkcije dveh spremenljivk je ploskev v 3-dimenzionalnem prostoru. V tem gradivu so predstavljeni izbrani ukazi za risanje takšnih grafov v programu Wolfram Mathematica, različici 8.0.

Predstavljeni ukazi:

  • Plot3D (risanje eksplicitno podanih funkcij),
  • ContourPlot3D (risanje implicitno podanih funkcij),
  • ParametricPlot3D (risanje parametrično podanih funkcij),
  • Graphics3D (risanje osnovnih oblik) in
  • Show (prikaz več grafov v isti sliki).

Predstavljene možnosti:

  • PlotRange,
  • Mesh,
  • PlotStyle,
  • ContourStyle,
  • PlotPoints,
  • MaxRecursion in
  • AxesLabel.

Mathematica je plačljiv program in je dosegljiv na //www.wolfram.com/mathematica/.

Plot3D

Eksplicitno podano funkcijo oblike narišemo z ukazom Plot3D. Plot3D[f[x, y], {x, xmin, xmax}, {y, ymin, ymax}] nariše funkcijo f(x, y) na območju, kjer x zavzame vrednosti od xmin do xmax in y od ymin do ymax.

Primer

Plot3D[Sin[x + y], {x, -Pi, Pi}, {y, -Pi, Pi}]

(http://www2.nauk.si/files/51/Plot3D.jpg)

Obračanje slike

Dobljeno sliko lahko v Mathematici obračamo, premikamo in približujemo. Sliko obračamo s tem, da kliknemo nanjo, držimo in premikamo. Sliko približujemo ali oddaljujemo tako, da med premikanjem miške držimo CTRL. Po ekranu jo premikamo tako, da ob premikanju miške držimo tipko SHIFT.

ParametricPlot3D

Formula za parametrično podano krivuljo je oblike .

Formula za parametrično podano ploskev je oblike .

Parametrično podano funkcijo narišemo z ukazom ParametricPlot3D[{x[t], y[t], z[t]}, {t, tmin, tmax}], ko gre za krivuljo, ali s ParametricPlot3D[{x[u, v], y[u, v], z[u, v]}, {u, umin, umax}, {v, vmin, vmax}], ko gre za ploskev.

Primera

  1. ParametricPlot3D[{15 Sin[t], -t^2, t + 8}, {t, -10, 10}, AxesLabel -> {XXXX, YYYY, ZZZZ}] (krivulja)
  2. ParametricPlot3D[{u + v^2, v + u^2, u*v}, {u, 0, 2}, {v, 1, 3},AxesLabel -> {x, y, z}] (ploskev)

1.

(http://www2.nauk.si/files/51/ParametricPlot3D_krivulja.jpg)

2.

(http://www2.nauk.si/files/51/ParametricPlot3D.jpg)

ContourPlot3D

Za implicitno podano funkcijo uporabimo ukaz ContourPlot3D[F[x, y, z] == 0, {x, xmin, xmax}, {y, ymin, ymax}, {z, zmin, zmax}]. Opazimo, da smo enakost označili z dvojnim enačajem.

Primer

ContourPlot3D[x^2/9 + y^2/9 - z^2/36 == 0, {x, -10, 10}, {y, -10, 10}, {z, -10, 10}]

(http://www2.nauk.si/files/51/ContourPlot3D_es.jpg)

PlotRange

Z možnostjo PlotRange omejimo območje koordinatnega sistema, ki si ga želimo ogledati. V primeru, da možnosti PlotRange ne uporabimo, program izbere ustrezno skalo.

S PlotRange -> {zmin, zmax} omejimo samo obseg z koordinatne osi.

S PlotRange -> {xmin, xmax}, {ymin, ymax}, {zmin, zmax} omejimo obseg vseh koordinatnih osi.

Primer

  1. Plot3D[x*Exp[y], {x, -1, 1}, {y, 0, 1}, PlotStyle -> {Yellow}, AxesLabel -> {X, Y, Z}]
  2. Plot3D[x*Exp[y], {x, -1, 1}, {y, 0, 1}, PlotStyle -> {Yellow}, AxesLabel -> {X, Y, Z}, PlotRange -> {-1, 1}] (določimo obseg z koordinate)
  3. Plot3D[x*Exp[y], {x, -1, 1}, {y, -1, 1}, PlotStyle -> {Yellow}, AxesLabel -> {X, Y, Z}, PlotRange -> {{-1, 1}, {-1, 1}, {-1, 1}}] (določimo obseg vseh koordinat; opazimo, da smo morali povečati obseg parametra y z 0 na -1 (odebeljeno), sicer za y > 0 točke grafa ne bi bil izračunane)

1.                                                  2.

(http://www2.nauk.si/files/51/PlotRange_privzeto.jpg) (http://www2.nauk.si/files/51/PlotRange_z.jpg)

3.

(http://www2.nauk.si/files/51/PlotRange_xyz.jpg)

Mesh

Obliko ploskve lažje razberemo, če je ploskev pokrita z mrežo (mesh). Možnost Mesh ne vpliva na število izračunanih točk, samo na prikaz.

Privzeta izbira je Mesh → Full, ki nariše mrežo med nad x-y ravnino enakomerno razporejenimi točkami, katerih število je določeno s PlotPoints.

Z izbiro Mesh → None mrežo izključimo.

Mesh → n nariše mrežo iz n x n črt.

Mesh → All nariše mrežo med vsemi točkami, ki so bile izračunane za graf.

Primeri uporabe

  1. Plot3D[x^2, {x, -2, 2}, {y, -2, 2}]
  2. Plot3D[x^2, {x, -2, 2}, {y, -2, 2}, Mesh -> None]
  3. Plot3D[x^2, {x, -2, 2}, {y, -2, 2}, Mesh -> 5]
  4. Plot3D[x^2, {x, -2, 2}, {y, -2, 2}, Mesh -> All] (vidimo, da je mreža gostejša tam, kjer se funkcija hitreje spreminja; na takih mestih se izračunajo dodatne točke rekurzivno)

1.                                                  2.

(http://www2.nauk.si/files/51/Mesh_Full.jpg) (http://www2.nauk.si/files/51/Mesh_None.jpg)

3.                                                  4.

(http://www2.nauk.si/files/51/Mesh_5.jpg) (http://www2.nauk.si/files/51/Mesh_All.jpg)

PlotStyle, ContourStyle

ContourStyle

Za grafe iz nivojnic (kakršnega nariše ContourPlot3D) uporabljamo ContourStyle. S ContourStyle lahko grafu določimo barvo, odtenek, motnost, nivo sivine ali v en napotek združenih več določil. Črtam lahko določimo debelino in črtkanost.

PlotStyle

S PlotStyle lahko določimo vse pri ContourStyle naštete lastnosti in poleg njih še lastnoti roba objekta, lastnosti lica objekta, velikost točke, odsevnost (spekularnost) ter barvo sija.

Primeri uporabe

  1. Plot3D[x^2, {x, -1, 1}, {y, 0, 1}]

    (http://www2.nauk.si/files/51/Style.jpg)
  2. Plot3D[x^2, {x, -1, 1}, {y, 0, 1}, PlotStyle -> Red] (določili smo rdečo barvo)

    (http://www2.nauk.si/files/51/Style_red.jpg)
  3. Plot3D[x^2, {x, -1, 1}, {y, 0, 1}, PlotStyle -> {Red, Opacity[0.5]}]
    (določili smo rdečo barvo in polovično [0.5] prosojnost;
    ker smo določili več kot eno možnost PlotStyle, smo ju navedli v zavitih oklepajih)

    (http://www2.nauk.si/files/51/Style_red_opacity.jpg)

PlotPoints

Graf je izrisan na podlagi izračunanih točk. Število izračunanih točk določimo z možnostjo PlotPoints. Število PlotPoints je število točk (x, y), za katere bo izračunana vrednost z = f(x, y).

Če je izračunanih točk premalo, površina grafa ni gladka (slika 2). Običajno je privzeto število za PlotPoints dovolj veliko, da je graf gladek (slika 1).

Izbira PlotPoints -> n pomeni, da bo za n x n točk v ravnini x-y izračunana vrednost f(x, y).

Izbira PlotPoints -> {nx, ny} pomeni, da bo vrednost f(x, y) izračunana za nx x ny točk v x-y ravnini.

Točke, izbrane s PlotPoints, so enakomerno razporejene nad ravnino x-y.

Če je razbrazdanost grafa posledica oscilacije funkcije, na njegovo gladkost s PlotPoints ne moremo vplivati.

Primer

  1. Plot3D[Sin[x + y], {x, -10, 10}, {y, -10, 10}] (privzeta vrednost je PlotPoints -> 15)
  2. Plot3D[Sin[x + y], {x, -10, 10}, {y, -10, 10}, PlotPoints -> 5]
  3. Plot3D[Sin[x + y], {x, -10, 10}, {y, -10, 10}, PlotPoints -> 50]
    (vidimo, da je razlika v kvaliteti grafa med privzeto vrednostjo PlotPoints -> 15 in veliko večjo vrednostjo PlotPoints -> 50 minimalna)

1.                                                  2.

(http://www2.nauk.si/files/51/PlotPoints_25.jpg) (http://www2.nauk.si/files/51/PlotPoints_5.jpg)

3.

(http://www2.nauk.si/files/51/PlotPoints_50.jpg)

MaxRecursion

Graf je narisan na podlagi točk, ki so izračunane direktno z vstavljanjem vrednosti x, y v funkcijo. Te točke so enakomerno izbrane na x-y ravnini. Število teh točk določimo z možnostjo PlotPoints.

Na tistih predelih x-y, kjer se funkcija hitro spreminja, so rekurzivno izračunane dodatne točke.

Globino rekurzije določimo z možnostjo MaxRecursion. Privzeta vrednost za MaxRecursion je 1.

Primer

  1. Plot3D[x^3 y^2, {x, -1, 1}, {y, -1, 1}, ViewPoint -> Top, Mesh -> All] (leva slika)
    (z možnostjo Mesh -> All smo zagotovili, da je mreža narisana tudi med rekurzivno izračunanimi točkami, ne samo med iz funkcije naravnost izračunanimi točkami, ki so enakomerno razporejene nad x-y ravnino)

    (http://www2.nauk.si/files/51/PlotPoints_privzeto_15_MaxRecursion_privzeto_1.jpg) (http://www2.nauk.si/files/51/PlotPoints_privzeto_15_MaxRecursion_0.jpg)
  2. Plot3D[x^3 y^2, {x, -1, 1}, {y, -1, 1}, ViewPoint -> Top, Mesh -> All, MaxRecursion -> 0] (desna slika)
    (desni graf nima rekurzivno izračunanih točk; kjer je funkcija v zgornjem desnem in spodnjem levem vogalu slike odrezana, vidimo večjo nalomljenost grafa na desni sliki; rekurzivno izračunane točke zgladijo graf)

Show

S funkcijo Show prikažemo več objektov v eni sliki.

Primer

V točki 1., 2. in 3. definiramo elemente. Lahko bi jih definirali znotraj ukaza Show, vendar je tako pregledneje. V točkah 4. in 5. prikažemo tri elemente v isti sliki. Opazimo, da so na sliki 4 osi označene z X, Y in Z (velja določilo iz definicije elementa krivulja). Za sliko 5 predpišemo, naj osi nimajo oznak (AxesLabel -> None). Možnost, definirana znotraj Show, ima večjo težo kot možnost, definirana znotraj posameznega elementa.

  1. krivulja = ParametricPlot3D[{t^2, Log[t], -3t}, {t, 0, 2}, AxesLabel -> {X, Y, Z}, PlotStyle -> Thick]
  2. ploskev = ContourPlot3D[3x + 6y + 4z + 9 == 0, {x, 0, 4}, {y, -4, 1}, {z, -6, 0}]
  3. točka = Graphics3D[{Blue, Sphere[{1, Log[1], -3}, 0.1]}]
    1.                           2.                            3.

    (http://www2.nauk.si/files/51/Show_Krivulja_57.jpg) (http://www2.nauk.si/files/51/Show_PritisnjenaRavnina_57.jpg) (http://www2.nauk.si/files/51/Show_Tocka_57.jpg)
  4. Show[krivulja, ploskev, točka]
  5. Show[Krivulja, PritisnjenaRavnina, Točka, AxesLabel -> None]
    4.                                                       5.

    (http://www2.nauk.si/files/51/Show_privzetiPogled.jpg) (http://www2.nauk.si/files/51/Show_privzetiPogled_brezAxesLabel.jpg)

Graphics3D (Sphere)

Z ukazom Graphics3D lahko narišemo naslednje osnovne oblike:

  1. kroglo (Sphere),
  2. kvader (Cuboid),
  3. valj (Cylinder),
  4. stožec (Cone),
  5. cev (Tube),
  6. točko (Point),
  7. črto (Line),
  8. mnogokotnik (Polygon),
  9. besedilo (Text),
  10. puščico (Arrow),
  11. Bezierjevo krivuljo (BezierCurve),
  12. bazni
    (B-)zlepek: krivuljo, ploskev (BSplineCurve, BSplineSurface),
  13. osnovno obliko na podlagi že obstoječih podatkov (GraphicsComplex) in
  14. skupino objektov (GraphicsGroup).

Prikažimo uporabo ukaza Graphics3D na krogli (Sphere).

Graphics3D[Sphere[{x, y, z}, r]] nariše kroglo s središčem v (x, y, z) in polmerom r.

Lastnosti za Graphics3D objekte navedemo pred objekti.

Lastnosti navedemo znotraj zavitih oklepajev skupaj z objekti, za katere naj veljajo.

Primer

  1. paraboličniValj = Plot3D[x^2, {x, -1, 1}, {y, 0, 1}, PlotStyle -> {Red, Opacity[0.5]}]; (s podpičjem preprečimo prikaz slike)
  2. krogla = Graphics3D[{Green, Opacity[0.5], Sphere[{-0.7, 0.2, 0.6}, 0.15]}] (objekt z lastnostima zelena barva in prosojnost [0.5]: krogla s središčem v (-0.7, 0.2, 0.6))
  3. Show[paraboličniValj, krogla, BoxRatios -> Automatic]
    (Zaradi izbire BoxRatios -> Automatic bodo imele koordinatne osi enako skalo, zaradi česar je krogla prikazana proporcionalno. Zaradi optimalnega prikaza drugih funkcij jo Show sicer lahko splošči. V Graphics3D je uporaba Automatic privzeta.)

2.

(http://www2.nauk.si/files/51/Sphere_green.jpg)

3.

(http://www2.nauk.si/files/51/Sphere_green_show_0.jpg)

AxesLabel

Z možnostjo AxesLabel določimo oznake za koordinatne osi.

Primeri

  1. Plot3D[Sin[x] - Cos[y], {x, -10, 10}, {y, -10, 10}] (privzeta vrednost je AxesLabel -> None))
  2. Plot3D[Sin[x] - Cos[y], {x, -10, 10}, {y, -10, 10}, AxesLabel -> Automatic]
    (oznake temeljijo na imenih spremenljivk, ki smo jih izbrali znotraj Plot3D)
  3. Plot3D[Sin[x] - Cos[y], {x, -10, 10}, {y, -10, 10}, AxesLabel -> Sin[x] - Cos[y]]
    (označimo samo os z)
  4. Plot3D[Sin[x] - Cos[y], {x, -10, 10}, {y, -10, 10}, AxesLabel -> {x, y, Sin[x] - Cos[y]}]
    (označimo vse tri osi)

Rešen primer I: 3 ploskve

Rešen primer II: 2 ploskvi in stična točka

Prevodi matematičnih besed iz angleščine v slovenščino

Seznam angleških besed po vrstnem redu kot so se pojavile v gradivu:

  1. plot - narisati; shema, diagram
    min (okrajšava za minimum) - minimum; najmanj
    max (okrajšava za maximum) - maksimum; največ
  2. parametric - parametričen
  3. axes - osi (ednina: axis - os)
    label - oznaka
    none - nobena
  4. contour - nivojnica, izohipsa
  5. range - zaloga vrednosti; razpon, obseg
  6. style - stil, slog
    yellow - rumena
    red - rdeča
    blue - modra
    green - zelena
  7. mesh - mreža
    full - polna
    none - nobena
    all - vsa, cela
  8. opacity - motnost, neprozornost; nepropustnost (za svetlobo)
  9. points - točke (endina: point - točka)
  10. recursion - rekurzija; ponovitev
    maxrecursion - globina rekurzije
  11. viewpoint - (vidik, stališče); razgledna točka
    top - zgornja, najvišja
  12. show - pokazati, prikazati
  13. thick - debel; gost; močan, izrazit
  14. graphics - grafika; risba, slikovni prikaz
    3D - 3-dimenzionalen, 3-razsežen
    sphere - sfera; krogla, obla
  15. box - škatla, okvir
    ratios - razmerja (ednina: ratio - razmerje)
    automatic - avtomatsko, samodejno

Viri

  • Stephen Wolfram: Mathematica Book (5. izdaja)

    • strani 131-173, poglavje 1.9: Graphics and Sound
  • Pomoč znotraj programa Mathematica 8.0
  • 07_Risanje_grafov.nb (po Bor Plestenjak:Tečaj iz Mathematice 3. del priredila Alen Orbanić in Matjaž Željko)
0%
0%