Wolfram Mathematica
Mgr. Jindřich Soukup
2. 7. 2012
−−−−−−−−Mathematica −− −− −− −− −− Tento soubor má sloužit jako první seznámení s programem Mathematica. Většina věcí je pouze přeložená z Help → Tutorial ... . V souboru je text a několik příkladů, co Mathematica umí a jak to zapsat. Jednotlivé výpočty jsou v závorkách Hmodré okraje rámečků na pravé straně této stránkyL. Příkaz se nejdříve zadá celý, příkaz k jeho vypočítání je Shift + Enter. Výpočty jsou číslovány Hčísla vstupu a výstupu se zobrazují před daným řádkemL. Na jejich výsledky se může odkazovat pomocí % Hposlední výsledekL, %% HpředposledníL, %5 Hvýsledek číslo 5L. Pokud budete soubor pouze číst, v pořádku, pokud si ale budete zkoušet měnit příklady a zadávat si jiná čísla a jiné příklady, dejte prosím pozor na příklady, kde je jako argument % číslo, mohly by pak odkazovat na jiný výsledek, než jsem měl původně v plánu.
Poslední věc, než se půstíme do příkladů ... nejlepší způsob, jak se naučit M je listovat si v Helpu a hledat si sám, jak se co dělá. M má výborně zpracovaný Help a skoro u každé funkce je i vzorový příklad, jak se daná funkce používá.
All built-in functions start with a capital letter.
Abs@−22D
Use [ ] to enclose function arguments.
Mod@7, 3D
Use {} to enclose list elements.
81, 2, 3<
Use () to indicate grouping of terms.
a ê Hb cL
expr/.x Æ y means “in expr replace x by y”.
p ^ 2 ê. p → 2
Use = to assign a value to a variable.
y = 3.8
Use == to express equality.
Solve@x ^ 2 3, xD
Use := to define a function.
f@x_D := x ^ 2
Use x_ to indicate an arbitrary expression named x.
f@x_D := x ^ 2
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Mathematica může sloužit jako normální kalkulačka : 5+8 13 264 ê 4 66 Na rozdíl od kalkulačky však nejste omezeni počtem míst : 2 ^ 200 1 606 938 044 258 990 275 541 962 092 341 162 602 522 202 993 782 792 835 301 376 Pro přibližný výsledek stačí za 2 doplnit desetinou tečku :
2
prednaska_uvod.nb
2. ^ 200 1.60694 × 1060 S výsledkem můžeme dále pracovat pomocí odkazu % Sqrt@%3D 1 267 650 600 228 229 401 496 703 205 376 Sqrt@%2D 66 Zde vidíme další výhodu, kterou Mathematica má. Pokud jí to výslovně nepřikážeme, tak nezaokrouhluje. Místo aby vypsala přibližnou hodnotu 66 , výpíše hodnotu přesnou. Nedochází pak k chybám v důsledku zaokrouhlování. V posledním případě jsme se také seznámili se zápisem funkcí v Mathematice. Funkce se píší s velkým prvním písmenem, argumenty jsou v hranaté závorce. Funkce můžeme navzájem řetězit, jako např. zde : Sqrt@Sin@3DD Sin@3D Pokud chceme přbližnou hodnotu, stačí použí N@D : N@Sqrt@Sin@3DD, 10D 0.3756594309 Číslo za čárkou nám ukazuje, na kolik destinných míst se má počítat. Syntaxe je N@výraz, desetinných místD, jak se můžeme přesvědčit pomocí nápovědy : ?N N@exprD gives the numerical value of expr. N@expr, nD attempts to give a result with n−digit precision. More… −−−−−−−−−−−−−−−−−−−−−−−−−−− Syntaxi je důležité dodržovat, při záměně závorek můžete dostat úplně jiný výraz, než jste chtěli : Sin@Pi ê 4D ^ 3 + Sin ^ 3@Pi ê 4D 1
π
+ Sin 2
3A E 4
2
−−−−−−−−−−−−−−−−−−−−−−−−−− Konstanty, jako je Eulerovo nebo Ludolfovo číslo píšeme písemně jako Pi resp. E. Nikdy tedy nepoužívejte za proměnnou velké E. −−−−−−−−−−−−−−−−−−−−−−−−−−− M umí také pracovat se vzorci a výrazy, upravovat je a zjednodušovat, či je naopak roznásobovat : Expand@Ha b − c dL ^ 2 + Ha d + b cL ^ 2D a2 b2 + b2 c2 + a2 d2 + c2 d2
prednaska_uvod.nb
Factor@%D Ia2 + c2 M Ib2 + d2 M Simplify@Cos@xD ^ 4 − Sin@xD ^ 4D Cos@2 xD FullSimplify@Gamma@zD Gamma@1 − zDD π Csc@π zD −−−−−−−−−−−−−−−−−−−−−−−−−−− Další zajímaostí v M jsou takzvané "listy". Nahrazují zde vektory, matice ... List je pole čísel, uzavírá se do složených závorek. Složené závorky se vyskytují vždy, když používáme více argumentů nebo hodnot na jednom místě. Matici 5 x3 můžeme tedy zapsat jako : 885, 3, 4, 2, 0<, 89, 4, 0, 0, 1<, 84, 5, 6, 8, 7<< 885, 3, 4, 2, 0<, 89, 4, 0, 0, 1<, 84, 5, 6, 8, 7<< Složené závorky ovšem můžou znamenat jen několik argumentů, hodnot : Sin@Pi ê 82, 3, 4, 5, 6, 7
3
1
2
1
1
2
2
,
, 2
J5 −
5 N ,
1
π , SinB F> 2 7
Matici můžeme vytvářet automaticky podle pravidel, které zadáme : Table@2 ^ x, 8x, 2, 10
3
4
prednaska_uvod.nb
Part@mx, 2, 5D 2 x5 Musíme si ale dát pozor, data zadaná do proměnné v proměnné zůstávají až do vypnutí M nebo jejich vynulování a při každém použití názvu proměnné se do výpočtu automaticky dosadí její číselná hodnota. Nulování proměnných se provádí příkazem Clear@proměnná1, proměnná2, ...D. Naopak pokud do proměnné načtete nějaká data, s kterými budete pracovat, musíte je po vypnutí a znovuzapnutí M znova načíst.
M. rozlišuje velká a malá písmenka, pro ni mm není to samé jako Mm nebo MM či mM. Jako jméno proměnné můžete zadat téměř libovolný řetězec znaků. Snad jediným omezením je číslice na začátku. Zatímco m2 uzná M jako název proměnné, 2 m bere jako 2 ∗ m. Nedoporučuje se také zadávat jména proměnných s velkými prvními písmeny, tak jsou obvykle pojmenovávány zabudované funkce M a mohlo by to být bráno jako volání dané funkce. −−−−−−−−−−−−−−−−−−−−−−−−−−− Další výhoda M jsou grafy : Plot@Sin@Exp@xDD, 8x, 0, 4
Graphics ? Plot Plot@f, 8x, xmin, xmax
prednaska_uvod.nb
Plot3D@Cos@xD Sin@yD, 8x, 0, 2 Pi<, 8y, 0, 2 Pi
1 0.5 6
0 -0.5 -1 0
4
2
2 4 6
0
SurfaceGraphics −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Další věc, co M umí je derivovat a integrovat : Integrate@1 ê Hx ^ 4 − a ^ 4L, xD 2 ArcTanB F − Log@a − xD + Log@a + xD x a
− 4 a3 Můžeme též použít paletu na symbolické vkládání a vypisování funkcí si zjednodušit a zpřehlednit : ‡
1 Ix4 − a4 M
x
2 ArcTanB F − Log@a − xD + Log@a + xD x a
− 4 a3 K derivování stačí použít D@8výraz<, 8podle čeho derivujeme
1
+ a−x
2
+ a+x
a 1+
x2 a2
− 4 a3 Simplify@%D 1 − a4
+ x4
−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− x → 3; ê. − působení na výraz před lomítkem −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− Řešení rovnic Hrovnost se v M. píše jako "==", jednoduché "=" slouží k přiřazování hodnot do proměnnéL :
5
6
prednaska_uvod.nb
Solve@x ^ 2 + x a, xD ::x →
1 2
J− 1 −
1 + 4 a N>, :x →
1 2
J− 1 +
1 + 4 a N>>
Solve@8x ^ 2 − k ^ 2 0, y ^ 2 x ^ 2<, 8x, y
1 2
−b I− a + 2 b M>>
−−−−−−−−−−−− Pokud M neumí najít přesné řešení pomocí Solve, můžete použít funkce NSolve a FindRoot. Na počítání diferenciálních rovnic slouží funkce DSolve a NDSolve HN jako numerické řešení, D jako diferenciálníL
Někdy dopíšu i komentáře k následujícím věcem, pokud chcete, můžete si to najít v Helpu :
Import a Export dat, obrázků Random Zvuky, Furierova transformace add ones, packages Jakékoli připomínky, rady a stížnosti mi můžete posílat na jindra @ matfyz.cz Jindra Soukup