| Ez a lap vagy szakasz tartalmában elavult, korszerűtlen, frissítésre szorul. Frissítsd időszerű tartalommal, munkád végeztével pedig távolítsd el ezt a sablont! | |
AMathematica széles körben használtmatematikaiprogramcsomag, megálmodójaStephen Wolfram, terjesztője az általa alapítottWolfram Research cég. A Mathematica hatékony,szakterület-specifikusprogramozási nyelv is egyben, amely akifejezés-átírásra (term-rewriting) alapozva számosprogramozási paradigma emulálására alkalmas.
Wolfram1986-ban kezdett dolgozni a programon, és1988-ban bocsátotta ki az első változatot. A Mathematicaprogramozási nyelv a kifejezés-átíráson alapul, de afunkcionális programozás, alistakezelés, amintaillesztés és aprocedurá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:
- AC nyelven írtmag (kernel) végzi a tényleges számításokat, az utasítások értelmezését.
- Az eredményeket afelhasználói felület közli. A mag és a felhasználói felület (vagy bármely máskliens, például a felhasználó által írt programok) közötti kommunikáció aMathLink 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éppenprogramkö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 aMaxima vagy aMaple, 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ás szóval a Mathematica egyvégtelen kiértékelő rendszer.
Az alábbi Mathematica utasítássorozat annak a 6×6-osmátrixnak adeterminánsát számolja ki, amelynek azi,j-edik elemei×j-vel egyenlő:
In[1]:=Det[Array[Times,{6,6}]]Out[1]=0Tehát egy ilyen mátrix determinánsa 0.
Az alábbiakban numerikusan kiszámoljuk azex =x2 + 2 egyenlet gyökét azx = −1 pontból kiindulva.
In[2]:=FindRoot[Exp[x]==x^2+2,{x,-1}]Out[2]={x->1.31907}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ároklegnagyobb közös osztójából. A beépítettGCD[] függvény visszaadja két egész szám legnagyobb közös osztóját.
AGCD[] függvényt azArray[] függvénnyel használva jutunk a legtömörebb megoldáshoz:
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}}EgyAPL-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}}AzOuter[] függvény a tenzorszorzat általánosítása,Range[] pedig aióta operátor megfelelője.
Egy procedurális megközelítés:
In[6]:=l1={};(*Inicializálás.Kezdetbenl1üreslista.*)Do[l2={};Do[l2=Append[l2,GCD[i,j]],{j,1,5}];l1=Append[l1,l2],(*l1-hezcsatoljukamárfelépítettl2részlistát*){i,1,5}]In[7]:=l1Out[7]={{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}}Ez a megoldás lényegesen hosszabb, mint az előzők.
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[8]:=x^4+1Out[8]=1+x<sup>4</sup>
Ha azonban alkalmazzuk aFullForm parancsot:
In[9]:=FullForm[x^4+1]Out[9]=Plus[1,Power[x,4]]
világosabban látszik a belső reprezentáció alakja.
AMathematicá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 argumentumok 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 fejePlus, az olyan szimbólumok pedig, mintx, tulajdonképpenSymbol["x"] alakúak. A listák szerkezete is ilyen; itt a fejList.
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[10]:=Expand[(Cos[x]+2Log[x^11])/13][[2,1]]Out[10]=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[11]:=Map[Reverse,f[{2,x},{3,x},{4,x}]Out[11]=f[{x,2},{x,3},{x,4}].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 aMaple 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.
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 MathLink-en keresztül, valamint a J/Link-et, amely hasonló, egyszerűen használható csatoló program aJava programozási nyelvhez. Ha a J/Link-et 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 Javaosztályt, manipulálhat Java objektumokat, és meghívhat módszereket (metódusokat), ily módon Mathematicából Javagrafikus felhasználói felületeket építhetünk.
AWolfram Research cég egy webMathematica nevű programot is gyárt, ami lehetővé teszi egyszerű webes interfészek fejlesztését a Mathematicához.
ASloane-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édiában.
A Google a:" filetype:nb *.* "keresőkifejezésre (nb:Mathematica notebook) kb. 32000 találatot ad, ezek közül választva, (a szoftver birtokában) és futtatva lehet gyakorlatot szerezni a Mathematica használatában.
A Wolfram Player segítségével tanulmányozhatjuk mások Mathematica szoftverrel készült munkáit.