Ismerkedés a Mathematicával

A ,,Wolfram jegyzetfüzet’’

Cellák

A grafikus vagy webes felületen megjeleníthető ,,Wolfram notebook’’ programkód, szöveg, grafika, kép,... keveréke.
Egymásba ágyazható cellákból áll, melyek struktúráját a jobb oldalt látható zárójelek jelzik. Dupla kattintással kinyithatóak/becsukhatóak.

Új cellát a két cella között megjelenő vízszintes kurzorral kattintva lehet létrehozni. Amit ekkor beírunk, azt Wolfram nyelven írt inputnak tekinti. Ha azonban előbb a megjelenő vízszintes vonal bal sarkában lévő + jelre kattintunk, választhatunk, hogy minek tekintse a beírtakat (pl. szövegnek, szabad formátumú képletnek/parancsnak, vagy a Wolfram Alphának szánt kérdésnek). Egy kiválasztott cella végrehajtásához nyomjunk SHIFT+ENTER billentyűket.

Wolfram nyelvű bemenet (alapértelmezés)

1+1

In[n] és Out[n] az n-edik be- és kimenetet jelzi. Az előző kimenetre %, a k-adikra a %k hivatkozik.

%1+2

Legalapvetőbb tudnivalók:

Az alapműveletek jelölése és precedenciája megfelel a matematikában szokásosnak.

A függvények nagy betűvel kezdődnek, és argumentumukat [ ] jelek közé kell tenni.

A listák { } jelek közé, elemei vesszővel elválasztva írandók.

A listák indexei [[ ]] közé írandók.

2^10+Sin[Pi/2]

{1,3,5,7}[[3]]

Segítséget kapunk, ha egy függvény nevét elkezdjük beírni:

Sin[Pi]

További segítség kapható a palettákból! Próbáljunk kiszámítani egy egyszerű határértéket! A felkínált input mezők közt a TAB-bal léphetünk előre:

Limit[Sin[x]/x,x->0]

Rajzoljuk ki egy 2-változós függvény grafikonját!

Plot3D[Sin[x]Cos[y],{x,-2Pi,2Pi},{y,-2Pi,2Pi}]

Segítségek: szabad formátum (free form), Wolfram Alpha, Help

A szabad formátumú (Free form) inputot egy narancssárga = jel jelzi, ide angolul próbáljuk meg leírni, mit szeretnénk:

Közvetlenül küldhetünk kérést a Wolfram Alphának, ezt csillagos = jelzi::

Ha az output cellán van a kurzor, megjelenik a Suggestion bar, ami az adott kimenethez ad javaslatot, hogy mit lehet vele tenni:

Simplify[-x Cos[x]+Sin[x]+(1/2) Sin[2 x]]

A szabad formátum dobozán lévő + jelre kattintva olyan további információt ad, ami érdekelhet minket.

A Help menüben nagyon részletes információ kapható mindenről. Keressünk rá a egy függvényre. A tömör szótári definíció után részletes leírás, és szerkeszthető mintapéldák következnek.

Mathematica mint numerikus kalkulátor

Numerikus számítások

Lehetnek pontosak, ahogy az a komputer algebra rendszerektől elvárható, és lehet közelítő, lebegőpontos.

12345/3^10

Numerikus közelítésre az N függvény való, de ez itt a suggestion bar-ról is előhívható, vagy a %-kal hivatkozhatunk az előző eredményre:

N[%,30]

Ha a bemenet is lebegőpontos, a kimenet is az lesz:

12345.0/3^10

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

Det[%]

Változók

Értékadás = jellel:

a=12345/3^10

A palettáról, vagy speciális billentyűkombinációkkal a matematikában szokásos módon is megjeleníthető (pl. CTRL-2 a gyökvonás):

a=(Sqrt[1234])

Expand[(a+b)^2]

Clear[a]

Továbbiak találhatók a Fast introduction for math students oldalon.

Listák

A legfontosabb konstrukciók egyike a lista.

Range[5]

Range[3,16,4]

ListPlot[Join[Range[5],Reverse[Range[5]],Range[5]]]

Join[{1,3,5},Range[4]]

Elemenkénti műveletek:

{1,3,5}+2

a={1,3,5}*{2,3,1}

Sort[a]

Length[a]

Total[a]

Part[a,2]

Min[a]

Table[2,5]

Table[n^3,{n,10}]

Table[{1,x,x^2,x^3},{x,4}]

RandomInteger[5,20]+1

b=Range[10]

b[[2;;4]]

b[[2;;9;;3]]

Mathematica függvények kezelése

Függvények definíciója

A := a késleltetett kiértékelés, az _ a változó után a behelyettesítést jelöli:

f[x_]:=x^3-x

f[3]

f[1.5]

f[abc]

Solve[f[x]==24,x]

Factor[f[x]-24]

Függvény alkalmazása

Az f[x] szintaktika helyettesíthető az f@x szintaktikával is, aminek eredete a matematikában a kompozícióra használt ,,kör’’ művelet:

f@g[x]

f@g@x

f[g[x]]

f@2Pi+1

Egy másik lehetőség az ,,utánhatás’’, amire a // használható:

x//f

2Pi+1//N

A @ és a // precedenciája különböző az algebrai műveletekhez képest (a @ erősebb, a // gyengébb):

2Pi+1//f

Egy függvény alkalmazása egy lista minden elemére a /@ művelettel érhető el:

Sin/@{Pi/2,Pi/3,Pi/5}

Hue/@{.25,.75}

Hue/@Range[0,1,0.1]

Length/@{{1},{a,b},{b,c,d,e},{22,23}}

Length@{{1},{a,b},{b,c,d,e},{22,23}}

PieChart/@{{1,1,1,1,1,1},{1,2,3,2,3,2},{10,20,30}}

Reverse@{{1},{a,b},{b,c,d,e},{22,23}}

Reverse/@{{1},{a,b},{b,c,d,e},{22,23}}

Graphics/@{Circle[],RegularPolygon[9],Style[RegularPolygon[.5,3],Red]}

Graphics@{Circle[],RegularPolygon[9],Style[RegularPolygon[.5,3],Red]}

A /@ kiváltható a sok más programnyelvben is map-nek nevezett Map függvénnyel:

Map[Cos,{Pi,2Pi}]

Néhány függvény listán is elemenként ható (listable), ezeknél nincs különbség a @ és a /@ között. Ilyen például az N, a Range és a Prime függvény:

N@Sqrt@{2,3}

N/@Sqrt/@{2,3}

Prime@{10,1000,100000}

Range[{2,4,{2,4}}]

f/@(a+b c+d)

f/@(a (b+c)d)

Map[f,a+b c+d]

Függvény alkalmazásának szintjei

Az, hogy egy lista elemeit tekintsük egy függvény argumentumainak a @@ és @@@ műveletekkel érhető el:

f@{a,b,c}

f@@{a,b,c}

f@@{{a,b},{c,d}}

f@@@{{a,b},{c,d}}

Apply[f,{a,b,c}]

Apply[f,{{a,b},{c,d}},{1}]

Apply[f,{{{a,b},{c,d}}},{2}]

Tiszta függvény (pure anonymous function)

A tiszta függvény a matematikában szokásos ,,x -> kifejezés’’ alakú név nélküli függvénydefiníció megvalósítása a Mathematicában. Két alakja van:
1a. Function[x,kifejezés]		(x helyett bármilyen aruumentum állhat)
1b. Function[{x1,x2,…},kifejezés]	többváltozós eset
2.   kifejezés&				a kifejezésben a # (vagy #1, #2,...) az argumentum szerepét játssza, 
					## az összeset, ##n az n-ediktől mind
Lássunk egy példát, amelyben először egy névvel definiált függvényt használunk, majd a tiszta függvényes változatait:

g[x_]:=f[x]-x^2
g/@{a,b,c}

g/@(a+b+c)

Map[g,{a,b,c}]

Map[f[#]-#^2&,{a,b,c}]

Map[Function[x,f[x]-x^2],{a,b,c}]

Apply[Function[{x,y},x+y],{{1,2},{3,4}},{1}]

Függvények ismételt alkalmazása

A Nest és a NestList függvényekkel egy függvény többször alkalmazható argumentumán:

Nest[f,x,3]

Nest[#^2&,3,5]

NestList[#^2&,3,5]

Nest[1+1/#&,x,4]

NestList[1+1/#&,1,6]

A FixedPoint addig alkalmaz egy függvény ismételve, míg az eredmény már nem változik, azaz a függvény fixpontja:

NestList[Cos[#]&,1.0,8]

FixedPoint[Cos[#]&,1.0]

A Nest többargumentumos változata a Fold és a FoldList

FoldList[f,x,{a,b,c}]

FoldList[Times,1,Range[2,10]]

FoldList[Plus,0,{a,b,c}]

Fold[Times,1,{a,b,c}]

Times[a,b,c]

Times[]