Mathematica — uvod

Tipkovnica

⇧[⌤]: evaluacija (⌤ je samo prelazak u novi red)

Razne forme (vrste izraza)

⇥ prelazi između raznih placeholdera koje imamo u formi
→ (kursor desno) izlazi iz forme u kojoj smo trenutno

Ctrl[6]: superscript (potenciranje) (selektirati bazu prvo ako nije trivijalna)
Ctrl[-]: subscript (indeks, donja granica sume/integrala, ili npr. varijabla po kojoj se derivira)
Ctrl[⇧[7]]: razlomak (selektirati brojnik prvo ako nije trivijalan)
Ctrl[2]: korijen
Ctrl[5]: prebacivanje eksponent/radikand korijena, gornja/donja granica sume/integrala...
Ctrl[,]: prelazak u novi stupac matrice
Ctrl[⌤]: prelazak u novi redak matrice

Razni simboli

Esc tipka je jako važna za tipkanje raznih čudnih simbola. Skraćeno ime simbola piše se između pritisaka Esc tipke.
Piše se (i vidi na ekranu za vrijeme tipkanja) skracenica.

p: skraćenice od jednog slova obično generiraju grčka slova (π).
dd: dvostruka mala slova generiraju doublestruck slova, koja u Mathematica sustavu imaju posebno značenje
(d za deriviranje i integriranje, e prirodna baza, i imaginarna jedinica)
sum: sumiranje (∑)
int: integriranje (∫ )
inf: beskonačnost (∞)
&&: logički operatori poput onih iz C-a (∧,∨,¬)

Osnovna ideja

Struktura

Mathematica sustav se sastoji od dva sloja: jezgre (kernel) i sučelja (frontend). Jedna jezgra može opsluživati više sučelja, i jedno sučelje može koristiti više jezgri, ali najčešće je "u kućnoj upotrebi" Mathematice to 1-1 veza.
Jezgra je proces koji obavlja evaluaciju (opisanu detaljno dolje pod naslovom "evaluacijska petlja"), dok se sučelje brine za komunikaciju s korisnikom (prozori, snimanje i otvaranje datoteka, pokretanje i završavanje jezgre, ispis rezultata,…). Posljedica toga je da kad otvorimo novu bilježnicu (Ctrl[n]), svi simboli su i dalje dostupni, jer smo još uvijek pod istom jezgrom. Također, bilo gdje unutar bilježnice možemo napisati Quit, i tako "ubiti" jezgru (restartat će se pri prvoj sljedećoj naredbi).
Još jedna dobra strana dvoslojnog pristupa je da najčešće možemo snimiti svoj rad čak i ako se Mathematica sruši. Naime, najčešće se sruši (ako joj zadamo pretežak zadatak:) samo jezgra, dok iz sučelja možemo normalno snimiti datoteku. Korisna je i naredba Alt[.], kojom dajemo jezgri naredbu da prekine ono što radi. Naravno, ovisno o tome koliko je duboko zamišljena, jezgra nas neće uvijek poslušati, ali vrijedi probati.

FactorInteger[(2^(2^12))+1]

Što očekivati?

Mathematica može svašta, ali najjača je u stvarima koje su:

matematički mainstream (nešto čime se bavi više od 100 ljudi na planeti:)

ne previše fundacijske (logika i teorija skupova joj nisu jača strana)

objektivne (zna se što je ispravna notacija, i što je točan odgovor)

finitističke (beskonačnosti nisu poželjne)

ciljno orijentirane (ne zanima nas postupak, već samo rješenje)

Zadnji point je vjerojatno najtužnija vijest za većinu studenata koji su od Mathematice očekivali da im riješi zadatak s detaljnim postupkom. Mathematica to ne čini iz tri jako bitna razloga: stilskog, legalnog i konceptualnog.
Prvo, postupak, za razliku od rješenja, nije objektivna stvar. Što napisati a što ne, do koje razine detalja, kojom notacijom, kojim stilom… previše mutno za jedan softverski paket koji se bavi egzaktnim stvarima.
Drugo, većina algoritama koje Mathematica interno koristi su Wolframova poslovna tajna. Velik dio WRIjevog poslovnog uspjeha je posljedica pažljivog čuvanja njihovih ultrabrzih implementacija poznatih postupaka, kao i potpuno novih algoritama razvijenih specijalno za Mathematicu.
I treće i najvažnije, da detaljno objasnite u kakvom stilu želite postupak, i platite Wolframu ogromne pare da otkriju svoje algoritme, svejedno vam to u najvećem broju slučajeva uopće ne bi pomoglo. Način na koji Mathematica rješava većinu matematičkih problema bitno se razlikuje od načina na koji bi iste probleme rješavao čovjek. To je važno znati i da bismo lakše prihvatili činjenicu da Mathematica ne zna nešto što je nama vrlo osnovno, kao i da zna nešto što bi nama oduzelo daleko previše vremena kad bismo to rješavali na bilo koji drugi način.

Evaluacijska petlja

Svaka evaluacija u Mathematici može se shvatiti kao "expression match&rewrite".
"Expression" (izraz) je bilo koji objekt u Mathematici, najčešće se vizualizira kao stablo (iako to nije potpuno točno). Ima dijelove (parts, "čvorovi"), jedan od kojih je istaknut kao head ("korijen"). Piše se kao head[(Subscript[part, 1]),(Subscript[part, 2]),…,(Subscript[part, n])] (iako mnoge izraze možemo pisati i u ljepšem obliku). Svaki dio je ponovo izraz. Posebne vrste izraza (brojevi, stringovi, simboli i još neki objekti) smatraju se atomima ("listovi"). Na primjer, a+b+c d se interno reprezentira kao

a+b+c d//FullForm

"Match" je operacija koja na izraz primjenjuje "pattern" (uzorak). Pattern je također expression, neki njegovi dijelovi su blank (mjesta koja se mogu popuniti proizvoljnim izrazima). Blank dijelovi mogu (ne moraju) biti imenovani. Primjer patterna, s jednim neimenovanim blankom i jednim imenovanim, je

a+_+x_//FullForm

"Rewrite" je posljednja faza, koja nastupa kad se otkrije koji pattern odgovara ulaznom izrazu. Tada se primjenjuje "rule" (pravilo), čija lijeva strana je odgovarajući pattern, a desna izraz s kojim se odgovarajući dio ulaznog izraza treba zamijeniti. Pravilo je izraz oblika p->e (-> se piše kao ->). Primjer pravila je

a+_+x_->(x^2)//FullForm

Uvijek možemo "ručno" primijeniti pravilo koje želimo na izraz, pomoću operatora /.:

a+b+c d/.a+_+x_->(x^2)

Ako match nije ispunjen, izraz će ostati nepromijenjen (to je ključno! Ako smo neku naredbu ili njene argumente krivo utipkali, ili Mathematica ne zna kako riješiti naš problem, vratit će nam ono što smo upisali):

a+b+c d/.e+_+x_->(x^2)

Predefinirane stvari

Mathematica zna neke elementarne manipulacije s izrazima koje joj omogućavaju da nađe match čak i tamo gdje možda ne očekujemo. Na primjer, budući da je zbrajanje komutativno, ovo je match:

a+b+c d/.b+_+x_->(x^2)

Štoviše, budući da je zbrajanje asocijativno, i ovo je match:

a+b+c d/._+x_->(x^2)

Najčešće nećemo ručno primjenjivati pravila, osim u specijalnim slučajevima koje ćemo posebno napomenuti.

Ugrađeni vs. korisnički simboli

Mathematica ima ugrađenu ogromnu zbirku simbola koji odgovaraju uobičajenim matematičkim pojmovima, i još veću hrpu pravila definiranih za njih, tako da mnoge stvari možemo napraviti a da uopće ne definiramo svoja pravila. Da bi se izbjegli clashevi ugrađenih simbola i onih koje mi definiramo, postoji nepisano pravilo ("dogovor Wolframovih programera i korisnika Mathematice"): svi ugrađeni simboli počinju velikim slovom, svi korisnički simboli počinju malim slovom. Obje te stvari su važne:

Uobičajene elementarne funkcije poput sinus, pišu se Sin umjesto sin (osim ako definiramo svoju funkciju sinus:).

sin@π

Sin@π

Dobro je svoje "interne" varijable označavati malim slovima. Što prije se naviknete na to, to bolje. Recimo da hoćemo matricu C:

c=(({{1, 2}, {3, 4}}))

C=(({{1, 2}, {3, 4}}))

Help

Možemo saznati što pojedini simbol predstavlja pomoću ??:

??C

??c

Ako se radi o ugrađenom simbolu, možemo i pritisnuti F1 dok je kursor na njemu. Tako dobivamo vrlo detaljni članak u helpu iz kojeg obično saznamo puno više nego što smo htjeli. :-)