12. Závěrečná všehochuť

Převod výrazu do LATEXu

K sazbě matematických textů se standardně používá LATEX. Chceme-li výsledky výpočtů z Mathematiky přenášet do LATEXu, můžeme pro převod do správné syntaxe použít příkaz TeXForm:

Příklad - převod tabulky do syntaxe LATEXu:

t=Table[i*j,{i,1,10},{j,1,10}]

TableForm[t]

TeXForm[t]

Následující příkaz nejprve vypočte součet řady, poté převede výsledek do LATEXu:

TeXForm[Sum[1/n^2,{n,1,Infinity}]]

HoldForm zabrání vyhodnocení výrazu a převede do LATEXu samotnou sumu:

TeXForm[HoldForm[Sum[1/n^2,{n,1,Infinity}]]]

Příkazy Manipulate a Animate

Manipulate

Manipulate slouží k interaktivnímu vyhodnocování výrazů závisejících na parametrech. Výstupem je grafické rozhraní umožňující měnit hodnoty parametrů a přitom v reálném čase sledovat hodnotu výrazu.

Základní použití - syntaxe stejná jako u Table:

Manipulate[x^2,{x,1,10}](* parametr x nabývá hodnot z intervalu [1, 10] *)

Vyzkoušejte: Kliknutí na spodní tlačítko + ukáže aktuální hodnotu parametru.

Manipulate[x^2,{x,1,10,1}](* parametr x nabývá hodnot z množiny {1,...,10} *)

V prvním argumentu Manipulate může být libovolný výraz.

Manipulate[Expand[(a+b)^n],{n,1,20,1}]

Nejčastěji se Manipulate používá ve spojení s grafickým výstupem.

Příklad: Grafy posloupnosti funkcí (Subscript[f, n])(x)=((n x)/(1+(n^2) (x^2))).

Manipulate[Plot[n*x/(1+n^2x^2),{x,-3,3},PlotRange->{-1,1},PlotStyle->Thick],{n,1,15,1}]

Více parametrů, nastavení počátečních hodnot:

Manipulate[Plot[a*Sin[b*x+c],{x,-4Pi,4Pi},PlotStyle->Thick,PlotRange->{-3,3}],{{a,1},0.25,3},{{b,1},0.5,3},{c,0,2Pi}] (* 3 parametry a, b,c: a má výchozí hodnotu 1, b má výchozí hodnotu 1, c nemá nastavenu výchozí hodnotu - vezme se dolní mez zadaného intervalu *)

Poznámka: Používáme-li Manipulate ve spojení s grafikou, je vhodné pevně nastavit zobrazovaný výřez pomocí PlotRange->{ymin,ymax}, případně  PlotRange->{{xmin,xmax},{ymin,ymax}}. Vyzkoušejte, co se stane, když v předchozím příkladu odstraníte PlotRange a budete měnit hodnotu a.

Přidání popisků k ovládacím prvkům:

Manipulate[Plot[a*Sin[b*x+c],{x,-4Pi,4Pi},PlotRange->{-3,3},PlotStyle->Thick],{{a,1,"amplituda"},0.25,3},{{b,1,"úhlová frekvence"},0.5,3},{{c,0,"fázový posun"},0,2Pi}]

Lze pracovat i s parametry, které nenabývají hodnot z intervalu na reálné ose, ale z libovolného seznamu. 
Příslušná syntaxe je Manipulate[..., {název parametru, seznam}].
Hodnoty takových parametrů se nenastavují sliderem, ale vybírají z rozbalovací nabídky.
Příklad, kdy definičním oborem parametru je seznam barevných schémat:

ColorData["Gradients"]

Manipulate[Plot3D[x*y*(x^2-y^2)/(x^2+y^2),{x,-2,2},{y,-2,2},ColorFunction->scheme],{scheme,ColorData["Gradients"]}]

Parametrům, které nabývají pouze hodnot True a False, přísluší zaškrtávací políčko:

Manipulate[Plot[n*x/(1+n^2x^2),{x,-3,3},PlotRange->{-1,1},PlotStyle->Thick,Axes->osy],{n,1,20,1},{{osy,True,"Zobrazovat osy"},{True,False}}]

Parametry typu Locator se používají ve spojení s 2D grafikou. Jde o body, se kterými lze pohybovat a měnit tak jejich souřadnice.

Manipulate[Graphics[{EdgeForm[{Thick,Black}],Yellow,Polygon[{a,b,c}]},PlotRange->{{-5,5},{-5,5}}],{{a,{3,0}},Locator},{{b,{-2,2}},Locator},{{c,{-3,0}},Locator}](* 3 parametry typu Locator - vrcholy trojúhelníku *)

Doplnění o výpočet obsahu trojúhelníku (absolutní hodnota determinantu je obsah rovnoběžníku, polovina z něj je obsah trojúhelníku):

Manipulate[Graphics[{EdgeForm[{Thick,Black}],Yellow,Polygon[{a,b,c}]},PlotRange->{{-5,5},{-5,5}},Axes->osy,PlotLabel->StringJoin["Obsah trojúhelníku je ",ToString[Abs[Det[{b-a,c-a}]]/2]]],{{a,{3,0}},Locator},{{b,{-2,2}},Locator},{{c,{-3,0}},Locator},{{osy,True,"Zobrazovat osy"},{True,False}}]

Animate

Animate má stejnou syntaxi jako Manipulate, automaticky mění hodnotu parametru.

Cykloida = dráha pevně zvoleného bodu na obvodu kružnice, která se valí po přímce.
Cykloida odpovídající jednotkové kružnici má parametrizaci t↦(t-sin t,1-cos t).

Animate[ParametricPlot[{t-Sin[t],1-Cos[t]},{t,0,tmax},PlotRange->{{-1,8Pi+1},{-1,3}},Epilog->{PointSize[Large],Point[{tmax-Sin[tmax],1-Cos[tmax]}],Circle[{tmax,1},1]}],{tmax,0.01,8Pi}](* zkuste změnit Animate na Manipulate *)

Poznámka: V minulé lekci jsme se setkali s příkazem ListAnimate, který přehrává animaci zadanou ve formě seznamu obrázků. Použití Animate je snazší - místo seznamu stačí zadat výraz závislý na parametru, snímky jsou generovány automaticky. Přístup se seznamem obrázků je ovšem flexibilnější v situaci, kdy chceme animaci exportovat do souboru.

Integrované databáze

Součástí Mathematiky jsou rozsáhlé databáze obsahující údaje z oblasti geografie, astronomie, chemie, meteorologie, finanční matematiky, anatomie a dalších oblastí. První použití každé databáze může být pomalé, neboť se údaje stahují z internetu. Při dalším použití už se pouze kontroluje, zda na serveru nedošlo k aktualizaci údajů.

Ukážeme si některé příklady dostupných databází, další lze najít v dokumentaci.

Databáze CountryData

V databázi CountryData jsou údaje o následujících státech:

CountryData["Countries"]

Pro každý stát je k dispozici mnoho údajů:

CountryData["Czech Republic","Area"]

CountryData["Germany","Population"]

CountryData["United States","CapitalCity"]

CountryData["Czech Republic","GDP"]

CountryData["United States","Flag"]

Kompletní seznam údajů, které jsou k dispozici pro jednotlivé země:

CountryData["Properties"]

CountryData["Czech Republic","ElectricalGridSocketImages"]

CountryData["United States","ElectricalGridSocketImages"]

Databáze CityData

Databáze CityData obsahuje údaje o městech a obcích. K dispozici jsou následující údaje:

CityData["Properties"]

CityData["Praha","Population"]

CityData["Brno","Coordinates"]

CityData["Ostrava","Elevation"]

Je-li na světě více měst/obcí se stejným názvem, zadáme i stát:

CityData[{"Cambridge","United Kingdom"},"Coordinates"]

CityData[{"Cambridge","United States"},"Coordinates"]

Některé další databáze

ChemicalData obsahuje nejrůznější údaje o chemikáliích.

ChemicalData["Properties"]

ChemicalData["Trinitrotoluene","FormulaDisplay"]

ChemicalData["Trinitrotoluene","StructureDiagram"]

ChemicalData["Trinitrotoluene","MoleculePlot"]

WeatherData obsahuje údaje o počasí v současnosti i v minulosti.

WeatherData["Properties"]

WeatherData["Praha", "Temperature"]

teploty=WeatherData["Praha", "Temperature", {2024, 1, 1}]

DateListPlot[teploty]

Max[teploty]

Příklad: Maximální teploty na Nový rok v Praze v letech 1973 až 2024.

od=1973;do=2024;
maxteploty=Table[Max[WeatherData["Praha", "Temperature", {r, 1, 1}]],{r,od,do}]

BarChart[maxteploty,ChartLabels->Map[StringTake[ToString[#],{3,4}]&,Range[od,do]],ColorFunction->"TemperatureMap",ImageSize->Full]

WordData obsahuje údaje o anglických slovech.

WordData["Properties"]

WordData["dog", "Definitions"]

WordData["mathematics", "Hyphenation"]

Spolupráce s Wolfram Alpha

Wolfram Alpha (http://www.wolframalpha.com) je volně dostupný systém založený na Mathematice. Umožňuje zadávat dotazy v přirozeném jazyce bez znalosti syntaxe Mathematiky. Pokud jej neznáte, vyzkoušejte, co dokáže! (Na webu jsou příklady použití.)

Wolfram Alpha lze volat přímo z Mathematiky, např. následujícími způsoby:

WABitmapsSpikeyEqual (==== na začátku řádku) — vstup v přirozeném jazyce, kompletní výstup z Wolfram Alpha

(== na začátku řádku) — vstup v přirozeném jazyce, výstup v syntaxi Mathematiky

(Ctrl+== kdekoliv) — část výrazu zapsaná v přirozeném jazyce, bude převedena do syntaxe Mathematiky

Příklady:

seznam=LinguisticAssistant; ListLinePlot[seznam]

Show[LinguisticAssistant,LinguisticAssistant]

?WolframAlpha

WolframAlpha["20 random integers between -5 and 5"]

WolframAlpha["20 random integers between -5 and 5","MathematicaResult"]

WolframAlpha["20 random integers between -5 and 5","MathematicaParse"]

Některé výpočty (např. krokovaná řešení) ve Wolfram Alpha vyžadují placenou verzi Pro, což lze obejít voláním z Mathematiky:

Pár odkazů na závěr

Mathematica pro pokročilé (0/2 Z) ... lze zapsat v letním semestru (online kurz)

Wolfram Demonstrations Project (http://demonstrations.wolfram.com) ... více než 13 000 ukázek vyrobených pomocí Manipulate

Wolfram Blog (http://blog.wolfram.com) ... informace o novinkách ze světa Mathematiky a příbuzných technologií