Grafika v Mathematici

Andrej Bauer

Risanje grafov

Plot[Sin[x],{x,-5,5}]

Plot3D[((Sin[x+y])/(1+(x^2)+(y^2))),{x,-5,5},{y,-5,5},PlotRange->All]

DensityPlot[((Sin[x+y])/(1+(x^2)+(y^2))),{x,-5,5},{y,-5,5},PlotRange->All]

ContourPlot[((Sin[x+y])/(1+(x^2)+(y^2))),{x,-5,5},{y,-5,5},PlotRange->All]

ContourPlot[((Sin[x+y])/(1+(x^2)+(y^2)))==1/2,{x,-5,5},{y,-5,5},PlotRange->All,PlotPoints->50]

PolarPlot[ϕ,{ϕ,-10π,10π}]

ParametricPlot[{Cos[3*t],Sin[4*t]},{t,0,2π}]

ParametricPlot3D[{Cos[3*t],Sin[4*t],t*Sin[t]},{t,-2π,2π}]

VectorPlot[{-y*Sin[x],x},{x,-3,3},{y,-3,3}]

ListPlot[{1.2,0.9,1.3,0.4,1.1,1.2}]

Histogram[Table[Mod[(k^2)+8k,10],{k,1,1000}]]

Graphics in Graphics3D

V Mathematici lahko predstavimo 2D in 3D grafične objekte z ukazoma Graphics in Graphics3D. Grafične objekte naštejemo v seznamu.

Graphics[
{Circle[{1,1},2], 
Point[{1,0}],
Line[{{0,0}, {3,4}, {4,3}}]
},Axes->True]

Graphics3D[{Hexahedron[]}]

Graphics3D[{Cylinder[{{0,0,0},{1,2,1}},1/3], Sphere[{0,0,3},1/2], Polygon[{{0,0,1},{1,0,0},{1,1,1}}]}]

Poleg objektov lahko določamo tudi barve in ostale lastnosti. Objekti so lahko hierarhično gnezdeni v sezname in podsezname.

Graphics[
{
{
Red,
Polygon[{{-5,5},{5,5},{0,7}}]
}, 
{
Thickness[0.01],Line[{{-4,0},{4,0},{4,5},{-4,5}, {-4,0}}]
},
Text["Lep pozdrav",{0,3}]
}]

Table[f[n],{n,1,5}]

Table[Point[{n,(n^2)}],{n,1,5}]

Graphics[Table[Point[{n,(n^2)}],{n,1,5}]]

Graphics[{Table[Line[{{0,0},{Cos[n*2π/100],Sin[n*2π/100]}}],{n,1,100}]}]

Graphics[{Table[{Hue[n/100],Line[{{0,0},{Cos[n*2π/100],Sin[n*2π/100]}}]},{n,1,100}]}]

ClearAll[mavrica]
mavrica[m_]:=Graphics[{Table[{Hue[n/m],Line[{{0,0},{Cos[n*2π/m],Sin[n*2π/m]}}]},{n,1,m}]}]

mavrica[100]

mavrica[10]

mavrica[300]

Manipulate

Z ukazom Manipulate lahko prikažemo grafični objekt, ki je odvisen od parametrov.

Tangenta na krivuljo v dani točki

Dana je funkcija f, zanima nas tangenta v točki (Subscript[x, 0]). Krajši račun pokaže, da ima tangenta enačbo f'[(Subscript[x, 0])]·(x-(Subscript[x, 0]))+f[(Subscript[x, 0])].

Funkcijski predpis x↦(x^2)+3 v Mathematici napišemo takole:

Function[x,(x^2)+3]

ali pa takole:

(((#)^2)+3)&

(Function[x,(x^2)+3])[10]

(Function[x,(x^2)+3])[u+1]

Kaj pomeni izraz naslednji izraz?

Function[t,f'[x0]*(t-x0)+f[x0]][x]

Najprej imamo

Function[t,f'[x0]*(t-x0)+f[x0]]

pravi: t se preslika v f'[x0]*(t-x0)+f[x0]. Nato se ta funkcijski predpis uporabi na x.

ClearAll[tangenta]
tangenta::usage="tangenta[f[x],x,(Subscript[x, 0])] je enačba tangente na f[x] v točki x = (Subscript[x, 0])";
tangenta[f_,x0_,x_]:=Function[t,f'[x0]*(t-x0)+f[x0]][x]

Prezikusimo:

tangenta[Function[x,(x^2)],1,x]//Simplify

Graf krivulje in tangente

Plot[{Sin[x]*x,tangenta[Function[x,Sin[x]*x],2,x]},{x,-5,5}]

Ukaz Manipulate

ClearAll[f]
f[t_]:=Cos[t]*t

Plot[{f[x],tangenta[f,2,x]},{x,-5,5}]

Manipulate[
Plot[Sin[a*x],{x,-5,5}],
{a,-3,3}
]

Manipulate[
Plot[Sin[a*x+b],{x,-5,5}],
{a,-3,3},{b,-2,2}
]

Manipulate[
Plot[
{f[x],tangenta[f,x0,x]},
{x,-5,5},
PlotRange->{{-5,5},{-5,5}},AspectRatio->Automatic
],
{{x0,1},-5,5}]

Animate

Animacije delamo z ukazom Animate, ki sicer deluje podobno kot Manipulate, le da samodejno spreminja vrednost parametra.

ClearAll[f]
f[t_]:=Cos[t]*t
Animate[
Plot[
{f[x],tangenta[f,x0,x]},
{x,-5,5},
PlotRange->{{-5,5},{-5,5}},AspectRatio->Automatic
],
{x0,-5,5}]

Animate[
Graphics[{Hue[r],Disk[{0,0},1/2+Sin[π*5*r]/3]},PlotRange->{{-1,1},{-1,1}}],
{r,0,1}]