Stručný přehled funkcionality systému Mathematica

Elementární výrazy

Mathematica je určena k symbolické manipulaci s výrazy. Proto má předdefinovanou velkou kálu standardních matematických operací a funkcí. Vedle toho si uivatel můe definovat vlastní objekty.

Elementární výrazy mohou být vytvořeny mimo jiné pomocí následujících operací a funkcí:
◆ Aritmetické operace
◆ Logické operece a relace
◆ Elementární funkce
◆ Speciální funkce
◆ Limity, řady, součiny, derivace, integrály

Aritmetické operace

Operace +, -, *, /, ^, ... jak v reálném, tak komplexním oboru.

1 + 2 (y^2)  + (1/x)

Abs[a + I b]

Logické operace a relace

Logické spojky a kvantifikátory ∧,∨, =>, ⇔, ¬, ∀, ∃; běné relace ==, ≠, <, >, ∈, ....

(Subscript[∀ , ϵ])(Subscript[∃ , δ]) 
        (Subscript[∀ , x])(
            Abs[x - z] < δ \[Implies] Abs[f[x] - f[z]] < ϵ)

Elementární funkce

(Sqrt[x]), Exp, Log, Sin, ..., ArcSin, ...

((-b  ± (Sqrt[(b^2) - 4 a c]))/(2 a))

((Exp[x]  +  Exp[-x])/2)

Speciální funkce

Orthogonální polynomy, Γ a spol., ζ a spol., integrální trigonometrické funkce., chybové funkce, Besselovy funkce, Legandrovy funkce, hypergeometrické funkce, eliptické integrály, ....

Gamma[2  z] (BesselJ[1, z] +  I BesselY[1, z])

Uivatel té můe zavést libovolnou novou funkci. Dokud vak nespecifikuje její vlastnosti, funkce zůstává pouze formální.

mojeFce[a, b, c]

Limity, řady, součiny, derivace, integrály

Limit[((f[x + ϵ] - f[x])/ϵ), ϵ -> 0]

f'[x]

∫x f[x] \[DifferentialD]x

Seznamy, mnoiny, vektory, matice

Seznam je uspořádaná poslopnost objektů.

{1, 2, a + b, f[(x^2)]}

Seznamy se té pouívají pro reprezentaci mnoin. V tomto případě je nutno dát pozor na opakování prvků.

{a, b} ⋃ {d, c, b}

{a, b} ⋂ {d, c, b}

Seznamy a vnořené seznamy se pouívají pro reprezentaci vektorů a matic. 
Pro tyto účely lze zvolit jinou grafickou reprezentaci jak pro vstup, tak pro výstup..

{a1, a2} // MatrixForm

(({{m11, m12}, {m21, m22}}))

% // MatrixForm

Znak %  je odkaz na předchozí výraz. Formátování pomocí MatrixForm nemá vliv na vnitřní reprezantaci výrazu.

Úpravy výrazů

Prozatím jsme pouze demonstrovali zápis výrazů. Výrazy vak lze samozřejmě i upravovat a vyčíslovat.

Práce v Mathematice spočívá v opakování následujících kroků:
◻ zadání výrazu
◻ odeslání výrazu k vyčíslení
◻ obdrení výsledku
Zadaný a odeslaný výraz se zobrazí s označením In[číslo]:= a vypočtený výsledek s označením Out[číslo]=. Na výsledek se můeme v dalím odvolávat pomocí zápisu %číslo nebo pomocí %, %% odkazujících na poslední resp. předposlední výraz.

Předdefinovaná pravidla pro vyčíslování výrazů zahrnují:
◆ Aritmetické a numerické výpočty
◆ Algebraické úpravy
◆ Kalkulus
◆ Rozvoje
◆ Řeení rovnic

Aritmetické a numerické výpočty

Mathematica umoňuje provádět přesné i přibliné numerické výpočty.

(2^100)  +  40!

%  //  N

(2/3) + (3/4)

%  //  N

N[π, 200]

Zápis výraz // Funkce je zcela ekvivalentní zápisu Funkce[výraz].

Algebraické úpravy

Mathematica automaticky provádí triviální úpravy vyuívající vlastností sčítání, násobení a mocnin.

x  +  2 x  +  y (y^2)  +  x y x  +  (((3 (z^a)))^2)

Neprovádí vak automaticky sloitějí úpravy s nečíselnými výrazy.

x  +  a x  +  (((x y))^a)   +  ((((z^a)))^b)

K sloitějí algebraické manipulaci slouí řada speciálních operací:

({{Simplify, \(pokusí\ se\ nalézt\ 
                  nejjednoduí\ tvar\ výrazu\)}, {FullSimplify, silnějí, ale časově náročnějí verze Simplify}, {Expand, roznásobí součiny a mocniny}, {ExpandAll, \(aplikuje\ vude\ \)Expand}, {Factor, pokusí se o faktorizaci}, {Together, uvedení na společného jmenovatele
                  }, {Apart, rozklad na členy s jednoduchým 
                  jmenovatelem}, {Cancel, \(zkrácení\ členů\ v\ 
                  čitateli\ a\ jmenovateli\)}, {Collect, seskupení podle mocnin}, {FactorTerms, \(vytknutí\ specifikovaných\ 
                  členů\)}, {TrigExpand, \(rozklad\ trigonometrických\ výrazů\ na
                  \ součty\ členů\)}, {TrigFactor, \(vyfaktorování\ trigonometrických\ 
                  výrazů\ na\ součiny\ 
                  členů\)}, {TrigReduce, \(zjednoduení\ pomocí\ 
                  vzorečků\ pro\ funkce\ násobků\ 
                  úhlů\)}, {TrigToExp, \(převedení\ trigonometrických\ 
                  funkcí\ na\ exponenciálu\)}, {ExpToTrig, \(převedení\ exponeciál\ na\ 
                  trigonometrické\ funkce\)}, {ComplexExpand, \(rozklad\ na\ \ trigonometrické\ funkce\ 
                  reálných\ proměnných\)}, {PowerExpand, \(expanze\ mocnin\ součinů, \ 
                \(atd . \)\)}, {LogicalExpand, expanze logických operací}})

Příklady

Expand roznásobí výraz a Factor se výraz pokusí faktorizovat:

Expand[(((x + 2))^(2 )) (x - y)]

Factor[%]

Simplify zkouí velkou kálu úprav a vrátí nejjednoduí výraz:

\(Simplify[
      1\/\(4\ \((\(-1\) + x)\)\) - 1\/\(4\ \((1 + x)\)\) - 
        Cos[a]\^2\/\(2\ \((1 + x\^2)\)\) - 
        Sin[a]\^2\/\(2\ \((1 + I\ x)\) \((1 - I\ x)\)\)]\)

FullSimplify pouívá jetě větí třídu úprav, je vak časově náročnějí.

Simplify[Log[x - (x^2)] - Log[x]]

FullSimplify[Log[x - (x^2)] - Log[x]]

FullSimplify zná mnohé vlastnosti speciálních funkcí:

FullSimplify[BesselJ[ν, I x]/BesselI[ν, x]]

FullSimplify[ChebyshevU[n, x] (Sqrt[1 - (x^2)])]

Kalkulus

Derivace

({{D[f, x], parciální derivace}, {D[f, x, y], \(parciální\ derivace\ podle\ několika\ 
                  proměnných\)}, {Dt[f, x], totální derivace podle x}, {Dt[f], totální diferenciál}, {f', formální operátor derivace}})

D vypočte parciální derivace podle udaných proměnných:

D[Cos[x y], x, y]

U parciální derivace D se symboly povaují za nezávislé zatímco u totální derivace Dt za závislé:

D[Cos[x y], x]

Dt[Cos[x y], x]

Bez udání proměnné, podle které se derivuje, Dt spočte totální diferenciál:

Dt[Cos[x y]]

f' spočte formální derivaci funkce f:

Cos'[x y]

Pokud Mathematica nezná pravidla pro derivaci funkce, vyjádří ji pomocí formální derivace:

D[f[x], x]

Integrování

∫(1/(Sqrt[a + b x  + c (x^2)])) \[DifferentialD]x

(∫_0^π)(Sqrt[ 1 - (a^2) Cos[x]]) 
        \[DifferentialD]x

FullSimplify[%]

Limity, řady, součiny

Mathematica umí nalézt limity posloupností i funkcí.

Limit[(((1 + (1/n)))^n), n -> ∞]

Při výpočtu limity obsahující neznámé funkce lze poskytnout informaci, e se jedná o funkce analytické.

Limit[((f[x + ϵ] - f[x])/ϵ), ϵ -> 0, 
      Analytic -> True]

Operátor sumy umoňuje sčítat konečné i nekonečné řady.

(∑_(n = 1)^5)(((a + n))^2)

(∑_(n = 1)^∞) (1/(n^2))

Obdobně lze spočíst konečné i nekonečné součiny.

(∏_(n = 1)^∞)(1 + (1/(n^2)))

Rozvoje

Series[...] a O[x]

Funkce Series[f, {x, z, n}] provede rozvoj výrazu f v proměnné x kolem z do n-tého řádu.

Series[f[x], {x, 1, 3}]

Řád rozvoje je vyznačen zbytkem O[x]^n a rozvoje do daného řádu lze dosáhnot té přičtením poadovaného zbytku k výrazu.

f[g[x]]  +  O[x]^2

Rozvoje mohou obsahovat póly, ne vak podstané singularity.

\(Series[Cos[x]\^2\/x, {x, 0, 3}]\)

Series[Exp[1/x], {x, 0, 2}]

Operace s rozvoji

S řadami můeme provádět běné matematické operace. Výsledek se vdy spočte do přísluného řádu.

Exp[x] + O[x]^4

\(%\^2\)

Log[%]

Skládání a invertování rozvojů

Sloení rozvojů se provádí pomocí ComposeSeries.

Series[Exp[x], {x, 0, 5}]

Series[BesselJ[2, x], {x, 0, 5}]

ComposeSeries[%%, %]

Exp[BesselJ[2, x]] + O[x]^7

Pro funkci danou rozvojem můeme nalézt rozvoj inverzní funkce.

x Exp[x]  +  O[x]^5

InverseSeries[%, y]

ComposeSeries[%%, %]

Znaky %  a %%  odkazují na poslední a předposlední výrazy.

Převedení do normálního tvaru

Rozvoj je reprezentován speciálním způsobem zajiujícím konzistenci vech operací do daného řádu. Pomocí funkce Normal ho můeme převést na obyčejný polynom. Normal vpodstatě "zahazuje" zbytek O[x]^n.

Sin[x]/x + O[x]^7

Normal[%]

Řeení rovnic

K řeení rovnic slouí několik příkazů: 
({{Solve[rov,x], Vyřeí rovnici vzhled k neznáme x.}, {Solve[{rov,...},{x,  ...}], Vyřeí soustavu rovnic vzhled k neznámým x, ...}, {Eliminate[{rov,...},{x,  ...}], Eliminuje proměnné x,  ...  z rovnic . }, {Reduce[{rov,...},{x,  ...}], \(Vrátí\ zjednoduený\ 
                    systém\ rovnic\ včetně\ vech\ 
                    podmínek\ \(řeitelnosti . \)\)}, {DSolve[rov,f[x],x], Řeí diferenciální rovnici pro f s nezávislou proměnnou x.}, {DSolve[{rov,...},f[x],x], \(Řeí\ soustavu\ 
                    diferenciální\ rovnici\ či\ 
	
                    diferenciální\ rovnici\ s\ 
                    počátečními\ 
                    \(podmínkami . \)\)}, {LinearSolve[matice,vektor], \(Řeí\ soustavu\ lineárních
                    \ \(rovnic . \)\)}, {NSolve[rov,x], \(Nalezne\ numerickou\ aproximaci\ k\ 
                    řeením\ polynomické\ 
                    \(rovnice . \)\)}})

Rovnice se zadává ve formě levá strana == pravá strana.

Solve

Solve[a (x^3) + b (x^2) + c x + d == 0, x] // Short[#, 4]&

Funkce Short[výraz,n] způsobí zkrácení výpisu výsledku na n řádků. Vnitřeně se uchovává samozřejmě celý výsledek.

Solve[-ArcCos[3 x] + 2 ArcSin[x] == 0, x]

Solve[Log[(Sqrt[x])] == (Sqrt[Log])[x], x]

DSolve

DSolve[
      (f^″)[z]  + 
          ( β  -  ((4  (ν^2) - 1)/(4  (z^2)))) f[z] 
        == 0, f[z], z]

DSolve[{
		y[t]==-x'[t],x[t]==-y'[t], 
		x[0] == 1,y[0] == 0},
	{x[t], y[t]},t]

U sloitých rovnic si Mathematica pomáhá pomocí formálního uití Solve či ponechá výsledek nevyřeen.

DSolve[(f^″)[z] + Log[f[z]] == 0, f[z], z]

LinearSolve

LinearSolve[(({{1, 2}, {2, 2}})),{5, 6}]//MatrixForm

(({{1, 2}, {2, 2}})).{1, 2}//MatrixForm

Grafika

Mathematica umoňuje bohatý grafický výstup. Níe jsou uvedeny jen elementárné příklady grafických funkcí. Prezentace grafů lze dále ovlivňovat irokou kálou atributů.

◆ Dvoudimenzionální grafy
◆ Třídimenzionální grafy
◆ Vrstevnicové a hustotní grafy

Vedle statických grafů Mathematica umoňuje té grafickou animaci a práci se zvukem.

Dvoudimenzionální grafy

K vykreslení grafů funkcí slouí příkazy Plot, ParamatricPlot a ListPlot.

Plot[Gamma[z], {z, -3.5, 5.5}];

\(\(ParametricPlot[{\ Sinh[ρ]\ Cos[2  π\ ρ], \ 
        Sinh[ρ]\ \ Sin[2  π\ ρ]}, {ρ, 0, 4}, 
	
      AspectRatio -> 1, PlotRange -> All]; \)\)

Třídimenzionální grafy

K vykreslení grafů funkcí dvou proměnných či prostorových útvarů slouí příkazy Plot3D, ParamatricPlot3D a ListPlot3D.

Plot3D[Re[Gamma[x + I y]],{x, -3.5, 5.5},{y, -5, 5},
	PlotPoints -> {90, 100},PlotRange -> {-6, 8},ClipFill->None];

\(\(ParametricPlot3D[{

        		{\((3 + Cos[ψ])\) Cos[φ], 
          \((3 + Cos[ψ])\) Sin[φ] - 1, Sin[ψ]}, 

        		{Sin[ψ], \((3 + Cos[ψ])\) Cos[φ] + 1, 
          \((3 + Cos[ψ])\) Sin[φ]}
		}, {φ, 
        \(-π\), π}, {ψ, \(-π\), π}, 
	
      PlotPoints -> {48, 16}, Boxed -> False, Axes -> False]; \)\)

Vrstevnicové a hustotní grafy

Funkce dvou proměnných můeme té vykreslit pomocí CountourPlot a DensityPlot.

Volba DisplayFunction->Identity zamezuje vykreslení grafu. Výsledek grafické funkce vak můeme uloit do proměnné a vykreslit později pomocí Show.

vrstevnice = ContourPlot[Re[Gamma[x + I y]],{x, -3.5, 5.5},{y, -5, 5},
	PlotPoints -> {80, 100},ContourShading -> False,DisplayFunction -> Identity]

hustota =DensityPlot[Re[Gamma[x + I y]],{x, -3.5, 5.5},{y, -5, 5},
	PlotPoints -> {80, 100},Mesh -> False,DisplayFunction -> Identity]

Show[GraphicsArray[{vrstevnice, hustota}]];

Vlastní definice a substituce

S kadým symbolem lze asociovat určité definice. Tyto definice lze opět smazat pomocí funkce ClearAll. Seznam definic asociovaných se symbolem s lze vypsat příkazem Definition[s].

Definice můeme rozdělit na několik typů:
◆ Okamité a pozdrené přiřazení hodnoty
◆ Definice funkcí
◆ Definice vlastností

Ve výrazech můeme té provádět substituce podle předem definovaných pravidel:
◆ Substituce ve výrazech
◆ Pravidla substituce

Okamité a pozdrené přiřazení hodnoty

Operace z = výraz přiřadí symbolu z hodnotu okamitě vypočteného výrazu:

z = 1 + 2

Operace x := výraz přiřadí symbolu x nevypočtený výraz — výpočet proběhne a při vyčíslení symbolu x:

\(x := \ 1\  + \ z; 
y\  = \ 1 + z; \)

{x, y}

x nese odkaz na výraz 1+z, y pouze na výsledek 4.

z = 10

{x, y}

ClearAll[x, y, z]

Definice funkce

Funkce se definuje podobně jako přiřazení hodnoty s tím rozdílem, e levá strana obsahuje vzor popisující argumenty.

f[x_] :=  (x^2)

{f[1], f[2], f[3]}

ClearAll[f]

Vzory

Existuje bohatá syntax pro zadávání vzorů, zahrnující monost odkazů na několikanásobné argumenty či argumenty speciálního typu. Stručný přehled uvádí následující tabulka.

({{_, libovolný výraz}, {v_, libovolný výraz; vzor pojmenován v}, {_h, libovolný výraz se hlavičkou h}, {vzor ? test, vzor podmíněný splněním podmínky test}, {__  resp .   ___, \(sekvence\ jednoho\ 
                  \((resp . \ ádného)\)\ a\ více\ 
                  výrazů\)}, {vzor ..   resp .   vzor..., vzor opakovaný jednou (resp .  nula) a více krát}, {(Subscript[vzor, 1]) | (Subscript[vzor, 2]) | ..., vzor  skládající  se  z  
                  alternativ}})

Příklady

Funkce můe být dána více definičními vztahy vztahujícími se na různé případy.

\(identicke[\((n_)\) ... ] := True; 
identicke[_, __] := False; \)

{identicke[3, 4], identicke[2, 2, 2, 3], identicke[2, 2, 2], 
      identicke[2]}

Definice můe být té podmíněná splněním určité podmínky:

\(θ[x_]\  := \ 1\  /; \ x\  > \ 0; 

    θ[x_]\  := \ 0\  /; \ x\  ≤ \ 0; \)

{θ[2], θ[-π], θ[z]}

Definice můou být rekurzívní, musí se ale oetřit ukončení rekurze.

\(fib[n_] := fib[n - 1] + fib[n - 2]; 
fib[0] := 0; \ fib[1] := 1; \)

fib[20]

Definice vlastností

Levá strana definice můe být sloitějí ne jen funkce jednoduchého argumentu. Tak lze definovat vlastnosti funkcí.
Jako příklad si uvédeme definici operátoru derivace.

der[n_]  :=  0  /;  NumericQ[n]\(der[f_ + g_] := \ der[f] + der[g]; 

    der[f_\ g_]\  := \ der[f]\ g\  + \ f\ der[g]; 

    der[f_\^n_?NumericQ]\  := \ n\ f\^\((n - 1)\)\ der[f]; 

    der[f_∘g_]\  := \ \((der[f]\ ∘g)\)\ der[g]; 
    \)

Funkce NumericQ[výraz] je pravdivá, pokud je výraz číselné povahy.

der[ f g  +  (f^3)  +  (((h∘f))^2)]

Substituce ve výrazech

Často potřebujeme provést substituci ve výrazu či aplikovat na obdrený výraz určitý vzorec. K tomu slouí operace substituce a definice pravidel substituce.

Jednorázová substituce

Substituce se provádí pomocí operace výraz /. pravidlo.

a (x^2) + b x  + c

%  /.  x  ->  ((-b + (Sqrt[(b^2) - 4 a c]))/(2 a))

Simplify[%]

Podvýraz se specifikuje pomocí vzorů, stejně jako v případě definice funkce.

Opakovaná substituce

Substituce se můe provést buď jednou (na vech místech výrazu) — pomocí operace /. — nebo se můe provádět opakovaně a do okamiku, kdy se výsledek nemění — pomocí operace //..

výraz =  
      (Cos[ϕ]^2 + Sin[ϕ]^2) Cos[ψ]^2 + 
        Sin[ψ]^2

výraz /.  Cos[x_]^2 + Sin[x_]^2 -> 1

výraz //.  Cos[x_]^2 + Sin[x_]^2 -> 1

Pravidla substituce

Definice pravidel substituce

Jak jsme ji viděli, pravidlo záměny má tvar podvýraz -> nový výraz.
Pravidla pro substituci je moné definovat dopředu a uloit do seznamu pravidel:

\(trigpravidla\  = 
      \ {
		Cos[x_]\^2 + Sin[x_]\^2 -> 1, 
		
        Cos[2  x_] -> \ Cos[x]\^2 - Sin[x]\^2, 
		
        Sin[2  x_] -> 2  Sin[x] Cos[x]\ 
	}\)

Cos[2  ϕ] + Sin[2  ϕ] Tan[ϕ] //.  trigpravidla

Pozdrené definice pravidel

Někdy je potřeba pozdret výpočet pravé strany pravidla a do okamiku aplikace pravidla. Příkladem jsou "upravovací" funkce, které by bez pozdrení vedly k triviálnímu výsledku. Například:

\(pravidlaNegace\  = 
      \ {
		¬ ∃ \_x_ v_ -> \ 
          ∀ \_x LogicalExpand[¬ v], 
		
        ¬ ∀ \_x_ v_ -> \ ∃ \_x LogicalExpand[¬ v]

        	}\)

To není, co jsme asi chtěli. Musíme pouít pozdrenou definici pravidla pouívající operátor :> místo ->.

\(pravidlaNegace\  = 
      \ {
		¬ ∃ \_x_ v_ :> \ 
          ∀ \_x LogicalExpand[¬ v], 
		
        ¬ ∀ \_x_ v_ :> \ 
          ∃ \_x LogicalExpand[¬ v]
	}\)

Takto definovaná pravidla můeme nyní pouít pro úpravu logických výroků

(Subscript[∀ , ϵ])(Subscript[∃ , δ]) 
        (Subscript[∀ , x])(
            Abs[x - z] < δ \[Implies] Abs[f[x] - f[z]] < ϵ)

¬ %  //.  pravidlaNegace