# Grafy funkcí

## Rychlý graf

Pokud chceme rychle vykreslit graf funkce, staèí využít dialog z menu Grafy.
Graf se zobrazí v samostatném oknì.
Chceme-li ho umístit do pracovního listu, mùžeme ho tam vložit jako obrázek.
Po jeho provedení zùstane v pracovním listu zapsaný pøíkaz:

plot2d([x^2-5], [x,-5,5]);

Otevøení grafu v samostatném oknì má své výhody: 
okno má vlastní menu, které nám umožní mìnit nìkteré (grafické) vlastnosti i dodateènì, 
po konstrukci grafu. 
Použijeme k tomu pøíslušnou položku menu (tøeba položku Options), ale záleží na formátu grafu.

Chceme-li, aby se graf zobrazil pøímo v listu, použijeme pøíkaz wxplot2d.

wxplot2d([x^2-4], [x,-5,5]);

## Pøíkazy pro kreslení a vlastnosti grafu

### Pøíkazy

"Základní" kreslicí pøíkaz Maximy jsou pøíkazy draw2d, draw3d a draw. 
Chceme-li plnì využít všech možností kreslení pomocí funkcí draw2d, draw3d a draw, 
je tøeba pøed prvým voláním kresby grafu vyvolat pøíslušnou knihovnu.

load(draw)$

Èasto ale budeme využívat spíše funkcí plot: plot2d, pøípadnì plot3d, 
èi jejich varianty wxplot... 
(Pro kreslení grafù existuje ještì mnoho dalších funkcí.)

Každý z tìchto pøíkazù má tvar (pøíklad pro wxplot2d): 
(wx)plot2d(funkce, rozsah(y), podmínky), pøièemž prvý pøíklad ukazuje vstup %i1
a o podmínkách se zmíníme pozdìji.
Urèení rozsahu pro osu y mùže vynutit takové zobrazení grafu, 
kde budou nìkteré hodnoty oøíznuté (graf nevyplní celý obdélník).

wxplot2d([x^2-4], [x,-5,5], [y,-10,10]);

### Zobrazení nìkolika grafù

Chceme-li v jednom obrázku zobrazit nìkolik grafù, 
uvedeme jako prvý parametr kreslicí funkce jejich seznam 
(v prvé hranaté závorce, proto tam ta závorka je).

wxplot2d([x^2-4,2*x-2], [x,-5,5]);

### Podmínky

V seznamu podmínek nastavujeme další vlastnosti grafu èi grafù.
Barvy, zobrazení os, typy èar,...
Podívejte se do nápovìdy (a do následujícího pøíkladu).
Každá z podmínek má tvar seznamu (je uzavøena v hranatých závorkách),
kde jako prvý stojí název parametru (podmínky) a za ním jeho hodnota èi seznam hodnot. 

wxplot2d([x^2-4,2*x-2], [x,-5,5], [style , dots, solid], 
 [color, green, black], [box, false] );

Nìkteré jednotlivé parametry (podmínky) mùžeme nastavit globálnì 
pro všechny následující grafy funkcí (pøíkazem) set_plot_option.  

set_plot_option([color, cyan, red, green, magenta])$
set_plot_option([box, false])$
wxplot2d([x^2-4,2*x-2],[x,-10,5]);
wxplot2d([sin(x),2*cos(x)],[x,-2*%pi,3*%pi], [y,-4,5]);

Obnovíme defaultní hodnoty parametrù kreslení.
Necháme-li výsledek provedení pøíkazu zobrazit, 
vidíme výpis hodnot všech parametrù, které je možno tímto pøíkazem mìnit.

set_plot_option([color, blue, red, green, magenta, black, cyan 


])$
set_plot_option([box, true]);

## Pojmenování (definice) funkcí

Stejnì, jako máme k dispozici pojmenování hodnot promìnnými, 
mùžeme si pojmenovat (tedy definovat) vlastní funkce. 
Pro pøiøazení však používáme symbol := .

f(x):= x^2$
g(x):= -2*x$

Pøedpis funkce mùže obsahovat i podmínku:

h(x) := if x < 0 then -2*x - 1 else -1 + x^2 $

S funkcemi mùžeme provádìt operace:

k(x):= f(x)*g(x);

A mùžeme vykreslovat jejich grafy:

wxplot2d([f,g,k],[x,-5,5]);

wxplot2d([h],[x,-4,4]);

Nezávisle promìnná se pochopitelnì nemusí jmenovat x:

m(b):= (b-2)*(b+1)$
wxplot2d([m],[b,-4,4],[xlabel, "prom. b"],[ylabel, "funkce m"]);

## Posuvník

wxMaxima poskytuje užiteèný grafický nástroj, který mùže zlepšit názornost vytváøených materiálù.
Tímto nástrojem je tzv. POSUVNÍK.
Pokud ho chceme pøi vykreslování grafù funkcí (jedné promìnné) využít, musíme místo funkce draw2d
volat funkci (pøíkaz) with_slider_draw.
Funkci draw jsme výše nepoužívali, všimnìte si vyjádøení jejích parametrù.

### Pøíprava grafu

V pøíkazu draw2d (wxdraw2d) se funkce vykresluje pøíkazem explicit:

load(draw)$
wxdraw2d(explicit(x^2,x,-1,1))$

Teï potøebujeme funkci s parametrem:

p: 2$
q(x) := p*x^2$
wxdraw2d(explicit(q,x,-1,1))$

Ta ale zobrazí pouze funkci pro aktuální hodnotu parametru.
Proto musíme parametr vybrat z pøipraveného seznamu.
Takhle uvidíme všechny funkce ze seznamu:

fce: makelist (s*x^2, s, [-5,-4,-3,-2,-1,0,1,2,3,4,5])$
'fce=fce;

wxplot2d(fce,[x,-1,1]);

Nebo postupnì do grafù:

for d:-1 thru 1 step 0.5 do
wxdraw2d(xrange = [-0.5,1.5], yrange = [-1,2], explicit(d*x^2,x,0,1));

A nebo postupnì - nepohodlnì - v oknì:

for d:-1 thru 1 step 0.5 do 
draw2d(xrange = [-0.5,1.5], yrange = [-1,2], explicit(d*x^2,x,0,1));

Takhle použijeme posuvník. 
Nechte Maximu poèítat.
Poté kliknìte do obrázku a otáèejte koleèkem myši 
nebo klikejte na ikonu posuvníku - trojúhelník na Panelu nástrojù
nebo za ètvereèek táhnìte.

with_slider_draw(a,{-5,-4,-3,-2,-1,0,1,2,3,4,5}, explicit(a*x^2,x,-1,1))$

Teï nám graf nastavuje optimální jednotky pro úplné vyplnìní prostoru 
a zmìny grafu v závislosti na parametru nevyniknou.
Pøidáme tedy do kreslicí funkce parametry, které osy upevní
(a ještì zmìníme barvu):

with_slider_draw( a,{-5,-4,-3,-2,-1,0,1,2,3,4,5}, 
         xrange = [-1.5,1.5], yrange = [-.5,1.5],
         xaxis = true, yaxis = true, 
         color = green, explicit(a*x^2,x,-1,1))$

A pokud si chceme hodnoty parametru automaticky napoèítat:

with_slider_draw( a, makelist(0.1*i,i,-20,20),
         xrange = [-1.5,1.5], yrange = [-.5,1.5],
         xaxis = true, yaxis = true, 
         color = blue, explicit(a*x^2,x,-1,1))$

# Konec této èásti

kill(all)$