3. Definice funkcí. Grafy, křivky a plochy.

Definice funkcí

Definice funkce jedné proměnné:

f[x_]:=x^2-4x+4

Místo obvyklého přiřazení pomocí = používáme dvojici znaků :=. Název proměnné na levé straně musí být následován znakem _. 
Zkusme funkci použít:

f[2]

f[t]

D[f[x],x]

Factor[f[x]]

Pokud zapomeneme definici, lze vyvolat nápovědu:

?f

Definici funkce lze smazat pomocí Clear:

Clear[f]

Podobně se definují funkce více proměnných:

g[x_,y_]:=(x+y)^2-x y^2

D[g[x,y],y]

Clear[g]

Lze pracovat i s funkcemi, které jsou zadány na různých částech definičního oboru různými předpisy. Takto bychom např. mohli definovat funkci sgn (ve skutečnosti je už v Mathematice implementována pod názvem Sign):

sgn[x_]:=Piecewise[{{-1,x<0},{0,x==0},{1,x>0}}]

sgn[-3]

sgn[0]

sgn[2]

Clear[sgn]

Podmínky mohou být i komplikovanější, lze používat logické spojky && (a zároveň), || (nebo).

f[x_]:=Piecewise[{{x,x>=0 && x<1},{1,x≥1}}]

f[0.5]

f[2]

V bodech, kde jsme hodnotu nedefinovali, se automaticky bere nulová:

f[-1]

Derivace po částech definované funkce:

D[f[x],x]

Clear[f]

Grafy funkcí, křivky a plochy

Grafy funkcí jedné proměnné

Graf funkce jedné proměnné na zadaném intervalu:

Plot[Sin[x]/x,{x,-8,8}]

Plot[1/x,{x,-Infinity,Infinity}]

Dva nebo více grafů v jednom obrázku:

Plot[{Sin[x],Sin[2x]},{x,-2Pi,2Pi}]

Vzhled grafu lze ovlivňovat pomocí mnoha voleb. Jejich úplný seznam včetně příkladů použití najdete v dokumentaci k funkci Plot (sekce Options). Všechny volby se zapisují jako poslední (volitelné) argumenty a mají tvar název volby->hodnota (šipka se vloží jako dvojice znaků – a >).

Nastavení barvy čáry:

Plot[ArcTan[x],{x,-2,2},PlotStyle->Red]

Tloušťka čáry:

Plot[ArcTan[x],{x,-2,2},PlotStyle->Thin]

Plot[ArcTan[x],{x,-2,2},PlotStyle->Thick]

Plot[ArcTan[x],{x,-2,2},PlotStyle->AbsoluteThickness[5]]

Změna barvy i tloušťky zároveň:

Plot[ArcTan[x],{x,-2,2},PlotStyle->{Red,Thin}]

Jiné styly čar:

Plot[ArcTan[x],{x,-2,2},PlotStyle->Dashed]

Plot[ArcTan[x],{x,-2,2},PlotStyle->Dotted]

Plot[ArcTan[x],{x,-2,2},PlotStyle->{Thin,Red,DotDashed}]

Vykreslujeme-li více grafů do jednoho obrázku, můžeme zadat styl u každého zvlášť:

Plot[{x^2 Sin[x],x^2,-x^2},{x,-4Pi,4Pi},PlotStyle->{{Red,Dashed},{Blue,Thin},{Green}}]

Poměr stran obrázku:

Plot[ArcTan[x],{x,-2,2},AspectRatio->1/3]

Automatic znamená takový poměr stran, aby délkové jednotky na obou osách byly stejné:

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

Plot[ArcTan[x],{x,-5,5},AspectRatio->Automatic]

Vypnutí os a zapnutí rámečku:

Plot[ArcTan[x],{x,-2,2},Axes->False,Frame->True]

Změna písma použitého pro popisky na osách:

Plot[ArcTan[x],{x,-2,2},BaseStyle->{FontSize->12,FontFamily->"Arial",FontWeight->Bold}]

Pomocí AxesOrigin lze nastavit, ve kterém bodě se mají protínat souřadnicové osy.

Plot[x^3+2x^2+20,{x,-2,2}]

Plot[x^3+2x^2+20,{x,-2,2},AxesOrigin->{0,0}]

Grafy funkcí dvou proměnných

Plot3D slouží k zobrazení funkce dvou proměnných. Pomocí myši lze grafem otáčet. Držíme-li navíc klávesu Ctrl, můžeme se přibližovat nebo vzdalovat.

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

Také u Plot3D lze ovlivňovat vzhled grafiky pomocí mnoha voleb:

Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},Boxed->False]

Plot3D[x^2+y^2,{x,-1,1},{y,-1,1},Boxed->False,Mesh->None]

Plot3D[Sqrt[Abs[x y]],{x,-10,10},{y,-10,10},Mesh->None]

Kvalitnější obrázek dostaneme zvýšením PlotPoints:

Plot3D[Sqrt[Abs[x y]],{x,-10,10},{y,-10,10},Mesh->None,PlotPoints->80]

DensityPlot představuje jiný způsob, jak zobrazovat funkce dvou proměnných. Výsledkem je dvourozměrný obrázek definičního oboru, funkční hodnoty jsou vyznačeny pomocí barevné stupnice (tmavší barvy odpovídají menším hodnotám a naopak).

DensityPlot[Sqrt[Abs[x y]],{x,-10,10},{y,-10,10},PlotPoints->80]

ContourPlot je analogie DensityPlot, zobrazuje vrstevnice funkce (tj. křivky, které odpovídají stejným funkčním hodnotám) a oblasti mezi nimi vyplní barvami.

ContourPlot[Sqrt[Abs[x y]],{x,-10,10},{y,-10,10}]

Křivky, plochy a rovinné oblasti

ContourPlot se rovněž hodí k zobrazování rovinných křivek zadaných implicitně (tj. ve tvaru f(x,y)=0 nebo obecněji f(x,y)=g(x,y)). Prvním argumentem je příslušná rovnice:

ContourPlot[2(x^2+y^2)^2==25(x^2-y^2),{x,-5,5},{y,-5,5},ContourStyle->Red]

Implicitně zadané plochy v prostoru se dají zobrazit pomocí ContourPlot3D:

ContourPlot3D[x^2+y^2==1,{x,-1,1},{y,-1,1},{z,-3,3}]

BoxRatios je analogií AspectRatio pro prostorové obrázky:

ContourPlot3D[x^2+y^2==1,{x,-1,1},{y,-1,1},{z,-3,3},BoxRatios->Automatic]

ParametricPlot je určen ke kreslení rovinných křivek zadaných parametricky (tj. jako dráha bodu pohybujícího se v čase).

ParametricPlot[{t Cos[t],t Sin[t]},{t,0,8Pi},Axes->False,Frame->True]

I rovinné oblasti lze zadávat parametricky (jako obor hodnot nějaké funkce dvou proměnných):

ParametricPlot[{r Cos[t],r Sin[t]},{t,0,2Pi/3},{r,1/2,1},Axes->False]

ParametricPlot3D slouží ke kreslení prostorových křivek nebo ploch zadaných parametricky:

ParametricPlot3D[{Sin[t],Cos[t],t/4},{t,0,4Pi},PlotStyle->{Thick,Blue}]

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

RegionPlot zobrazuje množinu všech bodů, které splňují zadanou podmínku; obvykle jde o nerovnici nebo soustavu nerovnic:

RegionPlot[1<x^2+y^2<2 && y>0,{x,-2,2},{y,-2,2}]

Příkaz Show

Obrázky vygenerované všemi výše zmíněnými příkazy lze ukládat do proměnných a dále s nimi pracovat:

a=Plot[x^2,{x,-2,2},PlotStyle->Thick]

b=ParametricPlot[{0.5Cos[t],0.5Sin[t]+0.5},{t,0,2Pi},PlotStyle->{Thick,Orange}]

Pomocí Show lze zkombinovat více obrázků do jednoho:

Show[a,b]

Protože Mathematica použila na každé ose jiné měřítko, stala se z kružnice elipsa. Můžeme to napravit použitím volby AspectRatio->Automatic.

Show[a,b,AspectRatio->Automatic]

Uložení obrázku do souboru

Chceme-li vytvořený obrázek uložit do souboru, klikneme na něj pravým tlačítkem a z kontextového menu vybereme Save Graphic As.

Jinou možností je použít příkaz Export, např. takto:

a=Plot[ArcTan[x],{x,-2,2},PlotStyle->Thick]

SetDirectory[NotebookDirectory[]]

Export["graf.png",a]

Nastavení rozměrů obrázku pomocí ImageSize:

Export["graf.png",a,ImageSize->{800,Automatic}]

Export může být užitečný také v situaci, kdy obrázky generujeme nějakým programem a chceme je automaticky ukládat.