Funkcie a procedúry systému Mathematica
Definícia a pravidlá pre prácu s užívateľskými funkciami a organizácia procedúr
Všetky funkcie systému Mathematica majú názov, argumenty a výraz alebo procedúru pre výpočet hodnoty. Analogicky môže užívateľ definovať svoje vlastné funkcie rešpektujúc pravidlá systému. Odporúča sa, aby sa názov užívateľom definovanej funkcie začínal malým písmenom latinskej abecedy, na rozdiel od názvov zabudovaných funkcií systému. Za názvom funkcie nasleduje definícia premenných v hranatých zátvorkách, meno každej premennej končí symbolom _ a premenné sú oddelené čiarkou. Potom nasleduje symbol   :=  , a výraz definujúci funkčný predpis s premennými zapísanými bez symbolu _ .
Použitie takto definovaných funkcií je rovnaké, ako použitie všetkých štandardných funkcií systému Mathematica.

Príklad 1. Definícia funkcie jednej premennej, výpočet hodnoty funkcie. Funkcie sú rekurzívne.

f[x_] := x^3/(1 + x) + Cos[x] RowBox[{f, [, 0., ]}] RowBox[{a, =, RowBox[{RowBox[{5, RowBox[{f, [, 3.5, ]}]}], -, RowBox[{f, [, RowBox[{f, [, 1.2, ]}], ]}]}]}]

1.

41.8421

Príklad 2. Ak chceme zistiť, aký je exaktný tvar funkcie, ktorý systém uchoval v pamäti, použijeme príkaz '? názov funkcie alebo premennej' . S funkciami môžeme vykonávať všetky dostupné operácie.

?f
a=.
f[a+1]

Global`f

f[x_] := x^3/(1 + x) + Cos[x]

(1 + a)^3/(2 + a) + Cos[1 + a]

Príklad 3. Rozklad výrazu z príkladu 2, uvedenie na spoločného menovateľa, zjednodušenie výrazu.

Expand[f[a + 1]] Factor[%] Simplify[%]

1/(2 + a) + (3 a)/(2 + a) + (3 a^2)/(2 + a) + a^3/(2 + a) + Cos[1 + a]

(1 + 3 a + 3 a^2 + a^3 + 2 Cos[1 + a] + a Cos[1 + a])/(2 + a)

((1 + a)^3 + (2 + a) Cos[1 + a])/(2 + a)

Príklad 4. Graf funkcie z príkladu 1 na intervale [-2, 2]. Graf tej istej funkcie, pričom hodnoty funkcie f[x] sú obmedzené na interval [0,10], použitím príkazu PlotRange.

g1 = Plot[f[x], {x, -2, 2}] g2 = Plot[f[x], {x, -2, 2}, PlotRange {0, 10}]

[Graphics:HTMLFiles/index_11.gif]

⁃Graphics⁃

[Graphics:HTMLFiles/index_13.gif]

⁃Graphics⁃

Príklad 5. Definícia funkcie dvoch premenných. Hodnoty premenných určujú oblasť, nad ktorou je zobrazený graf funkcie. Zistíme, akú definíciu funkcie systém uložil a zobrazíme jej graf. Funkcia síce nie je definovaná pre y = 0, systém Mathematica však zobrazí jej graf ako nespojitú plochu.

huhu[x_, y_] := (x - y)^3/y ? huhu Plot3D[huhu[x, y], {x, -10, 10}, {y, -1, 1}]

Global`huhu

huhu[x_, y_] := (x - y)^3/y

[Graphics:HTMLFiles/index_17.gif]

⁃SurfaceGraphics⁃

Príklad 6. Môžeme definovať aj výrazy s premennými pomocou už definovaných funkcií v rôznych kombináciách. V príklade je definovaná funkcia ' r ' pomocou výrazu huhu s premennou x, nakreslený je graf funkcie, vypočítaná hodnota funkcie dosadením hodnoty premennej x = 3 a nájdené je riešenie rovnice v tvare r == 0 s neznámou x.

r = 2 * 10^2huhu[x, 2] Plot[r, {x, -10, 10}] RowBox[{%%, /., RowBox[{x, , 3.}]}] Solve[r2, x] %//N

100 (-2 + x)^3

[Graphics:HTMLFiles/index_21.gif]

⁃Graphics⁃

100.

{{x2 + 1/(2^(1/3) 5^(2/3))}, {x2 - (1 -  3^(1/2))/(2 2^(1/3) 5^(2/3))}, {x2 - (1 +  3^(1/2))/(2 2^(1/3) 5^(2/3))}}

RowBox[{{, RowBox[{RowBox[{{, RowBox[{x, , 2.27144}], }}], ,, RowBox[{{, RowBox[{x, &# ...  , RowBox[{RowBox[{1.86428, }], -, RowBox[{0.235075,  , }]}]}], }}]}], }}]

Príklad 7. Zmiešaný zápis definície funkcie z predchádzajúceho príkladu. Vypočítame hodnotu novej funkcie v bode z = 3, t = 6 a nájdeme Taylorov rozvoj po tretí člen.

p1[z_, t_] := (1 - f[z] * huhu[z, t])^2 p1[3, 6] %//N Series[p[x, y], {x, 0, 3}, {y, 0, 3}]

(1 + 9/2 (27/4 + Cos[3]))^2

724.688

(1 + 2 y^2 + O[y]^4) + (-6 y - 6 y^3 + O[y]^4) x + (6 + 14 y^2 + O[y]^4) x^2 + (-2/y - 17 y + 2 y^2 + 6 y^3 + O[y]^4) x^3 + O[x]^4

Príklad 8. Premenné použité vo funkciách v pravej časti definícií sú pre daný operátor lokálnymi premennými a mimo neho nenadobúdajú žiadnu hodnotu. V danom príklade je premenná ' i ' lokálnou premennou operátora definovanej funkcie ss. Výpočet súčtu 1 000 000 členov trvá približne 20 sekúnd, a po tomto čase systém zastaví výpočet.

ss[n_] := Underoverscript[∑, i = 1, arg3] i^2 ss[1000000] i

333333833333500000

i

Príklad 9. Definíciu procedúr vykonáme pomocou operátorov oddelených dvojbodkou - ;, pričom celý výraz vložíme do zátvoriek ( ). Zistíme, ktoré premenné sú globálne, a ktoré sú lokálne, tak, že premenné necháme vypísať. Typ premennej (prirodzené číslo, racionálne, komplexné, atď.) automaticky vedie ku práci nad zodpovedajúcim číselným oborom.

Clear[aa, bb, n, k] pro1[n_, k_] := (aa = ∫_0^k (1 + u)^(1/2) u ; bb = a ... ;    (* local variable *)n    (* local variable *)

 For n=1 and  k=π the integral is = 2/3 (-1 + (1 + π)^(3/2))

 For n=3 and  k= -2 the integral is =  -2/3 - (2 )/3

u

-2/3 - (2 )/3

-2/9 - (2 )/9

n

Príklad 10. Formálna substitúcia umožňuje vykonávať rôzne symbolické výpočty.

Clear[f]
r=f[x]+2f[y]
r /. x→2
r /. {f[x]→p,f[y]→6q}
r/. f[t_] →t^2

f[x] + 2 f[y]

f[2] + 2 f[y]

p + 12 q

x^2 + 2 y^2


Created by Mathematica  (December 21, 2007)