Mathematica

APP

Tomáš Novotný
Katedra Elektroenergetiky
novotnt@feld.cvut.cz

Základní vlastnosti

Kernel                     ⟺             FrontEnd

Mathematica není User-Friendly   \[FreakedSmiley] ☹ 😐 ☺

např. LaplaceTransform, FourierTransform, Factorial, Plot, ListPlot, ...

např. Solve, Rule, Sin, Cos, Tan, Integrate, D, DSolve, Plot, Plot3D, N, Sum,Random, Pi, E, ...

např. Solve[ ], Rule[ ], Integrate[ ], N[ ], Sin[ ], Cos[ ],Sqrt[ ], Log[ ],Abs[ ]...

např. {1, 2, 3, ahoj, }

např. (a * b) + (c-1) /d

např.
 ℧ µ ℼ j e ∑ ∫  ∮   ∲  ∯  ∃  ⋃  ⊙ ∨ ≡  ≥  → ↓ ⟺ ↧ Esc  \[MathematicaIcon] \[KernelIcon] ☑
α β γ δ ϵ ε ζ η 𝒜 ℬ ã ö ü ç

Vlastní funkce začínat malým písmenem
Pro menší velikost notebooku při uložení -> Menu Kernel -> Delete All Output
Prohlížeč pro notebooky v Mathematice -> MathReader -> dostupný na www.wolfram.com

Map[
      Head, {Pi, 3, 3.1, 1/2, 3 + I 2, a + b, a*b, 
        a/b}]

FullForm /@ {Pi, 3, 3.1, 1/2, 3 + I 2, a + b, a*b, 
        a/b}

www . wolfram . com

Heat

Help

?Příkaz

např.

?Sqrt

?Plus

?? Solve

Solve[(x^2) + 2  b x + c == 0, x]

Shift-F1 nebo označení příkazu+F1

Solve,Integrate, D, Sin, ...

Mathematica jako kalkulátor

Výpočet se provede odesláním Kernelu (Shift-Enter ⇧|⌤ nebo pravý Enter - numerická klávesnice)

12 + 8

159*365

23^69

23. ^69

5^2

% - použije se poslední výstup (Out[] s nejvyšším číslem)

Sqrt[%]

N[E]

N[E, 25]

{Sqrt[5], Sqrt[5. ]}

{Sin[5], Sin[5. ]}

Levá strana: In[číslo], Out[číslo], pravá strana: Cell (sdružování do cell)

2 + x + a^2 + 3  x + 5 (a^2 + x)

Simplify - zjednoduší (upravý výraz)

Simplify[%]

Expand[{(a - b)^2, (a - b)^3}] // TableForm

Log[E]

Log[b, a]

Sin[x]^2 + Cos[x]^2

Simplify[%]

Mathematica jako kalkulátor

Integrace

Integrate[ArcTan[x], x]

Při použití z palety

∫ArcTan[x] \[DifferentialD]x

Derivace

D[%, x]

Při použití z palety

(∂_x) ArcTan[x]

Mathematica jako kalkulátor

Limita

Limit[ArcTan[x], x -> ∞]

Plot[{ArcTan[x], (π/2)}, {x, -30, 30}, 
        PlotStyle -> {{Thickness[0.01],  
              RGBColor[0, 0, 0]}, {Thickness[0.01], Hue[1]}}, 
        Ticks -> {Automatic, {-(π/2), -(π/4), 
              0, (π/4), (π/2)}}, 
        PlotLabel -> "Funkce Tangens \n\n", 
        AxesLabel -> {{"x"}, {"y=f[x]"}}];

Vše je notebook

nb = 
        NotebookCreate[WindowToolbars -> {EditBar, LinksBar, RulerBar}, 
          WindowMovable -> False, 
          WindowTitle -> "A Pulsating Window", 
          WindowSize -> {640, 640}, Background -> Hue[ .3  .5]];Pause[3];Do[{SetOptions[nb, Background -> Hue[t/10,  .5]],NotebookWrite[nb," Vše je notebook  ",None]},{t, 0. , 4. ,  .1}];Pause[2];Do[
        SetOptions[nb, 
          WindowSize -> 
            N[200 (2.4 + {Sin[(t/10)], Sin[(t/15)]})]], {t, 350}];Pause[2];Do[
        SetOptions[nb, 
          First[Map[If[NumberQ[#], # + Random[Real, {-40, 40}], #] &, 
              Options[nb, WindowMargins], {-1}]]], {100}];Pause[2];NotebookClose[nb];Clear[nb]

Základem je List   { } - vektor

Přímý zápis

{a, b, c}

Zápis pomocí funkce

List[a, b, c]

Skalární součin dvou vektorů

{1, 2, 3}  .  {a, b, c}

Vektorový součin dvou vektorů

{1, 2, 3} {a, b, c}

(({{a, b}, {c, d}}))

Výpočet determinantu

Det[{{a, b, c}, {d, e, f}, {1, 2, 3}}]

MatrixForm - jen způsob zobrazení matice

MatrixForm[{{a, b, c}, {d, e, f}, {1, 2, 3}}]

Násobení matic

(({{a, b}, {c, d}})).(({{a, b}, {c, d}}))//MatrixForm

Násobení matic prvek po prvku

(({{a, b}, {c, d}}))*(({{a, b}, {c, d}}))//MatrixForm

Inverzní matice

Inverse[(({{a, b}, {c, d}}))]//MatrixForm

Pravidla   ->

Funkce

Rule[a, b]

Přímý zápis

a -> b

a -> b

Levé straně se přiřadí pravá strana bez znečištění proměnných "a"  a  "b"

Náhrada    /.

Funkce

ReplaceAll[1 + x, x -> a]

Přímý zápis (Slash-Dot notation)

1 + x /. x -> a

Proměnná x

?x

?a

1 + x^2 + x^4 + x^5 /. x -> a + b

{a, b, c} /. a -> b /. b -> d

{a, b, c} /. {a -> b, b -> d}

Opakované použití

{a, b, c} //. {a -> b, b -> d}

Options /@ {Solve, Plot}

Příkaz přiřazení   =

Do proměnné x se přiřadí číslo 3

x = 3;

x + a + 3

x

y + a + 3 /. y -> 3

y

Ptáme se na proměnné

?@

y = x + a;

y

; lze oddělit několik příkazů a zapsat je na jeden řádek

z = x + y; z + b

Vyčištění proměnné

Clear[x, z, y]

x

a = 1; b = 3;
If[a == b, 
      
      a + b, 
      
      a - b
]
Clear[a, b];

Znovu Listy { }

Tvorba Listu

Table[x + 1, {x, 3, 6, 0.2}]

Table[
      StyleForm[TraditionalForm[Mathematica], FontFamily -> "Times", 
        FontSize -> i, FontColor -> Hue[0.02*i]], {i, 5, 50, 
        3}]

Table[(Subscript[a, i]) + x^i + 1, {i, 5}]

Range[5, 10]

Listy a jejich části

Příkaz Part, First, Last

v = {a, b, c, ahoj, Pi, e, f, h, E, 2, 5}

Length[v]

Part[v, 2]

Zkrácený zápis předchozího

v[[2]]

První položka

First[v]

Poslední položka

Last[v]

v

Table[v[[i]], {i, 1, 8, 2}]

Grafy funkcí

Funkce Sin[x]

Plot[Sin[ahoj], {ahoj, 0, 6.25}, 
        AxesLabel -> {"x", "y"}, 
        PlotLabel -> "Tohle je graf Sin[x]"];

Funkce Sin[x] a Cos[x] - obě musí být v Listu !!!!

Plot[{Sin[x], Cos[x]},{x, 0, 6.25},AxesLabel -> {"x", "y"},PlotLabel -> "Tohle je graf Sin[x] a Cos[x]"];

Funkce Sin[x] a Cos[x] 3D zobrazení

Plot3D[
        Sin[x]*Cos[y], {x, -5, 5}, {y, -4, 
          4}  , 
        ViewPoint -> {-1.019,  -0.862,  2.871}];

Grafy funkcí

Funkce Sin[x] a Cos[x] - další nastavení v grafu

Plot[{Sin[x], Cos[x]},{x, 0, 6.25},AxesLabel -> {"x", "y"},PlotLabel -> "Tohle je graf Sin[x] a Cos[x]",PlotStyle -> {{Hue[1]}, {RGBColor[0, 0, 1], 
                Dashing[{0.10, 0.05}]}},Ticks -> {{0, (π/2), π, ((3 π)/2), 
                2 π}, Automatic},AxesStyle -> {RGBColor[1, 0, 0], Thickness[0.006]}];

Plot[{Sin[x], Cos[x]},{x, 0, 6.25},PlotLabel -> "Tohle je graf Sin[x] a Cos[x]",PlotStyle -> {Hue[1], RGBColor[0, 0, 1], 
              RGBColor[0, 1, 0]},Frame -> True,GridLines -> {{0, (π/2), π, ((3 π)/2), 
                2 π}, {-1, -0.5, 0.5, 1}},FrameTicks -> {{0, (π/2), π, ((3 π)/2), 
                2 π}, {-1, -0.5, 0, 0.5, 1}}];

Grafy bodů

Funkce Sin[x]

deleni = 0.1;
body = Table[{x, Sin[x]}, {x, 0, 3  Pi, deleni}];

ListPlot[body, AxesLabel -> {"x", "y"}, 
        PlotStyle -> PointSize[0.01], 
        PlotLabel -> "Tohle je graf Sin[x] slo\:017eený z bod\:016f\
"  ];

Funkce Sin[x] a Cos[x] ve 3D

deleni = 0.3;
body3D = 
        Table[Sin[x*y], {x, 0, 2  Pi, deleni}, {y, 0, 2  Pi, 
            deleni}];

ListPlot3D[body3D, AxesLabel -> {"x", "y", "z"}, 
        PlotLabel -> "Tohle je graf Sin[x*y] "];

Tvorba vlasních funkcí  =   :=

Příkaz přiřazení      =

Odložený příkaz přiřazení     : =   (vyhodnotí se až při použití)

ran1 = Random[]; rand2 := Random[];
{ran1, ran1, ran1}

{rand2, rand2, rand2}

f[x_] := x^2*Sin[x] /; x > 0
f[x_] := x^2 /; x ≤ 0

f[3]

Plot[f[x], {x, -6, 2  Pi}];

data = Table[{x, x + Random[] + 1/2}, {x, 0, 5, 0.2}];

p1 = ListPlot[data, PlotStyle -> PointSize[0.01]];

metodaNejmensichCtvercu[body_] := Fit[body, {1, x^2}, x]

fce1 = metodaNejmensichCtvercu[data]

Plot[fce1, {x, 0, 5}, Epilog -> p1[[1]]];

fce2 = FindFit[data, {a x + b}, {a, b}, x]

Plot[{a x + b} /. fce2, {x, 0, 5}, 
        Epilog -> p1[[1]]];

Rovnice

Řešení algebraických rovnic nebo soustav rovnic

Rovnítko  = =

Funkce Equal[ ]

Equal[a, b]

Solve[{rovnice},{nezname}]

Solve[a (x^2) + b x + c == 0, x]

Soustavy rovnic

Solve[{x^2 - k^2 == 0, y^2 == x^2}, {x, y}]

NSolve[x^3 + x + 1 == 0, x]

x /. %

Rovnice

Pokud rovnice nejsou polynomialní

FindRoot[3  Cos[x] == Log[x], {x, 1}]

Plot[{3  Cos[x], Log[x]}, {x, 0, 5}, 
        PlotRange -> {{0, 5}, {-4, 4}}, 
        Epilog -> {Hue[1], PointSize[0.03], 
            Point[{x, Log[x]} /. %]}];

Rovnice - Diferenciální rovnice

rovnice = {y''[x] == a y[x] + 1, 
          y[0] == 0, y'[0] == 0};

res = y[x] /. DSolve[rovnice, y[x], x]

Plot[Evaluate[res /. a -> -x], {x, -0.5, 20}, 
        PlotRange -> All];

?LaplaceTransform

LaplaceTransform[rovnice[[1]], x, p]

% /. LaplaceTransform[y[x], x, p] -> Y[p]

% /. {y[0] -> 0, y'[0] -> 0}

Solve[%, Y[p]]

Y[p] /. %

InverseLaplaceTransform[%, p, x]

res

Rovnice - Diferenciální rovnice

Diferenciální rovnice - numerické řešení (výsledek je ve formě Interpolační funkce)

result = 
      NDSolve[{y''[t] + 0.1 y'[t] == -Sin[y[t]], 
          y[0] == 1, y'[0] == 0}, y, {t, 0, 50}]

Plot[y[x] /. result, {x, 0, 30}];

Animace (s Table a Do)

do = 4  Pi;
Table[
        Plot[Sin[x], {x, 0, do}, AxesLabel -> {"x", "y"}, 
          PlotLabel -> "Tohle je graf Sin[x]", 
          Epilog -> {Hue[0.9], PointSize[0.03], 
              Point /@ {{i, Sin[i]}}}], {i, 0, do, do/20}];

FindRoot[3  Cos[x] == Log[x], {x, 1}]

Do[
        Plot[{3  Cos[x], Log[x]}, {x, 0, 5}, 
          PlotRange -> {{0, 5}, {-4, 4}}, 
          Epilog -> {Hue[1], PointSize[0.03], 
              Point /@ {{i, Log[i]}, {i, 3  Cos[i]}}}], {i, 0.1, 5, 
          0.2}];

Grafika

n = (π/128); 
    Show[Graphics[({Hue[#(1/(2 π - n))], 
                Disk[{0, 0}, 1, {#1, #1 + n}]} &) /@ 
          Range[0, 2 π - n, n], AspectRatio -> Automatic]]; 
    Clear[n];

Grafika ve 2D

Show,Graphics, Point, Line,Circle,...

Show[Graphics[Map[Point,Table[{f*Sin[f], f*Cos[f]}, {f, 0, 6  Pi, 0.01}]]]/.Point[{a_, b_}] -> {Hue[0.1*b], Point[{a, b}]},AspectRatio -> Automatic];

Show[Graphics[Map[Line,Table[{{f*Sin[f], f*Cos[f]}, {f*Sin[f] + 0.5  f, 
                        f*Cos[f] + 0.7  f}}, {f, 0, 6  Pi, 0.03}]]/.Line[{a_, b_}] :> {Hue[0.04  Plus @@ b], 
                  Line[{a, b}]}],AspectRatio -> Automatic];

Show[
        Graphics[
          Table[{Hue[0.08  f], Circle[{f*Sin[f], f*Cos[f]}, 0.3  f]}, {f, 0, 
              8  Pi, 0.2}]], AspectRatio -> Automatic];

Show[
        Graphics[
          Table[{Hue[0.08  f], Disk[{f*Sin[f], f*Cos[f]}, 0.1  f]}, {f, 0, 
              10  Pi, 0.2}]], AspectRatio -> Automatic];