Definice funkce f jedné proměnné a její použití.
> | f:=x->x^2; |
Vyčíslení gunkce v bodě.
> | f(1); |
> | f(2); |
Z funkce vytvoříme výraz uvedením parametrů.
> | f(z); |
Z výrazu vytvoříme funkci pomocí funkce unapply .
> | y; #výraz |
> | funkce:=unapply(y,x); #funkce jednoho parametru |
Samozřejmě lze definovat funkci více proměnných, v nnásledujícím příkladě dvou.
> | modul:=(x,y)->sqrt(x^2+y^2); |
> | modul(3,4); |
Je nutno rozlišovat výraz a funkci.
Z funkce se při výstupu vypíše jen jméno, její definici dostaneme pomocí eval .
> | y; |
> | funkce; |
> | eval(funkce); |
Do funkce jednoduše dosadíme, do výrazu to takto nejde (tam bychom museli použít nař. zmíněný příkaz subs ).
> | funkce(Pi/2); |
> | y(Pi/2); |
Funkci lze definovat jako proceduru.
> | g:=proc(x) x^3 end proc; |
> | g(5); |
To je výhodné zejména pro složitější funkce.
> | h:=proc(x) |
> | if x>0 then |
> | x^2; |
> | else |
> | 0; |
> | end if; |
> | end proc; |
> | h(5); |
> | h(-5); |
Pro další usnadnění práce se hodí příkazy applyop (aplikování funkce na část výrazu).
> | eval(f); |
> | v; |
> | applyop(f,2,v); |
Na závěr ukažme ještě jednu možnost definice funkce. Tou bude druhá odmocnina, kde však funkce bude vracet desetinné číslo.
> | evalf(sqrt(2)); |
Vytvoření nové funkce pro odmocninu
> | Sqrt:=evalf@sqrt; |
> | Sqrt(2); |
Použití funkce ukažme ještě na následujícím příkladu, kdy použijeme příkaz map - aplikování funkce postupně na všechny části.
Vytvoření seznamu číslem
> | data:=[1,2,3,4,5]; |
Chceme spočítat odmocninu postupně všech členů proměnné data , ale toto nefunguje.
> | Sqrt(data); |
Error, (in evalapply) invalid input: sqrt expects its 1st argument, x, to be of type algebraic, but received [1, 2, 3, 4, 5]
Musíme použít příkaz map .
> | map(Sqrt,data); |
Použití výše definované funkce f (druké mocniny) na seznam.
> | eval(f); |
> | map(f,data); |