TEÈAJ IZ MATHEMATICE

6. DEL

Bor Plestenjak

Glave

Izrazi  v MMA so sestavljeni ali nesestavljeni. Nesestavljene izraze imenujemo tudi atome. MMA pozna 6 vrst atomov: Integer, Rational, Real, Complex, Symbol in String. V primeru atoma je glava kar enaka vrsti atoma, v primeru sestavljenega izraza pa najbolj zunanji funkciji. V primeru sestavljenega izraza izr nam Head[izr] vrne glavo, Length[izr] vrne število argumentov, izr[[i]] pa i-ti argument izraza izr. Notranjo sintakso izraza si lahko ogledamo z ukazom FullForm.

Map[Head,{3,3.3,Sqrt[2],w,{1,2,3},"abc",3+I}]

FullForm[a+b+c]

Head[a+b+c]

(a+b+c)[[2]]

Length[a+b+c]

Vzorci

Vzorce uporabljamo v transformacijskih pravilih in pri zamenjavah funkcij. Loèimo naslednje primere:
	_ 		: poljuben izraz
	x_		: poljuben izraz (z imenom x)
	__		: poljubno neprazno zaporedje izrazov
	x__		: poljubno neprazno zaporedje izrazov (z imenom x)
	___		: poljubno zaporedje izrazov (lahko tudi prazno)
	x___		: poljubno zaporedje izrazov	(z imenom x)
	x_h		: izraz z glavo h
	vz : y		: privzeta vrednost za manjkajoèi argument je y
	vz ? f		: izraz, ki ustreza vzorcu vz in pri katerem je predikat f izpolnjen
	vz /; pog	: izraz, ki ustreza vzorcu vz in pri katerem je pogoj pog izpolnjen
	x:vz		: izraz, ki ustreza vzorcu vz (z imenom x)
	vz1 | vz2	: izraz, ki ustreza svaj enemu od vzorcev vz1, vz2

Definifrali bomo funkcijo f kot funkcijo enega argumenta. Pri tem bo funkcija vraèala razliène rezultate pri razliènih vrstah argumentov.

f[x_]:="Splosno"
f[x_Integer]:=5 x
f[x_Real]:=10 x
f[x_Complex]:=20 x
f[1]:=1
{f[1],f[2],f[3.3],f[5+I],f[Sqrt[5]],f[w],f["abc"]}

Pri tako definiranih funkcijah moramo paziti, saj konstant ali simboliènih izrazov, kot sta npr. Pi ali Sqrt[2], MMA ne jemlje kot števila.

NumberQ[Sqrt[5]]

?f

Podobno lahko definiramo tudi funkcijo veè spremenljivk. V naslednjem primeru lahko g poklièemo tudi z enim samim argumentom. V tem primeru je privzeta vrednost drugega enaka 4.

g[x_,y_]:={x,y}
g[x_,y_:4]:={x,y}
g[x_,y__]:={x, y}	
{g[1,2],g[1],g[1,2,3]}

h[x_Integer | x_Real]:=5x
{h[4],h[5.5],h[6+I]}

Substitucije in transformacijska pravila

Izraz oblike x->a, kjer sta x in a poljubna izraza je transformacijsko pravilo. Leva stran je pogosto spremenljivka, lahko pa je tudi sestavljen izraz, ki vsebuje poljubne vzorce. Transformacijsko pravilo uporabimo na izrazu b tako, da zapišemo b /. x->a. Rezultat je izraz b, v katerem so podizrazi oblike x nadomešèeni z izrazom a. Namesto posameznega pravila lahko uporabimo tudi seznam transformacijskih pravil.

V naslednjem izrazu bomo x zamenjali s 4.

x+y /. x->4

V naslednjem izrazu bomo uporabili seznam zamenjav. Zamenjava x->3 se izvede prej kot x->4, zato kot rezultat dobimo {3,5}.

{x,y} /. {x->3,x->4,y->5}

Kadar elimo kot rezultat dobiti seznam razliènih substitucij, potem zamenjave podamo kot seznam seznamov transformacijskih pravil. Kot rezultat potem dobimo seznam izrazov.

x /. {{x->3},{x->4},{x->5}}

V naslednjem zgledu izraz zapisan v karteziènih koordinatah prevedemo v polarne koordinate.

x^2 y+x /. {x->r Cos[x], y->r Sin[x]}

Pri transformacijskih pravilih lahko uporabljamo vzorce kot pri definicijah fukcij. Tako v naslednjem zgledu zamenjamo le tiste pare, ki imajo za prvi element x, drugi element pa je naravno število..

{{x,1},{x,y},{w,3},{w,y}} /. {x,t_Integer}->{4,t}

Risanje parametrièno podanih krivulj

Z MMA lahko rišemo tudi grafe vektorskih funkcij. Na voljo imamo ukaza ParametricPlot in ParametricPlot3D. Rišemo lahko tudi krivulje, podane v polarni obliki. Ustrezna funkcija je PolarPlot, ker pa se nahaja v enem od paketov, jo moramo predhodno naloiti z <<Graphics`Graphics`. Najbolje pa je, da vedno naloimo kar <<Graphics`Master`, saj bo ta paket potem sam poskrbel za nalaganje ustreznih paketov za grafiène ukaze.

ParametricPlot

Kot prvi argument funkcije ParamatericPlot moramo podati vektorsko funkcijo, ki slika v R^2. Podamo jo kot par funkcij parametra t, prvi element je x, drugi pa y koordinata. Drugi argument pove, v kakšnih mejah teèe parameter t.

{Cos[t],Sin[t]} je parametrièna oblika enaèbe kronice.

ParametricPlot[{Cos[t],Sin[t]},{t,0,2Pi}]

{(t^2-1)/(t^2+1), t(t^2-1)/(t^2+1)} je parametrièna oblika krivulje, ki se imenuje sferoida.

ParametricPlot[(t^2-1)/(t^2+1) {1,t},{t,-3,3}]

PolarPlot

Polarna oblika enaèbe kronice je r=1.

<<Graphics`Master`
PolarPlot[1,{x,0,Pi}]

Enaèba r=fi v polarnem zapisu predstavlja spiralo.

PolarPlot[x,{x,0,5Pi}]

Veèperesne deteljice v polarni obliki lahko zapišemo kot r=cos(k fi).

PolarPlot[Cos[5x],{x,0,2Pi}]

ParametricPlot3D

S funkcijo ParametricPlot3D lahko rišemo krivulje vektorskih funkcij, ki slikajo v R^3.

Krivuljo oblike {Cos[k t], Sin[k t], h t} imenujemo vijaènica.

ParametricPlot3D[{Cos[5 t],Sin[5 t],t},{t,0,5}]

Risanje parametrièno podanih ploskev.

Pri ParametricPlot3D so lahko koordinate odvisne od dveh parametrov in ne le od enega  samega. V tem primeru namesto krivulje dobimo ploskev.

ParametricPlot3D[{u Cos[v],u Sin[v],Cos[Pi u]/(1+u^3)},
				 {u,0,Pi},{v,0,2Pi}]

ParametricPlot3D[{u Sin[t],u Cos[t],t/3},{t,0,15},{u,-1,1}]

Cilindriène koordinate

Risanje ploskev, ki so podane v cilindriènih koordinatah nam omogoèa funkcija CylindricalPlot3D, ki se nahaja v enem od grafiènih paketov.

CylindricalPlot3D[r^2,{r,0,3},{x,0,2Pi}]

Sferiène koordinate

Risanje ploskev, ki so podane v sferiènih koordinatah nam omogoèa funkcija SphericalPlot3D, ki se nahaja v enem od grafiènih paketov.

SphericalPlot3D[1,{x,0,Pi},{y,0,3Pi/2}]

Risanje vrtenin

Z uporabo ukaza ParametricPlot3D lahko definiramo funkciji VrteninaX in VrteninaY, ki narišeta ploskev, ki jo dobimo, èe graf funkcije ene spremenljivke zavrtimo okrog x ali y osi. Ukaza prideta prav v primerih, ko je treba raèunati površino ali volumen tako dobljenih teles, saj si lahko telesa sedaj tudi grafièno predstavimo.

VrteninaX[f_,{x_,a_,b_},opts___]:=Module[{g},
	g[z_]:=f /. x->z;
	ParametricPlot3D[{w,g[w] Cos[u],g[w] Sin[u]},
					 {w,a,b},{u,0,2Pi},opts] ]

Kot zadnji argument pri definiciji imamo opts___. To pa zato, da lahko na ta naèin v ukazu VrteninaX uporabljamo opcije ukaza ParamatericPlot3D.

Plot[Abs[Sin[x]],{x,0,2Pi}]

VrteninaX[Abs[Sin[x]],{x,0,2Pi}]

VrteninaY[f_,{x_,a_,b_},opts___]:=Module[{g},
	g[z_]:=f /. x->z;
	ParametricPlot3D[{w Cos[u],w Sin[u],g[w]},
					 {w,a,b},{u,0,2Pi},opts] ]

VrteninaY[3 Abs[Sin[x]],{x,0,2Pi}]