Mathematica
A Wikipédiából, a szabad lexikonból.
Mathematica |
|
---|---|
Fejlesztő: | Wolfram Research |
Legfrissebb stabil kiadás | 5.2 / 2005. július 12. |
Legfrissebb fejlesztői kiadás | 6.0 / n/a |
Operációs rendszer: | többplatformos |
Kategória | matematikai programcsomag |
Licenc: | kereskedelmi |
Weboldal | Mathematica homepage |
A Mathematica széles körben használt matematikai programcsomag, megálmodója Stephen Wolfram, terjesztője az általa alapított Wolfram Research cég. A Mathematica hatékony programozási nyelv is, amely a kifejezés-átírásra (term-rewriting) alapozva számos programozási paradigma emulálására alkalmas.
Tartalomjegyzék |
[szerkesztés] Áttekintés
Wolfram 1986-ban kezdett dolgozni a programon, és 1988-ban bocsátotta ki az első változatot. A jelenleg aktuális változat az 5.2-es, amit 2005. július 12-én bocsátottak ki.
A Mathematica programozási nyelv a kifejezés-átíráson alapul, de a funkcionális programozás, a listakezelés, a mintaillesztés és a procedurális programozás egyaránt megvalósítható benne, bár általában a funkcionális program a leghatékonyabb.
A Mathematica rendszer három fő részből áll.
A C nyelven írt mag (kernel) végzi a tényleges számításokat, az utasítások értelmezését.
Az eredményeket a felhasználói felület (front end) közli. A mag és a felhasználói felület (vagy bármely más kliens, például a felhasználó által írt programok) közötti kommunikáció a MathLink protokollt használja, gyakran akár hálózaton keresztül is. Több felhasználói felület kapcsolódhat egyetlen maghoz, és egy felhasználói felület kapcsolódhat több maghoz.
A harmadik fő részt a csomagok (tulajdonképpen programkönyvtárak) alkotják; ezek a Mathematica nyelvén írt kiegészítő programok, amelyek közül néhányhoz a licenc megvásárlásával juthatunk, számos továbbit pedig találhatunk ingyenesen a hálózaton, illetve megvásárolhatunk más cégektől.
Eltérően más matematikai programcsomagoktól, amilyen például a Maxima vagy a Maple, a Mathematica a tárolt szabályokat mindaddig alkalmazni próbálja az adott kifejezés átalakítására, amíg ez lehetséges, tehát egy fix pontot keres. Másszóval a Mathematica egy végtelen kiértékelő rendszer.
[szerkesztés] Példák
Az alábbi Mathematica utasítássorozat annak a 6×6-os mátrixnak a determinánsát számolja ki, amelynek az i, j'edik eleme i*j, de a nulla elemek helyén 1 áll.
In[1]:= Det[Array[Times, {6, 6}, 0] /. 0 -> 1] Out[1]= 0
Tehát egy ilyen mátrix determinánsa 0.
Az alábbiakban numerikusan kiszámoljuk az ex = x2 + 2 egyenlet gyökét az x = -1 pontból kiindulva.
In[2]:= FindRoot[Exp[x] == x^2 + 2, {x, -1}] Out[2]= {x -> 1.31907}
[szerkesztés] Több paradigma, egy nyelv
A Mathematicában több programozási paradigma is használható egy feladat megoldására. Tekintsük a következő egyszerű példát: táblázatot akarunk készíteni az 1 és 5 közötti számokból álló párok legnagyobb közös osztójából.
A legtömörebb megoldáshoz használjuk a számos specializált függvény egyikét:
In[3]:= Array[GCD, {5, 5}] Out[3]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Legalább három további megoldást is adhatunk:
In[4]:= Table[GCD[x, y], {x, 1, 5}, {y, 1, 5}] Out[4]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Egy APL-stílusú megközelítés:
In[5]:= Outer[GCD, Range[5], Range[5]] Out[5]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Outer a külső szorzatot számoló operátor általánosítása, Range pedig a ióta operátor megfelelője.
Egy iteratív megközelítés:
In[6]:= l1 = {}; (* üres lista az inicializálás, mivel a végén listát akarunk kapni *) For[i = 1, i <= 5, i++, l2 = {}; For[j = 1, j <= 5, j++, l2 = Append[l2, GCD[i, j]] ]; l1 = Append[l1, l2]; (* hozzáfűzzük a részlistát, azaz a sort *) ]; l1 Out[6]= {{1, 1, 1, 1, 1}, {1, 2, 1, 2, 1}, {1, 1, 3, 1, 1}, {1, 2, 1, 4, 1}, {1, 1, 1, 1, 5}}
Vegyük észre, hogy ez a megoldás lényegesen hosszabb, mint az előzők.
[szerkesztés] Egységes szerkezet, egységes kezelés
A Mathematica egyik vezérelve, hogy a benne reprezentálható objektumok szinte kivétel nélkül azonos szerkezetűek. Például a x4+1 kifejezés lényegében úgy jelenik meg, ahogyan szokásosan írjuk:
In[7]:= x^4 + 1 Out[7]= 1+x4
Ha azonban alkalmazzuk FullForm parancsot:
In[8]:= FullForm[x^4 + 1] Out[8]= Plus[1, Power[x, 4]]
világosabban látszik a belső reprezentáció alakja.
A Mathematicában minden objektum kifejezésnek vagy egy (általában többszörösen összetett) függvény helyettesítési értékének tekinthető, ezért alakja ilyen: fej[e1, e2, ...], ahol az argumnetumok további kifejezések (és ami lehetséges, hogy másképp jelenik meg, vagy másképpen lehet bevinni). Például a fenti kifejezés feje Plus, az olyan szimbólumok pedig, mint x tulajdonképpen Symbol["x"] alakúak. A listák szerkezete is ilyen, itt a fej List.
Ez az elv az alapja annak, hogy listáktól teljesen különböző szabályos kifejezéseken is elvégezhessük a listaműveleteket.
In[9]:= Expand[(Cos[x] + 2 Log[x^11])/13][[2, 1]] Out[9]= 2/13
A megfordításra is gyakran szükségünk lehet - a listák ugyanúgy módosíthatók, mint a szabályos kifejezések:
In[10]:= Map[Reverse, f[{2, x}, {3, x}, {4, x}] Out[10]= f[{x,2},{x,3},{x,4}].
[szerkesztés] Felhasználói felületek
Az alapértelmezésként használt Mathematica felhasználói felületnek számos grafikai képessége van – beleértve a képletek szép megjelenítését (prettyprinting) –, és a felhasználóval egy jegyzetfüzeten keresztül kommunikál. A mag által küldött eredményeket (beleértve a grafikaiakat és a hangzókat is) hierarchikusan szervezett cellákba teszi (hasonlóan ahhoz, ahogyan például a Maple is teszi). A jegyzetfüzet formázható, szakaszokra osztható. A program 3.0 változatától kezdve a jegyzetfüzetek is kifejezésekként vannak reprezentálva, a mag ezeket is manipulálhatja. Mivel a felhasználói felület szövegszerkesztési képességei fontosak, ezért ma már elérhető ingyenesen a MathReader program, amelyikkel a Mathematica jegyzetfüzetek - amelyek tulajdonképpen szöveges állományok - olvashatók.
Létezik néhány további felhasználói felület is, mint például a JMath vagy a mash, de a Mathematica felhasználói felület a legnépszerűbb.
[szerkesztés] Kapcsolat más alkalmazásokkal
A MathLink protokoll nemcsak a Mathematica mag és a felhasználói felület közötti, hanem a mag és tetszőleges más alkalmazások közötti kommunikációhoz is használható. A Wolfram Research cég ingyenesen terjeszt egy olyan fejlesztői programot, amely arra szolgál, hogy C programozási nyelven írt programokat összekapcsoljon a Mathematica magjával a MathLinken keresztül, valamint a J/Linket, amely hasonló, egyszerűen használható csatoló program a Java programozási nyelvhez. Ha a J/Linket használjuk, akkor megkérhetjük a Mathematica magját, hogy az végezze a számolásokat, továbbá egy Mathematica program betölthet tetszőleges Java osztályt, manipulálhat Java objektumokat, és meghívhat módszereket (metódusokat), ilymódon Mathematicából Java grafikus felhasználói interfészeket építhetünk.
[szerkesztés] Rövid bevezetés
A legfontosabb tudnivalók nagyon tömören: Kezdeti lépések a Mathematicával.
[szerkesztés] Mathematica a hálón/Weben
A Wolfram Research cég egy webMathematica nevű programot is gyárt, amelyikkel a Web szerverek meghatározott interaktív számításokat és vizualizációt végezhetnek külső, licenccel nem rendelkező felhasználók számára.
A Sloane Enciklopédia a Mathematica és a MAPLE rendszert használja a leggyakrabban a matematikai programcsomagok közül sorozatok kiszámítására; mindkét nyelv saját adatbázissal rendelkezik az Sloane Enciklopédiaban.
[szerkesztés] Lásd még
- Axiom
- GNU Octave
- IGOR Pro
- JACAL
- Magma
- Maple
- Macsyma
- Maxima
- MathCad
- MATLAB
- Mockmma
- MuPad
- Reduce
- Scilab
- YACAS
- Derive
- PARI/GP
[szerkesztés] Külső hivatkozások
- Wolfram Research
- Mathematica/index.html Mathematica (Wolfram Research)
- [1] Mathematica felhasználók moderált vitafóruma
- [2] Mathematica felhasználók cenzurázatlan vitafóruma
- Wiki-Mathematica a Mathematica felhasználók wikije
- [3] a Mathematica program egy komoly kritikusa
- [4] a Mathematica programot utánzó, nyílt forráskódú Common Lisp nyelven megírt matematikai programcsomag és programkönyvtár
- MASH, UNIX interfész a Mathematicához