Mathematica — demo

Još neki tipografski detalji

Zagrade

( ): grupiranje, i pisanje "lijepih" matrica (što je isto grupiranje:)
[ ]: expression (najčešće u smislu primjene funkcije na nekoliko vrijednosti)
{ }: lista (posebna vrsta expressiona sa headom List; defaultni način za pakiranje više objekata u jedan)
[[ ]]: dohvaćanje određenog dijela izraza (može biti napisano u indeksu, da izgleda matematičkije:)
⟨ ⟩: (dobiju se sa < i >) zagrade za korisničku upotrebu

Još neki korisni simboli

@: primjena unarne funkcije na jednostavni argument (puno bolje nego hrpa ]]] na kraju)
/@: primjena unarne funkcije na "sve" (osim heada) dijelove nekog izraza (najčešće liste)
/.: primjena pravila na izraz
%: prethodni rezultat (može i %% za pretprethodni…, ili s Out-brojem nakon)

Sin@Cos@Tan@x

Trace[%/.x->π]

Polazak

Aritmetika

Pa krenimo nešto računati.

1+2 3

(98^76)

100!

Sin@(π/4)

(4/6)

Numerika

Primijetimo da su svi gornji rezultati egzaktni. Mathematica ne voli gubiti informaciju, osim ako joj to naredimo. Ako nam treba numerička aproksimacija, upotrijebimo funkciju N. Kao unarna funkcija daje samo grubu ocjenu numeričke vrijednosti

N@(E^π)

dok kao binarna daje koliko želimo znamenaka (ne decimala — to je česta zabuna):

N[(Sqrt[3]),70]

N[(4/7),50]

Liste

Aritmetičke operacije i većina elementarnih funkcija su "listabilne", što znači da automatski "ulaze" u liste.

(({2,5,9})^({5,2,1}))

Sin@(π/({1,2,3,4,6}))

Ali nisu svi ugrađeni simboli takvi; naprimjer, uspoređivanje

{2,3,5}<4

Uvijek možemo ručno "ući pod listu" pomoću Thread:

Thread@%

ili /@ umjesto @:

DiscreteDelta@{0,1,2}

DiscreteDelta/@{0,1,2}

/@ je naročito koristan kad funkcija radi nešto drugačije na listama nego na njihovim elementima;
ne možemo koristiti Thread ako je funkcija već evaluirana:

Length[a+b+c+d]

Length@{a+b+c+d,b c d}

Thread@%

Length/@{a+b+c+d,b c d}

Matrice

Matrice su zapravo liste lista jednake duljine; svaka unutrašnja lista je jedan redak:

(({{1, 2, 3}, {4, 5, 6}}))(({{1, 2, 3}, {4, 5, 6}}))

MatrixForm prikazuje matricu u 2D obliku:

MatrixForm@%

Operator . služi za skalarno množenje vektora, množenje matrice vektorom, ili množenje dviju matrica (za razliku od razmaka -- množenja, koje, kao aritmetička operacija ulazi u liste listi):

MatrixForm[(({{1, 2, 5}, {3, 4, 6}})).(({{2, 5, 7, 8}, {1, 2, 4, 7}, {1, 3, 9, 8}}))]

MatrixForm obične liste (čiji elementi nisu liste) prikazuje kao vektor-stupce:

MatrixForm@{12,0,-4}

Lista vektora je jednako reprezentirana kao matrica; ako ih želimo različito prikazivati, moramo to eksplicitno reći:

svojstvenivektori=Eigenvectors@(({{0, 1, 2}, {0, 2, 4}, {0, 3, 6}}))

MatrixForm@svojstvenivektori

MatrixForm/@svojstvenivektori

ᵀ (transponiranje) dobijemo sa tr.

MatrixForm[svojstvenivektori\[Transpose]]

Det@svojstvenivektori

MatrixForm-ovi nisu matrice! Ovdje slucajnamatrica nije matrica, nego samo njen prikaz na ekranu. Kao posljedica toga, matrične operacije trebamo "podvući" pod MatrixForm. Dobra strana toga je da rezultat opet dobijemo u 2D prikazu:

slucajnamatrica=MatrixForm@RandomReal[5,{4,6}]

RowReduce@slucajnamatrica

RowReduce/@slucajnamatrica

Ovako smo sigurni i za ne-unarne funkcije — iako treba više pisanja ako želimo lijepo oblikovan output:

MatrixForm[slucajnamatrica=RandomReal[5,{4,6}]]

RowReduce@slucajnamatrica

MatrixForm@%

MatrixForm@MatrixPower[slucajnamatrica\[Transpose].slucajnamatrica,5]

Još neke tipkovničke kratice

Ctrl[k]: autocomplete — za ugrađene i korisničke simbole
Ctrl[⇧[k]]: autocomplete sa sintaksom (u obliku forme s parametrima), za ugrađene simbole
Ctrl[l]: kopiranje zadnjeg inputa u notebooku — korisno kad želimo editirati zadnji input, ali i zadržati staru verziju iznad
Ctrl[⇧[l]]: kopiranje zadnjeg outputa u notebooku — output također možemo editirati "naživo", ali ovo je korisno ako želimo i sačuvati originalni output