Jednopříkazové funkce lze zadat v šipkové notaci, výsledek se ničemu nepřiřazuje, jen se napíše jako výraz:
> f := (x,y) -> x^2+y^2;
Funkce lze také ekvivalentně zadat jako procedury , které nemusejí být jednopříkazové (end je zavírací závorka od proc. Když ji zapomenete, Maple vám nápadně dlouho nedá žádný výstup).
> fce := proc(x,y) x^2+y^2 end;
Je nutno rozlišovat výraz , např.
> vyraz := sin(x^2);
... a funkci , např.
Zde je vidět první rozdíl.
> vyraz; funkce;
Z funkce se při výstupu vypíše jen jméno, její definici dostaneme pomocí eval . (Totéž platí o polích, jak uvidíme dále):
> eval(funkce);
Za funkci můžeme napsat argument:
> funkce(x), funkce(3);
Potom lze v daném bodě samozřejmě spočítat funkční hodnotu. Zde už bude fungovat i příkaz evalhf , jak jsme zmínili v předchozí kapitole.
>
evalf(funkce(3));
evalhf(funkce(3));
Za výraz sice také napsat argument, ale s (obvykle) nežádoucím výsledkem (zde bychom museli použít buď globální definici proměnných nebo příkaz subs).
> vyraz(x), vyraz(3);
Takto by situace vypadala při globální definici proměnné :
>
x:=5;
vyraz;
eval(funkce);
funkce(x);
x:='x'; #opět z x uděláme proměnnou x (viz dále)
Při prvním čtení lze vynechat
Některé procedury pracují s výrazy i s funkcemi, přesto je nutné je rozlišovat, správné jsou např. zápisy
> plot(vyraz, x=0..4); # první argument je výraz
plot(funkce, 0..4); # první argument je funkce
plot(funkce(x), x=0..4); # první argument je výraz
plot(funkce(t), t=0..4); # první argument je výraz
... nesprávné je
plot(vyraz(x), x=0..4); # (`vyraz` je výraz v proměnné x, x je "argument")
> plot(vyraz, t=0..4); # ("vyraz" je výraz v proměnné x, nikoli t)
Plotting error, empty plot
plot(funkce(x), 0..4); # (`funkce(x)` je výraz, nikoli funkce)
plot(funkce, x=0..4); # (`funkce` je funkce, nikoli výraz)
plot(funkce(x), t=0..4); # (`funkce(x)` je výraz v proměnné x, nikoli t)
Případně si připomeňte, jak je výraz a funkce definován.
Při prvním čtení lze vynechat
Z funkce vytvoříme výraz uvedením parametrů:
> f(a,b+c);
Z výrazu vytvoříme funkci pomocí funkce `unapply`:
> vyraz := x^2 * sin(x);
> h := unapply(vyraz, x);
> h(2);