Výpočty

Mathematica umožňuje jednoducho kombinovať a aktivovať rôzne zabudované funkcie a štandardné balíky, takže je prakticky možné riešiť všetky typy zložitých problémov. Systém má prísne vnútorné pravidlá, ktoré zodpovedajú pravidlám matematickým. Prirodzene obsahuje pravidlá derivovania, integrovania a iných symbolických operácií a mnoho tabuliek a špeciánych funkcií. Súčasne je možnosť definovať a používať aj vlastné pravidlá. Táto voľnosť je nevyhnutná pre vykonávanie numerických približných výpočtov s rôznymi typmi premenných a číslami s rôznou presnosťou.

Príklad 1. Je potrebné poznamenať, že systém Mathematica sa vždy pokúša vypočítať výsledok s najväčšou možnou presnosťou použitím dostupných matematických pravidiel. Je preto zrejmé, že výsledok je toho istého typu ako vstupné údaje. Číselné konštanty a premenné môžu byť celé čísla, racionálne čísla, reálne alebo komplexné čísla, atď. Uvedené typy sa najjednoduchšie definujú implicitne, inak povedané vzhľadom k typu čísiel a premenných , ktoré sú zadané vo vykonávanej operácii. Napríklad 123 je celé číslo a 123. je reálne číslo. Stačí, ak je jedno číslo iného vyššieho typu, aby bol tohto typu aj výsledok. V ďalšom je niekoľko najjednoduchších prípadov, keď sa typ premennej zmení na iný typ počas výpočtu.

Údaje sú typu Integer (racionálne číslo) a systém Mathematica pracuje presne:

p = 123 r = p/12 r^(1/2) 1/3 + 1/4

123

41/4

41^(1/2)/2

7/12

Typ premenných je Real (reálne číslo) a rovnaké operácie sa vykonávajú s výsledkom uvedeným ako desatinné číslo, so štandardnou presnosťou na šesť desatinných miest:

pn = N[p] rn = pn/12 rn^(1/2) RowBox[{RowBox[{1., /, 3}], +, 1/4}]

123.

10.25

3.20156

0.583333

Pri práci s komplexnými číslami s imaginárnou jednotkou i, môžu byť koeficienty komplexného čísla definované ako čísla racionálne alebo reálne. Funkcie Re[x1 ] a Im[ x1] udávajú reálnu a imaginárnu zložku komplexného čísla x1, v danom poradí:

x1 = (1 + 2)/(5 - 3) RowBox[{x2, =, RowBox[{RowBox[{(, RowBox[{1., +, 2}], )}], /, (5 - 3)}]}] Re[x1] Im[x1] (x1^2 * x2)^(1/3)

-1/34 + (13 )/34

RowBox[{RowBox[{-, 0.0294118}], +, RowBox[{0.382353,  , }]}]

-1/34

13/34

RowBox[{RowBox[{0.345833, }], -, RowBox[{0.165705,  , }]}]

Príklad 2. Matica je typickým príkladom dvojrozmernej postupnosti. V systéme Mathematica sú postupnosti prezentované najjednoduchšie vo forme zoznamu . Prvé vnútorné krútené zátvorky obsahujú prvky prvého riadku matice, druhé zátvorky prvky druhého riadku, atď. Funkcia MatrixForm[ ] zobrazuje maticu v štandardnom tvare. Výpis špeciálneho prvku matice vykoná príkaz so symbolickým zápisom umiestnenia prvku v dvojitých hranatých zátvorkách, ako ilustruje uvedený príklad.

a = {{2, 4, 5}, {1, -8, 2}, {3, 7, 4}} MatrixForm[a] a[[1, 1]] a[[3, 2]]

{{2, 4, 5}, {1, -8, 2}, {3, 7, 4}}

( 2    4    5  )            1    -8   2            3    7    4

2

7

Príklad 3. Funkcia Eigenvalues[ ] vypočíta vlastné čísla matice z príkladu 2. Výsledok je zapísaný ako zoznam, avšak ako zoznam pravidiel, pretože prvky danej matice sú racionálne čísla, ale výsledok nie. Problém sa dá vyriešiť zmenou typu premenných použitím zabudovanej funkcie N[ ].

z = Eigenvalues[a] ra = N[a] z = Eigenvalues[ra]

{Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 1], Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 3], Root[-23 - 68 #1 + 2 #1^2 + #1^3&, 2]}

RowBox[{{, RowBox[{RowBox[{{, RowBox[{2., ,, 4., ,, 5.}], }}], ,, RowBox[{{, RowBox[{1., ,, RowBox[{-, 8.}], ,, 2.}], }}], ,, RowBox[{{, RowBox[{2., ,, 7., ,, 4.}], }}]}], }}]

RowBox[{{, RowBox[{RowBox[{-, 9.15398}], ,, 7.48946, ,, RowBox[{-, 0.33548}]}], }}]

Príklad 4. Matice môžeme generovať funkciou Table[ ]. Takto môžeme získať Wandermondovu maticu a vypočítať hodnotu jej determinantu. V poslednom riadku výsledok zjednodušíme.

v = Table[x_i^j, {j, 0, 4}, {i, 5}] MatrixForm[v] Det[v] ; dvan = Simplify[%]

{{1, 1, 1, 1, 1}, {x_1, x_2, x_3, x_4, x_5}, {x_1^2, x_2^2, x_3^2, x_4^2, x_5^2}, {x_1^3, x_2^3, x_3^3, x_4^3, x_5^3}, {x_1^4, x_2^4, x_3^4, x_4^4, x_5^4}}

(                        )            1    1    1    1    1             x    x ...             4    4    4    4    4           x    x    x    x    x            1    2    3    4    5

(x_1 - x_2) (x_1 - x_3) (x_2 - x_3) (x_1 - x_4) (x_2 - x_4) (x_3 - x_4) (x_1 - x_5) (x_2 - x_5) (x_3 - x_5) (x_4 - x_5)

Príklad 5. Podobne ako v Príklade 4 generujeme maticu s prvkami, ktoré sú neurčitými integrálmi a vypočítame hodnotu jej determinantu:

w = Table[∫ (Cos[t] * Sin[t])/(i + j) t, {j, 3}, {i, 3}] ; ws = Simplify[%] ; MatrixForm[ws]  dw = Det[ws] %//N

(  1       2     1       2     1       2  )           -- Cos[t]     -- Cos[t]  ...       2           -- Cos[t]     --- Cos[t]    --- Cos[t]            8             10            12

-Cos[t]^6/345600

RowBox[{RowBox[{-, 2.89352*10^-6}],  , Cos[t]^6}]

Príklad 6. Deriváciu výsledku z Príkladu 5 uložíme ako premennú f po zjednodušení a nakreslíme graf tejto funkcie na intervale [ -π, π ]:

f = ∂_tdw f = TrigReduce[f] Plot[f, {t, -π, π}]

(Cos[t]^5 Sin[t])/57600

(5 Sin[2 t] + 4 Sin[4 t] + Sin[6 t])/1843200

[Graphics:HTMLFiles/index_37.gif]

⁃Graphics⁃

Príklad 7. Funkcia f nadobúda na okolí bodu t = 2.5 svoje lokálne extrémy, minimum v bode t = 2.72106 a maximum v bode t = 0.420534.

RowBox[{FindMinimum, [, RowBox[{f, ,, RowBox[{{, RowBox[{t, ,, 2.5}], }}]}], ]}] RowBox[{FindMaximum, [, RowBox[{f, ,, RowBox[{{, RowBox[{t, ,, 2.5}], }}]}], ]}]

RowBox[{{, RowBox[{RowBox[{-, 4.49313*10^-6}], ,, RowBox[{{, RowBox[{t, , 2.72106}], }}]}], }}]

RowBox[{{, RowBox[{4.49313*10^-6, ,, RowBox[{{, RowBox[{t, , 0.420534}], }}]}], }}]

Príklad 8. Nájdeme Taylorov rozvoj funkcie f v bode 0 stupňa 10.

s = Series[f, {t, 0, 10}]

t/57600 - t^3/21600 + (47 t^5)/864000 - (169 t^7)/4536000 + (2717 t^9)/163296000 + O[t]^11

Príklad 9. Vypočítame netriviálny integrál funkcie g(x). Aby sa výpočet vykonal v reálnych číslach, pridáme desatinnú bodku ku jednej z číselných konštánt, napr. 3. Priebeh funkcie budeme môcť lepšie sledovať na jej grafe.

RowBox[{g, =, RowBox[{(1 + x^3), /, RowBox[{(, RowBox[{x^4, +, RowBox[{3., x^2}], -, 5x, +, 2} ... (1 + x^3), /, RowBox[{(, RowBox[{x^4, +, RowBox[{3., x^2}], -, 5x, +, 2}], )}]}], x}]}]}]

RowBox[{(1 + x^3), /, RowBox[{(, RowBox[{2, -, 5 x, +, RowBox[{3.,  , x^2}], +, x^4}], )}]}]

[Graphics:HTMLFiles/index_46.gif]

⁃Graphics⁃

RowBox[{RowBox[{RowBox[{-, 1.18128}],  , RowBox[{ArcTan, [, RowBox[{RowBox[{3.5056, }] ...  RowBox[{Log, [, RowBox[{RowBox[{4.2655, }], +, RowBox[{1.31696,  , x}], +, x^2}], ]}]}]}]


Created by Mathematica  (October 6, 2007)